宣布 Rustup 1.25.1

2022 年 7 月 12 日 · Rustup 工作组

Rustup 工作组宣布发布 Rustup 版本 1.25.1。 Rustup 是安装 Rust 的推荐工具,Rust 是一种编程语言,它赋予每个人构建可靠且高效软件的能力。

如果您已安装了先前版本的 Rustup,获取 Rustup 1.25.1 就像停止任何可能正在使用 Rustup 的程序(例如关闭您的 IDE)并运行一样简单

rustup self update

Rustup 还会在正常工具链更新结束时自动更新自身

rustup update

如果您还没有,您可以从我们网站上的相应页面 获取 Rustup

Rustup 1.25.1 中的新增功能

此版本的 Rustup 修复了先前版本(1.25.0)中引入的回归,该回归导致某些工作流程失败。

嵌套 Cargo 调用中使用不同工具链的回归

当您调用由 Rustup 安装的 Rust 或 Cargo 时,您不是直接运行它们。相反,您运行 Rustup "代理" 二进制文件,它们的工作是检测正确的工具链(解析 +channel CLI 参数或使用其中一个默认值)并运行它。

运行这些代理并非瞬时完成的,例如,cargo build 调用可能会执行其中几个(初始 cargo 调用加上每个依赖项的一个 rustc),从而减慢构建速度。

为了提高性能,Rustup 1.25.0 更改了代理代码,以便在缺少时设置 RUSTCRUSTDOC 环境变量,这指示 Cargo 跳过代理并直接调用在这些变量中定义的二进制文件。这在构建具有大量依赖项的板条箱时提供了性能提升。

不幸的是,此更改破坏了一些 Rustup 用户,他们做了类似的事情

  • 第一个 Cargo 调用(例如扩展、别名或集成测试)使用工具链 foo,设置指向该工具链的 RUSTCRUSTDOC 环境变量。

  • 第一个调用再次调用 Cargo,但这次使用工具链 bar(例如 cargo +bar build)。这不会设置指向 barRUSTCRUSTDOC 环境变量,因为这些变量已经存在。

  • 然后,Cargo 的第二次调用通过使用 RUSTC 环境变量并跳过代理来调用 rustc,这会导致调用 foo 工具链。先前版本的 Rustup 而是调用了代理,这将正确检测并使用 bar 工具链。

Rustup 1.25.1 通过恢复更改来修复此回归。Rustup 工作组正在 问题 #3035 中讨论在未来版本中重新引入更改以避免破坏的计划。

感谢

再次感谢所有为 Rustup 1.25.1 做出贡献的人!

  • Daniel Silverstone (kinnison)
  • Robert Collins (rbtcollins)
  • Jynn Nelson (jyn514)
  • Pietro Albini (pietroalbini)