Toolchains - The rustup book (original) (raw)
The rustup book
Many rustup
commands deal with toolchains, a single installation of the Rust compiler. rustup
supports multiple types of toolchains. The most basic track the official release channels: stable, beta and nightly; butrustup
can also install toolchains from the official archives, for alternate host platforms, and from local builds.
Standard release channel toolchain names have the following form:
<channel>[-<date>][-<host>]
<channel> = stable|beta|nightly|<versioned>[-<prerelease>]
<versioned> = <major.minor>|<major.minor.patch>
<prerelease> = beta[.<number>]
<date> = YYYY-MM-DD
<host> = <target-triple>
‘channel’ is a named release channel, a major and minor version number such as1.42
, or a fully specified version number, such as 1.42.0
. Channel names can be optionally appended with an archive date, as in nightly-2014-12-18
, in which case the toolchain is downloaded from the archive for that date.
Finally, the host may be specified as a target triple. This is most useful for installing a 32-bit compiler on a 64-bit platform, or for installing theMSVC-based toolchain on Windows. For example:
$ rustup toolchain install stable-x86_64-pc-windows-msvc
For convenience, elements of the target triple that are omitted will be inferred, so the above could be written:
$ rustup toolchain install stable-msvc
Toolchain names that don’t name a channel instead can be used to name custom toolchains.
For convenience of developers working on Rust itself, rustup
can manage local builds of the Rust toolchain. To teach rustup
about your build, run:
$ rustup toolchain link my-toolchain path/to/my/toolchain/sysroot
For example, on Ubuntu you might clone rust-lang/rust
into ~/rust
, build it, and then run:
$ rustup toolchain link my-toolchain ~/rust/build/x86_64-unknown-linux-gnu/stage2/
$ rustup default my-toolchain
Now you can name my-toolchain
as any other rustup
toolchain. Create arustup
toolchain for each of your rust-lang/rust
workspaces and test them easily with rustup run my-toolchain rustc
.
Because the rust-lang/rust
tree does not include Cargo, when cargo
is invoked for a custom toolchain and it is not available, rustup
will attempt to use cargo
from one of the release channels, preferring ‘nightly’, then ‘beta’ or ‘stable’.