rustup 工作组很高兴地宣布 rustup 1.20.0 版本的发布。Rustup 是安装 Rust 的推荐工具,Rust 是一种编程语言,它正在赋能每个人构建可靠高效的软件。
如果您已经安装了之前的 rustup 版本,升级到 rustup 1.20.0 非常简单,只需运行:
rustup self update
Rustup 也将在正常的工具链更新结束时自动更新自身。
rustup update
如果您还没有安装 rustup,您可以从我们网站上的相应页面 获取 rustup。
Rustup 1.20.0 的新特性
此版本的亮点是配置文件支持、获取最新可用 nightly 版本以及所有您需要的组件的能力,以及对 rustup doc
命令的改进。您还可以查看 变更日志,其中列出了此版本中包含的所有更改。
配置文件
之前版本的 rustup 默认会为每个工具链安装一些组件:编译器 (rustc
)、包管理器 (cargo
)、标准库 (rust-std
) 和离线文档 (rust-docs
)。虽然这种方法在本地开发软件时没有问题,但某些组件(如 rust-docs
)会减慢安装速度,原因可能是它们在构建服务器上不使用,或者在 Windows 上由于安装的文件数量过多。
为了解决这个问题,rustup 1.20.0 引入了“配置文件”的概念。它们是您在安装新的 Rust 工具链时可以选择下载的组件组。目前可用的配置文件有 minimal
、default
和 complete
。
- minimal 配置文件包含尽可能少的组件以获得可工作的编译器(
rustc
、rust-std
和cargo
)。如果您不使用本地文档,并且在 CI 中,建议在 Windows 系统上使用此组件。 - default 配置文件包含之前默认安装的所有组件 (
rustc
、rust-std
、cargo
和rust-docs
) 以及rustfmt
和clippy
。此配置文件将由 rustup 默认使用,并且是推荐用于一般用途的配置文件。 - complete 配置文件包含通过 rustup 提供的所有组件,包括
miri
和 IDE 集成工具 (rls
和rust-analysis
)。
要更改 rustup 配置文件,您可以使用 rustup set profile
命令。例如,要选择 minimal 配置文件,您可以使用:
rustup set profile minimal
首次安装 rustup 时也可以选择配置文件,可以通过选择“自定义安装”选项进行交互式选择,或者通过传递 --profile=<name>
标志进行编程方式选择。配置文件只会影响新安装的工具链:与往常一样,以后可以使用 rustup component add
安装单个组件。
安装最新的兼容 nightly 版本
虽然大多数组件都保证在 一级平台 的稳定版本中存在,但同样的保证不适用于 nightly 构建版本。通常,诸如 rustfmt
、clippy
或 rls
之类的工具在最新的 nightly 版本中会缺失。如果您依赖这些工具,这会使更新 nightly 版本变得困难,因为如果之前安装的组件丢失,rustup 将阻止升级。
从 rustup 1.20.0 开始,如果之前安装的组件在最新的 nightly 版本中丢失,rustup update
将向后回溯时间,以查找包含您所需的所有组件的最新版本。如果没有包含您所需的所有组件的新 nightly 版本,您将需要等待或删除其中的一些组件。
除了此更改之外,rustup 1.20.0 还为 rustup toolchain install
命令引入了 --component
/-c
和 --target
/-t
选项,允许您在安装工具链时添加组件和目标。如果当前 nightly 版本不包含所有请求的组件,这些标志也会搜索过去的 nightly 版本。
rustup doc
的改进
rustup doc
命令在您的浏览器中打开本地安装的文档,无需任何互联网连接。rustup 1.20.0 增强了该命令,允许您直接打开特定项的 API 文档。例如,要查看 Iterator
的文档,您可以使用:
rustup doc std::iter::Iterator
这适用于 trait、struct/enum、macro 和 module,并且可以将您带到 std
、alloc
和 core
crate。但是请注意,只有当您的工具链中安装了 rust-docs
组件时,此功能才有效。我们将随着时间的推移改进命令的 UX,因此如果您有任何想法,请务必告知我们!
致谢
感谢所有为 rustup 1.20.0 做出贡献的贡献者!
- Andy McCaffrey
- Artem Borisovskiy
- Benjamin Chen
- Daniel Silverstone
- Jon Gjengset
- Lzu Tao
- Matt Kantor
- Mitchell Hynes
- Nick Cameron
- PicoJr
- Pietro Albini