该新闻稿已发布 锈1.96.0 — Rust 编程语言的最新稳定版本。该更新已发布。 28的五月2026年它可以使用标准的 rustup update stable 命令进行安装。主要变化包括 core::range 中的新范围类型、模式匹配宏的稳定性、WebAssembly 构建行为的优化,以及 Cargo 中两个漏洞的修复。
主要变化
新的范围类型 core::range::Range*。
标准库中新增了稳定的范围类型:`core::range::Range`、`RangeFrom`、`RangeInclusive` 及其关联的迭代器。与 `core::ops` 中的旧类型不同,新的范围类型并不直接实现 `Iterator` 接口,而是通过 `IntoIterator` 函数转换为迭代器。这使得这些范围类型可以复制,例如,在将范围存储为结构体字段时非常方便。目前,类似 `0..1` 的语法仍然会创建旧的范围类型,但计划在未来的语言版本中将其迁移到新类型。新增了 assert_matches! 和 debug_assert_matches!。
新增的宏允许您检查某个值是否与给定的模式匹配。这与 `assert!(matches!(…))` 的概念类似,但如果出现错误,则会打印该值的调试表示形式,从而简化诊断。为了避免与常用的第三方库冲突,这些宏并未添加到 Prelude 中,因此必须从 core 或 std 中显式导入。更改了 WebAssembly 目标的行为。
Rust 不再将 `--allow-undefined` 参数传递给 WebAssembly 构建的链接器。未定义的符号现在会在链接过程中被视为错误,而不是自动转换为从 `env` 模块导入。这应该能更早地捕获构建错误和无效的符号名称。如果需要,可以使用 `RUSTFLAGS=-Clink-arg=--allow-undefined` 或使用 `#[link(wasm_import_module = "env")]` 显式指定导入的 wasm 模块来恢复旧的行为。货物已进行安全修复。
语言的变化。
本次发布内容包括: 一些小的修复和增强:允许将宏的 expr 元变量传递给 cfg,修正了元组表达式中永远不会进行的类型转换,修复了函数参数类型推断提示不正确的罕见情况,添加了对内联汇编中 s390x 向量寄存器的支持,并重新允许使用 ManuallyDrop 常量作为模板——这修复了 Rust 1.94.0 中引入的回归问题。编译器和平台的变化。
为 LinuxLoongArch 目标已启用链接松弛支持——这是一种链接优化,可简化代码部署后的一些转换和调用。对于 riscv64gc-unknown-fuchsia,基本配置已更新为支持向量扩展的 RVA22 配置文件。标准库更新。
新增了对遍历非零整数范围的支持。修复了 SGX 中通过 ToSocketAddr 函数延迟处理主机地址的问题,并在文档和内部约定中明确了“可读/可写”内存的定义:通用定义中已移除空指针,并且现在针对特定方法单独指定了异常情况。稳定的API。
已稳定化的接口包括 assert_matches!、debug_assert_matches! 以及 From 的实现。适用于 AssertUnwindSafe ,LazyCell和 LazyLock以及来自 core::range 的新范围类型和迭代器,包括 Range、RangeFrom、RangeToInclusive 及其迭代器。货物:依赖项和文档的变更。
现在依赖项可以同时指定 Git 仓库和备用镜像仓库:本地将使用 Git 版本,发布时将使用镜像仓库版本,类似于 crates.io 的行为。此外,Cargo 配置中也新增了对 target.'cfg(..)'.rustdocflags 的支持。Rustdoc 现在能更准确地处理文档了。
已弃用的 API 注释现在会以常规文档的形式呈现,不再像以前那样通过空格进行特殊处理:pre-wrap。此外,rustdoc 不再检查 impl 元素中 missing_doc_code_examples 的缺失值,并且方法和相关函数现在在文档侧边栏中分开显示。可能存在的不兼容性。
该版本包含一些更改,这些更改可能会出现在非标准代码中:某些 #[repr(Int)] 枚举的布局在极端情况下得到了修复,并且 Pin 中的一些无用的 unsize 转换已被禁用。 WebAssembly 构建现在会因未定义的符号而崩溃,意外稳定的 #![reexport_test_harness_main] 属性已再次被功能门控,-Csoft-float 选项已被移除,最低外部 LLVM 版本已增加到 21。对于 AVR,c_double 类型已更改为 f32,因为在这些目标平台上,C 双精度浮点数默认是 32 位的。
来源: linux.org.ru
