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。
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 文档生成器的体验进一步优化:
• 移除
#![doc(document_private_items)]。• 搜索过滤中包括属性宏及派生宏。
• 搜索过滤中包括extern crate 导入项。
• 增强 crate 级文档属性校验,例如
html_favicon_url、html_logo_url、html_playground_url、issue_tracker_base_url、html_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助力您的未来发展。
热门跟贴