Newshot

Rust 1.100.0 稳定版发布:版本号首次迈入三位数,带来多项语言与标准库更新,永不返回类型历经 10 年终于转正

Summary

IT之家 11 月 13 日消息,Rust 团队于当地时间 11 月 12 日正式发布了最新的 Rust 1.100.0 稳定版,标志着 Rust 版本号首次迈入三位数阶段。 本次更新带来了多项语言和标准库功能稳定化,同时改进了 Cargo 依赖管理、构建缓存及软件供应链安全机制。 Rust 官方介绍称,Rust 1.100 最受关注的变化之一是 never type (永不返回类型)正式稳定。该功能经过约 10 年时间以及 5 次稳定化尝试,终于进入稳定版本。 永不返回类型使用 ! 表示,代表永远不会产生返回值的计算过程。例如, return 、 break 和 std::process::exit 等终止控制流的表达式都具有这一类型。此次更新允许开发者在任意位置显式使用 ! ,包括 Result<T, !> 等类型定义。 与此同时,Rust 1.100 还将 Infallible 调整为永不返回类型 ! 的别名,使此前使用 Infallible 的 API 能够与新类型兼容。IT之家注意到,这项调整也带来了一项兼容性变化:在 Rust 2015、2018 和 2021 版本中,永不返回类型的默认回退行为从 () 改为 ! ,少数代码可能因此受到影响。 内存分配方面,新版本稳定了 Allocator API 的核心部分,允许开发者通过新稳定的 Allocator trait 定义自定义内存分配器,并将其用于部分标准库类型,目前包括 Vec 和 Box 。Rust 团队表示,这也是 Allocators 1.0 项目目标的重要进展,未来还计划将自定义分配器扩展至更多集合类型和指针类型。 标准库还新增了 core::mem::DropGuard ,用于在变量离开作用域时执行指定闭包。开发者可以利用它处理函数正常返回、错误传播以及发生 panic 等不同退出路径,从而简化资源清理和事务回滚逻辑。 此外,Rust 1.100 新增了 std::mem::conjure_zst ,为开发者在满足安全条件时创建零大小类型(ZST)提供专门接口,减少此前通过 transmute 等方式创建此类值的需求。由于不当创建零大小类型可能破坏部分 API 的安全前提,该接口被设计为不安全操作。 Cargo 包管理工具也获得多项改进。首先,Cargo 现在默认会提示开发者项目中未使用的依赖…

Original text(via IT之家)

Rust 1.100.0 稳定版发布:版本号首次迈入三位数,带来多项语言与标准库更新,永不返回类型历经 10 年终于转正

IT之家 11 月 13 日消息,Rust 团队于当地时间 11 月 12 日正式发布了最新的 Rust 1.100.0 稳定版,标志着 Rust 版本号首次迈入三位数阶段。

本次更新带来了多项语言和标准库功能稳定化,同时改进了 Cargo 依赖管理、构建缓存及软件供应链安全机制。

Rust 官方介绍称,Rust 1.100 最受关注的变化之一是 never type(永不返回类型)正式稳定。该功能经过约 10 年时间以及 5 次稳定化尝试,终于进入稳定版本。

永不返回类型使用 ! 表示,代表永远不会产生返回值的计算过程。例如,return、break 和 std::process::exit 等终止控制流的表达式都具有这一类型。此次更新允许开发者在任意位置显式使用 !,包括 Result<T, !> 等类型定义。

与此同时,Rust 1.100 还将 Infallible 调整为永不返回类型 ! 的别名,使此前使用 Infallible 的 API 能够与新类型兼容。IT之家注意到,这项调整也带来了一项兼容性变化:在 Rust 2015、2018 和 2021 版本中,永不返回类型的默认回退行为从 () 改为 !,少数代码可能因此受到影响。

内存分配方面,新版本稳定了 Allocator API 的核心部分,允许开发者通过新稳定的 Allocator trait 定义自定义内存分配器,并将其用于部分标准库类型,目前包括 Vec 和 Box。Rust 团队表示,这也是 Allocators 1.0 项目目标的重要进展,未来还计划将自定义分配器扩展至更多集合类型和指针类型。

标准库还新增了 core::mem::DropGuard,用于在变量离开作用域时执行指定闭包。开发者可以利用它处理函数正常返回、错误传播以及发生 panic 等不同退出路径,从而简化资源清理和事务回滚逻辑。

此外,Rust 1.100 新增了 std::mem::conjure_zst,为开发者在满足安全条件时创建零大小类型(ZST)提供专门接口,减少此前通过 transmute 等方式创建此类值的需求。由于不当创建零大小类型可能破坏部分 API 的安全前提,该接口被设计为不安全操作。

Cargo 包管理工具也获得多项改进。首先,Cargo 现在默认会提示开发者项目中未使用的依赖项,帮助减少不必要的编译工作。例如,当 Cargo.toml 中声明的依赖没有被相关构建目标使用时,系统会给出 unused dependency 警告。

其次,Cargo 改进了构建缓存目录的组织方式,统一应用构建配置哈希,降低不同构建配置之间发生缓存冲突的风险。官方表示,这项调整有助于减少不必要的重新编译、构建结果混淆等问题,也为未来实现跨工作区缓存去重和缓存垃圾回收等功能奠定基础。

在软件供应链安全方面,Rust 1.100 正式稳定了 Cargo 的 min-publish-age 依赖版本冷却机制。开发者可以在 .cargo/config.toml 中设置依赖包的最短发布时间间隔,例如:


        [registry]
global-min-publish-age = "3 days"
      

设置后,Cargo 在解析依赖版本时会跳过发布时间不足 3 天的新版本,以便为自动化扫描工具和社区发现恶意软件包版本留出时间。开发者也可以通过环境变量在单次更新中覆盖这一限制。

除此之外,Rust 1.100 还稳定了多项标准库 API,包括 Vec、切片与 Cow 类型之间的比较实现,以及 Box、Arc、Rc 等类型对自定义分配器的支持。

Rust 官方表示,已经通过 rustup 安装此前版本的用户,可以执行以下命令升级至 Rust 1.100.0 稳定版:


        rustup update stable
      

本次更新不仅完成了永不返回类型这一长期语言功能的稳定化,也在自定义内存分配、Cargo 依赖管理和软件供应链安全方面带来了多项改进。

  • 《Announcing Rust 1.100.0 | Rust Blog》

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家包含外链的文章均包含本声明。

The text above was extracted automatically from the source page and may miss images, tables or code blocks. The original is authoritative.

Published by IT之家
This site only summarises and aggregates; copyright stays with the original author. Headlines and summaries follow the source — where they differ, the original wins.
Read the original ↗