第 5 章 Rust 1.84.1 Toolset 中的更改
RHEL 在 1.84.1 版本中提供 Rust Toolset。自之前可用的 1.79.0 版本以来显著的改进包括:
-
新的
LazyCell
和LazyLock
类型延迟了初始化,直到第一次使用为止。它们使用每个实例中包含的初始化功能扩展了早期的OnceCell
和OnceLock
类型。 - 标准库中的新排序实现提高了运行时性能和编译时间。它们还会尝试检测比较器没有产生总顺序的情况,从而导致该 panic 而不是返回未排序的数据。
-
添加了对不透明返回类型的精确捕获。新的
use<..>
语法指定了impl Trait
返回类型中使用的通用参数和生命周期。 对
const
代码添加了许多新功能,例如:- 浮点支持
-
const
直接用于内联汇编 - 对静态的引用
- 可变参考和指针
对
unsafe
代码添加了许多新功能,例如:- 严格的来源 API
-
&raw
指针语法 - 安全寻址静态
-
在不安全的
extern
块中声明安全项目
-
Cargo 依赖项解析器现在是版本感知的。如果依赖项 crate 指定了其最低支持的 Rust 版本,则 Cargo 会在解析依赖关系图时使用此信息,而不是使用最新的兼容
semver
的 crate 版本。
兼容性备注:
-
WebAssembly 系统接口(WASI)目标从
rust-std-static-wasm32-wasi
改为rust-std-static-wasm32-wasip1
。您还可以通过在命令行上使用--target wasm32-wasip1
参数来选择 WASI 目标。如需更多信息,请参阅 对 Rust 的 WASI 目标的更改 上游博客文章。 -
拆分 panic 钩子和 panic 处理程序参数
core::panic::PanicInfo
和std::panic::PanicInfo
现在是不同的类型。 -
extern "C"
功能会在未捕获的 panics 上中止进程。使用extern "C-unwind"
来允许跨 ABI 边界的展开。
Rust Toolset 是一个滚动应用程序流,红帽只支持最新版本。如需更多信息,请参阅 Red Hat Enterprise Linux 应用程序流生命周期 文档。