Skip to content

Commit eee74c9

Browse files
authored
Merge pull request #425 from rust-lang/rustup-1.20.0
Add post about rustup 1.20.0
2 parents 171512c + 6b7c3dc commit eee74c9

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed

posts/2019-10-15-Rustup-1.20.0.md

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
---
2+
layout: post
3+
title: "Announcing Rustup 1.20.0"
4+
author: The Rustup Working Group
5+
---
6+
7+
The rustup working group is happy to announce the release of rustup version 1.20.0. [Rustup][install] is the recommended tool to install [Rust][rust], a programming language that is empowering everyone to build reliable and efficient software.
8+
9+
If you have a previous version of rustup installed, getting rustup 1.20.0 is as easy as:
10+
11+
```
12+
rustup self update
13+
```
14+
15+
Rustup will also automatically update itself at the end of a normal toolchain update:
16+
17+
```
18+
rustup update
19+
```
20+
21+
If you don't have it already, you can [get rustup][install] from the appropriate page on our website.
22+
23+
[rust]: https://www.rust-lang.org
24+
[install]: https://rustup.rs
25+
26+
## What's new in rustup 1.20.0
27+
28+
The highlights of this release are profiles support, the ability to get the latest available nightly with all the components you need, and improvements to the `rustup doc` command. You can also check out [the changelog][changelog] for a list of all the changes included in this release.
29+
30+
[changelog]: https://github.com/rust-lang/rustup.rs/blob/master/CHANGELOG.md
31+
32+
### Profiles
33+
34+
Previous versions of rustup installed a few components by default along with each toolchain: the compiler (`rustc`), the package manager (`cargo`), the standard library (`rust-std`), and offline documentation (`rust-docs`). While this approach is fine while developing software locally, some of the components (like `rust-docs`) slowed down the installation, either because they're not used on build servers, or on Windows due to the large amount of installed files.
35+
36+
To address this problem, rustup 1.20.0 introduces the concept of "profiles". They are groups of components you can choose to download while installing a new Rust toolchain. The profiles available at this time are `minimal`, `default`, and `complete`:
37+
38+
* The **minimal** profile includes as few components as possible to get a working compiler (`rustc`, `rust-std`, and `cargo`). It's recommended to use this component on Windows systems if you don't use local documentation, and in CI.
39+
* The **default** profile includes all the components previously installed by default (`rustc`, `rust-std`, `cargo`, and `rust-docs`) plus `rustfmt` and `clippy`. This profile will be used by rustup by default, and it's the one recommended for general use.
40+
* The **complete** profile includes all the components available through rustup, including `miri` and IDE integration tools (`rls` and `rust-analysis`).
41+
42+
To change the rustup profile you can use the `rustup set profile` command. For example, to select the minimal profile you can use:
43+
44+
```
45+
rustup set profile minimal
46+
```
47+
48+
It's also possible to choose the profile when installing rustup for the first time, either interactively by choosing the "Customize installation" option or programmaticaly by passing the `--profile=<name>` flag. Profiles will only affect newly installed toolchains: as usual it will be possible to install individual components later with: `rustup component add`.
49+
50+
### Installing the latest compatible nightly
51+
52+
While most components are guaranteed to be present on stable releases of [tier 1 platforms][tiers], the same guarantee doesn't apply to nightly builds. Frequently, tools such as `rustfmt`, `clippy`, or `rls` are missing in the latest nightly. If you depend on these tools, that makes updating nighties hard, as rustup will prevent the upgrade if a component you previously installed is missing.
53+
54+
Starting from rustup 1.20.0, if a component you previously installed is missing in the latest nightly, `rustup update` will walk backwards in time to find the most recent release with all the components you need. If there are no new nightlies with all the components you need you'll either need to wait or remove some of them.
55+
56+
Along with this change, rustup 1.20.0 introduces the `--component`/`-c` and `--target`/`-t` flags to the `rustup toolchain install` command, allowing you to add components and targets as the toolchain is installed. These flags will also search past nightlies if the current one does not feature all the requested components.
57+
58+
[tiers]: https://forge.rust-lang.org/release/platform-support.html
59+
60+
### Improvements to `rustup doc`
61+
62+
The `rustup doc` command opens the locally installed documentation on your browser, without any Internet connection required. rustup 1.20.0 enhances the command allowing you to open directly the API documentation of a specific item. For example to look at the documentation of [`Iterator`] you can use:
63+
64+
```
65+
rustup doc std::iter::Iterator
66+
```
67+
68+
This works for traits, structs/enums, macros, and modules, and can take you to the `std`, `alloc`, and `core` crates. Note, however, that this functionality will only work if you have the `rust-docs` component installed in your toolchain. We will be improving the command's UX over time, so if you have ideas, please do let us know!
69+
70+
[`Iterator`]: https://doc.rust-lang.org/std/iter/trait.Iterator.html
71+
72+
## Thanks
73+
74+
Thanks to all the contributors who made rustup 1.20.0 possible!
75+
76+
- Andy McCaffrey
77+
- Artem Borisovskiy
78+
- Benjamin Chen
79+
- Daniel Silverstone
80+
- Jon Gjengset
81+
- Lzu Tao
82+
- Matt Kantor
83+
- Mitchell Hynes
84+
- Nick Cameron
85+
- PicoJr
86+
- Pietro Albini

0 commit comments

Comments
 (0)