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 有什么新功能
此版本的主要亮点是支持配置文件(profiles),能够获取包含所需所有组件的最新可用 nightly 版本,以及对 rustup doc 命令的改进。您还可以查看变更日志,了解此版本中包含的所有更改列表。
配置文件(Profiles)
先前版本的 rustup 默认随每个工具链安装一些组件:编译器(rustc)、包管理器(cargo)、标准库(rust-std)和离线文档(rust-docs)。虽然这种方法在本地开发软件时很好,但有些组件(如 rust-docs)会减慢安装速度,要么是因为它们在构建服务器上不使用,要么是因为在 Windows 上安装的文件数量庞大。
为了解决这个问题,rustup 1.20.0 引入了“配置文件”(profiles)的概念。它们是您在安装新的 Rust 工具链时可以选择下载的组件组。目前可用的配置文件有 minimal、default 和 complete。
- minimal 配置文件包含尽可能少的组件,以获得一个可工作的编译器(
rustc、rust-std和cargo)。如果您不使用本地文档,建议在 Windows 系统和 CI 中使用此组件。 - 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 时也可以选择配置文件,可以通过选择“Customize installation”(自定义安装)选项进行交互式选择,或者通过传递 --profile=<name> 标志以编程方式选择。配置文件只会影响新安装的工具链:像往常一样,以后可以通过 rustup component add 添加单个组件。
安装最新的兼容 nightly 版本
虽然大多数组件保证存在于第一层平台的稳定版本上,但这种保证不适用于 nightly 版本。通常,最新的 nightly 版本会缺少 rustfmt、clippy 或 rls 等工具。如果您依赖这些工具,那么更新 nightly 版本就会很困难,因为如果之前安装的某个组件丢失,rustup 会阻止升级。
从 rustup 1.20.0 开始,如果最新 nightly 版本缺少您之前安装的某个组件,rustup update 将会回溯查找包含您所需所有组件的最新版本。如果没有包含您所需所有组件的新 nightly 版本,您将需要等待或移除其中一些组件。
随着这一变化,rustup 1.20.0 为 rustup toolchain install 命令引入了 --component/-c 和 --target/-t 选项,允许您在安装工具链时添加组件和目标(target)。如果当前 nightly 版本不包含所有请求的组件,这些标志也会搜索之前的 nightly 版本。
对 rustup doc 的改进
rustup doc 命令可以在浏览器中打开本地安装的文档,无需互联网连接。rustup 1.20.0 增强了此命令,允许您直接打开特定项的 API 文档。例如,要查看Iterator 的文档,您可以使用:
rustup doc std::iter::Iterator
这适用于 trait、结构体/枚举、宏和模块,并且可以带您到 std、alloc 和 core crate 的文档。但请注意,此功能仅在您的工具链中安装了 rust-docs 组件时才有效。我们将随着时间的推移改进此命令的用户体验,因此如果您有想法,请务必告诉我们!
致谢
感谢所有为 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