Rust 1.86.0 稳定版发布


Rust 团队发布了 Rust 1.86.0 版本,通过rustup update stable 可更新。

该版本带来多项重要更新:

  • 支持 trait 向上转型
  • HashMap 和切片可同时获取多个元素的可变引用
  • 安全函数可使用 #[target_feature] 属性
  • 新增指针非空调试断言
  • missing_abi lint 默认警告
  • 1.87.0 版本将弃用 i586-pc-windows-msvc 目标平台
  • 一批 API 进入稳定

  1. 新特性

    • trait 向上转型:实现了 trait 对象的向上转型,若 trait 存在上级 trait,可将该 trait 对象的引用强制转换为上级 trait 对象的引用,如 Arc<dyn Trait> -> Arc<dyn Supertrait> 等。此前需在 trait 内定义 upcast 方法实现,且仅适用于一种引用 / 指针类型,现在不再需要。使用 Any trait 时,该特性可将 trait 对象向上转型为 dyn Any,调用 Any 的 downcast 方法 。

    • HashMap和切片支持多元素可变索引:标准库提供 get_disjoint_mut 辅助函数,切片和 HashMap 可同时获取多个元素的可变引用,解决了借用检查器阻止重复调用 get_mut 方法获取的引用同时使用的问题。

    • 安全函数使用 #[target_feature] 属性:稳定了 target_feature_11 特性,允许安全函数使用 #[target_feature] 属性。标记该属性的安全函数,只能在同样标记了该属性的函数中安全调用;在未标记的函数中调用时,需在 unsafe 块内进行,且调用者要确保目标特性可用。

  2. 增强与变更

    • 指针非空调试断言:编译器会在非零大小读写和指针重新借用为引用时,插入指针非空的调试断言。如 let _x = *std::ptr::null::<u8>(); 在启用调试断言时会触发非展开式 panic。该断言仅在启用调试断言时生效,不能依赖其保证程序正确性。

    • missing_abi lint 默认警告:在 extern 块和函数中省略 ABI(如extern {}extern fn)会触发 missing_abi lint 警告。建议显式指定 "C" ABI(如extern "C" {}extern "C" fn)。

  3. 目标平台变更:1.87.0 版本将移除 tier-2 目标平台 i586-pc-windows-msvc,因其与 i686-pc-windows-msvc的区别在于不要求 SSE2 指令支持,但 Windows 10(除win7 目标外所有 windows 目标的最低要求操作系统版本)本身需要 SSE2 指令。使用该目标平台的用户应在 1.87.0 发布前迁移至 i686-pc-windows-msvc

  4. 稳定的 API

    • 新稳定 API:包括 {float}::next_down{float}::next_up[T]::get_disjoint_mut 等多个 API。

    • const 上下文稳定的 API:如 hint::black_boxio::Cursor::get_mut 等 API 在 const 上下文中稳定。

原文:https://blog.rust-lang.org/2025/04/03/Rust-1.86.0.html


相關推薦

2023-07-15

Rust 1.71.0 稳定版已发布。 重要变化 C-unwindABI 正式稳定(同时包括其他-unwind后缀的 ABI 变体1):该特性对于跨 ABI 边界时,异常处理的行为更安全 调试器增加可视化属性#[debug_visualizer(natvis_file = "...")]和#[debug_visualizer(gdb_scrip

2023-04-22

 Rust 1.69.0 稳定版已发布。 1.69.0 稳定版中有什么 Cargo 建议自动修复警告 Rust 1.29.0 添加了 cargo fix 子命令来自动修复一些简单的编译器警告。从那时起,可以自动修复的警告数量继续稳步增加。此外,还增加了对自动修复一

2022-07-02

Rust 1.62.0 稳定版现已发布,具体更新内容如下: cargo add 现在可以使用cargo add直接从命令行添加新的依赖项。该命令支持指定功能和版本。它也可以用来修改现有的依赖项。 例如: cargo add log cargo add serde --features derive cargo add

2022-02-28

Rust 1.59.0 稳定版已正式发布,新版本最值得关注的特性是支持在代码中内联汇编 (Inline assembly),其他变化包括:引入解构式赋值、默认关闭增量编译,以及 Const 泛型参数支持设置默认值等。 内联汇编 (Inline assembly) 此项特

2024-10-09

Tauri 2.0 稳定版已正式发布。 Tauri 是一个桌面 UI 框架,可让开发者使用每个平台的 Webview 技术栈为所有主要桌面操作系统构建应用程序,目前支持 Windows/macOS/Linux 等平台。开发者通过 Tauri 几乎可以使用任何编译为 HTML、JS 和 CSS

2022-05-20

4 功能一起使用 X86 #[target_feature = "adx"] 现已到达稳定状态 Libraries ManuallyDrop<T>现在被记录为具有相同的布局T #[ignore = "…"] 运行测试时会打印信息 Consistently始终将 Windows 上缺少的 stdio 句柄显示为 NULL 句

2023-08-31

PF 到底是可观测领域的神器 or 鸡肋? sudo-rs 发布了首个稳定版:0.2.0。获取: sudo tar -C /usr/local -xvf sudo-0.2.0.tar.gz 下载地址:https://github.com/memorysafety/sudo-rs/releases/tag/v0.2.0 sudo-rs 是互联网安全研究小组 (ISRG) 发起的 Prossim

2023-02-10

历经三年多的开发,Meilisearch 1.0 首个完全稳定版已正式发布,可用于生产环境且向前兼容。 Meilisearch 是 Rust 实现的高性能开源搜索引擎,支持方便地集成到任何网站或应用程序,支持自托管 (self-hosting),可作为 Algolia 和 Elasti

2022-11-04

Rust 1.65.0 稳定版已发布。此版本包含多项重要的语法变更,以及编辑器和标准库方面的改动。值得关注的是,Rust 1.65 现在还启用了 MIR 内联来优化编译,为 crate 提供了 3-10% 的编译时间改进。 语言特性 为枚举类型使用#[non_exh

2024-08-18

并于 2025 年 1 月 3 日发布测试版 Rust v1.85,2 月 20 日发布稳定版 Rust v1.85。 使 Async Rust 体验更接近 sync Rust。计划提供几个异步构建块功能,其中最值得注意的是对 async closures 和Send bounds 的支持。这是将 async Rust

2025-04-15

搜索 (geosearch) 支持多租户 (multi-tenancy) Meilisearch 最新稳定版 1.4 已于今天发布,此版本引入了两个重要的实验性功能:向量存储和分数详情,并包含多项性能改进和错误修复。 新功能 (实验性) 向量存储 (Vector Store):

2023-06-03

于从 crates.io 读取索引。这个功能之前已经在 Rust 1.68.0 中稳定下来,但仍然需要配置才能在 crates.io 中使用。原计划就是在 1.70.0 中默认启用该功能的,现在如期实现。 当你从 crates.io 的索引中获取信息时,你应该看到性能的大

2022-09-23

Rust 团队于今天发布了 Rust 1.64.0 新版本,1.64.0 稳定版中的主要更新内容如下: 用 IntoFuture 增强 .await Rust 1.64 稳定了 IntoFuture 特性。IntoFuture 是一个类似于 IntoIterator 的特性,但 IntoFuture 不支持 for ... in ... 循环,而是改变了 .awai

2024-01-07

情很有可能会发生。   二、Linux 6.12 将是下一个长期稳定版内核,预计 2024 年 12 月 1 日发布(除非 Linus 拒绝在美国感恩节假期后立即发布,这种情况下将在一周后推出)。   三、首批用户可见的 Rust 代码最早可能在 Li