Rust 1.91.0 发布
2025 年 10 月 30 日 · Rust 发布团队
Rust 团队很高兴宣布 Rust 1.91.0 新版本的发布。Rust 是一种编程语言,旨在让每个人都能构建可靠且高效的软件。
如果您已通过 rustup 安装了旧版 Rust,可以通过以下命令获取 1.91.0 版本:
$ rustup update stable
如果尚未安装 rustup,可以从我们网站的相应页面获取,并查看 1.91.0 的详细发布说明。
如果您希望通过测试未来版本来帮助我们,可以考虑在本地更新以使用 beta 频道(rustup default beta)或 nightly 频道(rustup default nightly)。请报告您可能遇到的任何错误!
1.91.0 稳定版中的新内容
aarch64-pc-windows-msvc 现为 Tier 1 平台
Rust 编译器支持多种目标平台,但 Rust 团队无法为所有平台提供相同级别的支持。为了明确标记每个平台的支持程度,我们采用了分级系统:
- Tier 3 目标:编译器在技术上支持,但我们不检查其代码是否构建或通过测试,并且不提供预构建二进制文件作为发布的一部分。
- Tier 2 目标:保证能够构建,我们提供预构建二进制文件,但不在这些平台上执行测试套件:生成的二进制文件可能无法工作或可能存在错误。
- Tier 1 目标:提供最高级别的支持保证,我们在编译器每次合并更改时在这些平台上运行完整的测试套件。同时提供预构建二进制文件。
Rust 1.91.0 将 aarch64-pc-windows-msvc 目标提升为 Tier 1 支持,为运行 Windows 的 64 位 ARM 系统用户带来我们的最高保证。
新增针对局部变量悬空原始指针的 lint 检查
虽然 Rust 的借用检查器防止返回悬空引用,但它不跟踪原始指针。在此版本中,我们添加了一个默认警告的 lint,用于检查从函数返回的局部变量原始指针。例如,类似以下的代码:
fn f() -> *const u8 {let x = 0;&x
}
现在会产生 lint 警告:
warning: a dangling pointer will be produced because the local variable `x` will be dropped--> src/lib.rs:3:5|
1 | fn f() -> *const u8 {| --------- return type of the function is `*const u8`
2 | let x = 0;| - `x` is part the function and will be dropped at the end of the function
3 | &x| ^^|= note: pointers do not have a lifetime; after returning, the `u8` will be deallocatedat the end of the function because nothing is referencing it as far as the type system isconcerned= note: `#[warn(dangling_pointers_from_locals)]` on by default
请注意,上述代码本身并不不安全,因为它没有执行任何危险操作。只有在函数返回后解引用原始指针才是不安全的。我们预计未来的 Rust 版本将增加更多功能,帮助开发者安全地与原始指针以及更广泛的不安全代码进行交互。
稳定的 API
Path::file_prefixAtomicPtr::fetch_ptr_addAtomicPtr::fetch_ptr_subAtomicPtr::fetch_byte_addAtomicPtr::fetch_byte_subAtomicPtr::fetch_orAtomicPtr::fetch_andAtomicPtr::fetch_xor{integer}::strict_add{integer}::strict_sub{integer}::strict_mul{integer}::strict_div{integer}::strict_div_euclid{integer}::strict_rem{integer}::strict_rem_euclid{integer}::strict_neg{integer}::strict_shl{integer}::strict_shr{integer}::strict_powi{N}::strict_add_unsignedi{N}::strict_sub_unsignedi{N}::strict_absu{N}::strict_add_signedu{N}::strict_sub_signedPanicHookInfo::payload_as_strcore::iter::chainu{N}::checked_signed_diffcore::array::repeatPathBuf::add_extensionPathBuf::with_added_extensionDuration::from_minsDuration::from_hoursimpl PartialEq<str> for PathBufimpl PartialEq<String> for PathBufimpl PartialEq<str> for Pathimpl PartialEq<String> for Pathimpl PartialEq<PathBuf> for Stringimpl PartialEq<Path> for Stringimpl PartialEq<PathBuf> for strimpl PartialEq<Path> for strIpv4Addr::from_octetsIpv6Addr::from_octetsIpv6Addr::from_segmentsimpl<T> Default for Pin<Box<T>> where Box<T>: Default, T: ?Sizedimpl<T> Default for Pin<Rc<T>> where Rc<T>: Default, T: ?Sizedimpl<T> Default for Pin<Arc<T>> where Arc<T>: Default, T: ?SizedCell::as_array_of_cellsu{N}::carrying_addu{N}::borrowing_subu{N}::carrying_mulu{N}::carrying_mul_addBTreeMap::extract_ifBTreeSet::extract_ifimpl Debug for windows::ffi::EncodeWide<'_>str::ceil_char_boundarystr::floor_char_boundaryimpl Sum for Saturating<u{N}>impl Sum<&Self> for Saturating<u{N}>impl Product for Saturating<u{N}>impl Product<&Self> for Saturating<u{N}>
以下先前稳定的 API 现在在常量上下文中也稳定:
<[T; N]>::each_ref<[T; N]>::each_mutOsString::newPathBuf::newTypeId::ofptr::with_exposed_provenanceptr::with_exposed_provenance_mut
平台支持
- 将
aarch64-pc-windows-msvc提升为 Tier 1。 - 将
aarch64-pc-windows-gnullvm和x86_64-pc-windows-gnullvm提升为 Tier 2,并提供主机工具。 - 注意:llvm-tools 和 MSI 安装程序目前缺失,但将在未来版本中添加。
有关 Rust 分级平台支持的更多信息,请参阅 Rust 的平台支持页面。
其他更改
查看 Rust、Cargo 和 Clippy 中的所有更改。
1.91.0 的贡献者
许多人共同创建了 Rust 1.91.0。没有大家的共同努力,我们无法完成这项工作。谢谢!
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码

公众号二维码
