打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

2026年1月22日,Rust 官方正式发布Rust 1.93.0。本次更新带来了语言层面的多项稳定特性、编译器优化、平台支持拓展、标准库改进以及 Cargo 和 Rustdoc 的实用增强。这一版本在性能、安全性和系统兼容性方面都有显著提升。以下为详细版本更新内容解析。

一、语言特性更新

Rust 1.93.0 对语言层面进行了多项稳定化与行为修正:

  • • 稳定s390x向量相关目标特性以及is_s390x_feature_detected!宏。

  • • 支持系统 ABI 下的C 风格可变参数函数声明稳定化

  • • 当使用某些关键字作为cfg 条件时,编译器会明确报错。

  • asm_cfg特性正式稳定。

  • • 在常量求值(const-evaluation)期间支持按字节复制指针。

  • LUB 强制转换(Least Upper Bound coercions)现在能够正确处理函数项类型及安全性不同的函数。

  • • 允许包含可变引用静态项的 const 项(非常危险,但并非总是未定义行为)。

  • • 新增两个警告默认开启的 lint:

    • const_item_interior_mutations:警告对具有内部可变性的 const 项进行变更操作。

    • function_casts_as_integer:警告将函数指针强制转为整数类型的操作。

二、编译器优化
  • • 编译器稳定化了-Cjump-tables=bool参数(之前为 -Zno-jump-tables)。
    该项影响函数跳转表生成方式,助力优化调度与体积。

三、平台支持扩展
  • • 新增riscv64a23-unknown-linux-gnu平台,晋升为Tier 2(不包含宿主工具)。
    关于 Tier 分级的更多信息可参考 Rust 平台支持页面。

四、标准库关键更新

本次标准库在安全与性能之间进行了平衡调整,核心变化如下:

  • • 停止在内部对Copytrait 使用特化(specialization),因为在依赖生命周期的Copy实现中会导致不安全行为。这可能造成性能回退,部分标准库 API 会调用Clone::clone而非位复制。

  • • 允许全局分配器(global allocator)使用线程局部存储以及std::thread::current()

  • • 修复 BTree::append 行为,确保当附加键已存在时,不会更新已有键。

  • • 不再要求T: RefUnwindSafe对应vec::IntoIter : UnwindSafe

五、稳定化的 API

Rust 1.93.0 稳定了一批新 API,进一步增强底层能力与安全控制:

  • <[MaybeUninit ]>::assume_init_drop

  • <[MaybeUninit ]>::assume_init_ref

  • <[MaybeUninit ]>::assume_init_mut

  • <[MaybeUninit ]>::write_copy_of_slice

  • <[MaybeUninit ]>::write_clone_of_slice

  • String::into_raw_parts

  • Vec::into_raw_parts

  • ::unchecked_neg

  • ::unchecked_shl

  • ::unchecked_shr

  • ::unchecked_shl

  • ::unchecked_shr

  • <[T]>::as_array

  • <[T]>::as_mut_array

  • <*const [T]>::as_array

  • <*mut [T]>::as_mut_array

  • VecDeque::pop_front_if

  • VecDeque::pop_back_if

  • Duration::from_nanos_u128

  • char::MAX_LEN_UTF8

  • char::MAX_LEN_UTF16

  • std::fmt::from_fn

  • std::fmt::FromFn

这些新增稳定接口提升了内存控制、数值操作及格式化能力。

六、Cargo 更新

本次 Cargo 工具也有不少实用增强:

  • • 根据编译 profile,在构建脚本中启用CARGO_CFG_DEBUG_ASSERTIONS

  • • 在cargo tree命令中,支持长形式的--format 变量

  • • 新增--workspace参数支持到cargo clean命令。

七、Rustdoc 改进

Rustdoc 文档生成器的体验进一步优化:

  • • 移除#![doc(document_private_items)]

  • • 搜索过滤中包括属性宏及派生宏

  • • 搜索过滤中包括extern crate 导入项

  • • 增强 crate 级文档属性校验,例如html_favicon_urlhtml_logo_urlhtml_playground_urlissue_tracker_base_urlhtml_no_source
    如果这些属性值缺失、异常或类型错误,将触发默认拒绝(deny-by-default)lint ——rustdoc::invalid_doc_attributes

八、兼容性与行为变更

本次更新还带来多项兼容性提示及未来预警:

  • • 新增pin_v2到内置属性命名空间。

  • • 捆绑的 musl 更新至1.2.5

  • • 在Emscripten环境中,panic=unwind 时的异常 ABI 由 JS 异常改为wasm 异常处理 ABI。链接 C/C++ 对象时需传入-fwasm-exceptions
    在 nightly Rust 上,可通过-Zwasm-emscripten-eh=false -Zbuild-std获取旧行为,但未来会移除。

  • • 当在无意义的地方(如 trait 方法或类型)使用#[test]属性时,编译器现将报错,不再忽略;同时 rustdoc 生成也会出错。

  • • Cargo 在更多场景下设置CARGO_CFG_DEBUG_ASSERTIONS环境变量,这可能导致依赖static-init 1.0.1–1.0.3的 crate 编译失败。

  • • 在offset_of!宏中,用户自定义类型将检查是否结构良好。

  • • 执行cargo publish时,当build.build-dir未设置时,不再生成可访问的.crate文件工件。

  • • lintderef_nullptr从警告默认(warn-by-default)提升为默认拒绝(deny-by-default)。

  • • 新增未来兼容性警告:

    • • 针对函数参数中未模式绑定(pattern)的 ... 参数,除 extern 块之外提醒。

    • • 针对repr(C)枚举的 discriminant 值不适配 c_int/c_uint。

    • • 针对repr(transparent)的行为忽略repr(C)类型警告。

九、总结

代码地址:github.com/rust-lang/rust

Rust 1.93.0 是一次稳健且深度的更新版本。从语言细节到标准库安全修正、再到平台支持与工具链增强,都体现了 Rust 一贯的“安全、并发、性能”核心理念。无论是编译器优化、Cargo 构建体验,还是 Rustdoc 文档一致性,都在此版本迎来全面进步。

Rust 1.93.0 的发布标志着 Rust 在系统级语言领域持续迈进,为开发者提供更强的安全保证和更高效的编译环境。

结语:
Rust 1.93.0 不仅是一个版本号,更是语言设计成熟度的再一次体现。开发者可立即升级体验最新稳定特性,享受更强的系统安全与开发效率。

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。