Cargo 依赖版本选择改进
稳定了最小支持 Rust 版本(MSRV)感知的解析器,该解析器会优先选择与项目声明的 MSRV 兼容的依赖版本,减少了维护者支持旧工具链的工作量,无需手动为每个依赖选择旧版本。可以通过.cargo/config.toml
文件启用 MSRV 感知解析器:
收起
toml
[resolver]
incompatible-rust-versions="fallback"
新 trait 求解器的迁移
Rust 编译器正在迁移到新的 trait 求解器实现。在 1.84.0 中,新求解器用于检查 trait 实现的连贯性,负责确保在考虑其他 crate 中尚未编写或不可见代码的情况下,最多只有一个 trait 实现适用于给定类型。此更改修复了旧实现的一些理论正确性问题,可能会导致以前未报告的 “trait 的冲突实现……” 错误,但受影响的模式非常罕见。
严格来源 API
Rust 1.84.0 引入了一组新的 API,可以在许多情况下替代整数指针转换的使用,从而避免此类转换固有的歧义,使得代码更易于推理和分析,也有利于 Miri 等工具和 Cheri 等架构检测和诊断指针滥用。
稳定化的 API
稳定了多个 API,包括:
ipv6addr::is_unique_local
ipv6addr::is_unicast_link_local
core::ptr::with_exposed_provenance
core::ptr::with_exposed_provenance_mut
<ptr>::addr
<ptr>::expose_provenance
<ptr>::with_addr
<ptr>::map_addr
<int>::isqrt
<int>::checked_isqrt
<uint>::isqrt
nonzero::isqrt
core::ptr::without_provenance
core::ptr::without_provenance_mut
core::ptr::dangling
core::ptr::dangling_mut
pin::as_deref_mut
这些 API 现在在常量上下文中也是稳定的。
其他变化
- 允许在
#(forbid)
中使用#(deny)
并将其作为无操作指令。 - 在 Windows 上,在所有情况下都支持
/
作为include!
。 - 添加
--printhost-tuple
参数来打印主机目标元组。 - 添加
wasm32v1-none
目标支持,目前它属于 tier2 级别。 - 移除了
wasm32-wasi
目标,因为该目标现在名为wasm32-wasip1
。
如果你已经通过 rustup 安装了 Rust,可以通过以下命令升级到 1.84.0 版本:
收起
bash
rustup update stable
如果你还没有安装 rustup,可以从Rust 官方网站获取,并查看 1.84.0 的详细发布说明。