作者 | Tim Anderson
译者 | 平川
策划 | Tina
本文最初发布于 DEV CLASS。
Rust 团队发布了 1.84.0 稳定版,带来下一代 trait 求解器和依赖版本检查改进方面的进展。不过,如果开发人员尚未进行必要的更新,那么 WebAssembly 系统接口(WASI)目标名称的变更可能会破坏工具链。
新版 Rust 主要有三个特性。首先是 Cargo 解析器可以感知支持的最小 Rust 版本(MRSV)。虽然该特性在默认情况下并未启用,但现在已经稳定。Cargo 是 Rust 官方的软件包管理器。如果升级后的软件包需要新一些的 Rust 版本,那么 Cargo 现在可以自动忽略它。在软件包清单中,MSRV 使用了可选的 rust-version 字段。
接下来是下一代 trait 求解器的进展。新的 trait 求解器是 Rust 类型系统的一部分,用于确定类型是否以及如何实现 trait (类似于其他语言中的接口)。按照 Rust 类型团队的说法,新求解器“应能修复许多长期存在的(稳定性)Bug,赋能未来类型系统的改进,并改善编译时间”。新求解器尚未完成,但现在将用于一致性检查,确保任何给定类型的 trait 最多只有一种实现。
第三,Rust 正在添加用于对指针出处进行严格检查的 API,尤其是在将指针转换为整数和返回整数时。该团队解释说,这个问题本身就存在模糊性。新 API 将有利于 Miri 等工具检测 Rust 代码中的未定义行为,也有利于证明 Rust 代码的形式正确性。
一些开发人员在升级 Rust 时会收到错误信息,因为目标 wasm32-wasi 已不再可用。这是因为该目标在 Rust 1.71 中已更名为 was32-wasip1 [zero point 1]。解决方法是升级前进行以下操作 :
rustup target remove wasm32-wasi
这背后的故事是,还有一个 wasm-wasip2 [zero point 2] 目标,与 WASI(WebAssembly 系统接口)的里程碑版本相匹配。将初始目标命名为 wasm32-wasi(当时它还是早期预览版)是个错误,这掩盖了它还是一个正在开发中的接口这一事实。去年 4 月,开发人员收到了有关更改的预警,并有 8 个月的过渡期在项目中改用新的目标名称。不可避免的是,有些开发者还没有这样做,wasm32-wasi 的消失会造成一些麻烦,不过这也可能促使开发者在可能的情况下转向更新的 warm-wasip2 目标。
4000520066 欢迎批评指正
All Rights Reserved 新浪公司 版权所有