Rust 1.90.0 发布:LLD 默认链接器与工作区发布支持

Rust 1.90.0 正式发布,引入多项重要更新:LLD 成为 x86_64-unknown-linux-gnu 默认链接器提升编译性能,Cargo 新增工作区发布功能,x86_64-apple-darwin 目标降级为 Tier 2,并稳定了多个 API 及常量上下文支持。

宣布 Rust 1.90.0

2025年9月18日 · Rust 发布团队

Rust 团队很高兴宣布新版本 Rust 1.90.0 的发布。Rust 是一种编程语言,旨在让每个人都能构建可靠且高效的软件。

如果您已通过 rustup 安装了旧版 Rust,可以通过以下命令获取 1.90.0 版本:

1
$ rustup update stable

如果尚未安装 rustup,可以从我们网站的相应页面获取,并查看 1.90.0 的详细发布说明。

如果您想通过测试未来版本来帮助我们,可以考虑在本地更新以使用 beta 频道(rustup default beta)或 nightly 频道(rustup default nightly)。请报告您可能遇到的任何错误!

1.90.0 稳定版中的新内容

LLD 现为 x86_64-unknown-linux-gnu 的默认链接器

x86_64-unknown-linux-gnu 目标现在将默认使用 LLD 链接器来链接 Rust crate。与默认的 Linux 链接器(BFD)相比,这应能提高链接性能,特别是对于大型二进制文件、包含大量调试信息的二进制文件以及增量重建。

在绝大多数情况下,LLD 应与 BFD 向后兼容,您除了减少编译时间外不应看到任何差异。但是,如果您遇到任何新的链接器问题,始终可以使用 -C linker-features=-lld 编译器标志选择退出。可以通过将其添加到通常的 RUSTFLAGS 环境变量中,或添加到项目的 .cargo/config.toml 配置文件中,如下所示:

1
2
[target.x86_64-unknown-linux-gnu]
rustflags = ["-Clinker-features=-lld"]

如果您遇到 LLD 链接器的任何问题,请告知我们。您可以在此处阅读有关切换到 LLD、一些基准测试数据以及选择退出机制的更多信息。

Cargo 新增对工作区发布的本机支持

现在支持 cargo publish --workspace,自动按正确顺序(遵循它们之间的任何依赖关系)发布工作区中的所有 crate。

长期以来,这可以通过外部工具或手动排序单个发布来实现,但此功能现已纳入 Cargo 本身。本机集成允许 Cargo 的发布验证在完整待发布 crate 集上运行构建,就像它们已发布一样,包括在试运行期间。请注意,发布仍然不是原子的——网络错误或服务器端故障仍可能导致工作区部分发布。

将 x86_64-apple-darwin 降级为 Tier 2 并保留主机工具

GitHub 将很快停止为公共仓库提供免费的 macOS x86_64 运行器。Apple 也宣布了停止支持 x86_64 架构的计划。

根据这些变化,从 Rust 1.90 开始,我们将 x86_64-apple-darwin 目标从 Tier 1(含主机工具)降级为 Tier 2(含主机工具)。这意味着该目标(包括 rustc 和 cargo 等工具)将保证能够构建,但不保证通过我们的自动化测试套件。

对于用户而言,此更改不会立即造成影响。在该目标保持 Tier 2 期间,Rust 项目仍将分发标准库和编译器的构建,供通过 rustup 或其他安装方法使用。随着时间的推移,该目标测试覆盖率的减少很可能导致问题出现或失去兼容性,且不再另行公告。

稳定的 API

  • u{n}::checked_sub_signed
  • u{n}::overflowing_sub_signed
  • u{n}::saturating_sub_signed
  • u{n}::wrapping_sub_signed
  • impl Copy for IntErrorKind
  • impl Hash for IntErrorKind
  • impl PartialEq<&CStr> for CStr
  • impl PartialEq<CString> for CStr
  • impl PartialEq<Cow<CStr>> for CStr
  • impl PartialEq<&CStr> for CString
  • impl PartialEq<CStr> for CString
  • impl PartialEq<Cow<CStr>> for CString
  • impl PartialEq<&CStr> for Cow<CStr>
  • impl PartialEq<CStr> for Cow<CStr>
  • impl PartialEq<CString> for Cow<CStr>

这些先前稳定的 API 现在在常量上下文中稳定:

  • <[T]>::reverse
  • f32::floor
  • f32::ceil
  • f32::trunc
  • f32::fract
  • f32::round
  • f32::round_ties_even
  • f64::floor
  • f64::ceil
  • f64::trunc
  • f64::fract
  • f64::round
  • f64::round_ties_even

平台支持

  • x86_64-apple-darwin 现在是一个 Tier 2 目标

有关 Rust 分层平台支持的更多信息,请参阅 Rust 的平台支持页面。

其他更改

查看 Rust、Cargo 和 Clippy 中的所有更改。

1.90.0 的贡献者

许多人共同创建了 Rust 1.90.0。没有大家,我们无法完成这项工作。谢谢!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计