Rustup Changelog

What's new in Rustup 1.27.1

Apr 23, 2024
  • Prebuilt Rustup binaries should be working on older macOS versions again.
  • rustup-init will no longer fail when fish is installed but ~/.config/fish/conf.d hasn't been created.
  • Regressions regarding symlinked RUSTUP_HOME/(toolchains|downloads|tmp) have been addressed.

New in Rustup 1.27.0 (Feb 19, 2024)

  • Added:
  • Add basic support for fish shell pr#3108
  • Add the RUSTUP_TERM_COLOR environment variable to force the use of colored output pr#3435
  • Improve rustup-init.sh's compatibility with ksh and zsh pr#3475
  • Add a warning when running under Rosetta 2 pr#3068
  • Add browser detection for RISC-V 64 platform pr#3642
  • Add a warning when removing the last/host target for a toolchain pr#3637
  • Changed:
  • Upgrade clap to v4 pr#3444
  • Fix incorrect platform detection on macOS aarch64 due to Rosetta 2 pr#3438
  • Fix incorrect platform detection on 32-bit Linux userland with a 64-bit kernel pr#3488 pr#3490
  • Improve Windows system32 DLL loading mechanism pr#3493
  • Improve suggestions about missing components pr#3453
  • Fix handling of toolchain names with special characters pr#3518
  • Fix panic in component list --toolchain stable pr#3548
  • Rename llvm-tools-preview component to llvm-tools pr#3578
  • Bump a lot of dependencies to their latest versions pr#renovate-bot

New in Rustup 1.26.0 (Apr 25, 2023)

  • The headlines for this release are:
  • Add rust-analyzer as a proxy of rustup. Now you can call rust-analyzer and it will be proxied to the rust-analyzer component for the current toolchain.
  • Bump the clap dependency from 2.x to 3.x. It's a major version bump, so there are some help text changes, but the command line interface is unchanged.
  • Remove experimental GPG signature validation and the rustup show keys command. Due to its experimental status, validating the integrity of downloaded binaries did not rely on it, and there was no option to abort the installation if a signature mismatch happened. Multiple problems with its implementation were discovered in the recent months, which led to the decision to remove the experimental code. The team is working on the design of a new signature validation scheme, which will be implemented in the future.
  • Added:
  • Added rust-analyzer as a proxy of rustup pr#3022
  • Added DisplayVersion for rustup to registry on Windows pr#3047
  • Build Rustup for Windows arm64 on stable pr#3232
  • Added up as an alias of the update command pr#3044
  • Added details of each setting in the toolchain file in the documentation pr#3067
  • Added automatic resume flag when retrying download with curl pr#3089
  • Added UI tests for rustup pr#3209
  • Changed:
  • Bump the clap dependency from 2.x to 3.x pr#3064
  • Remove GPG signature support pr#3277
  • Don't add toolchain bin to PATH on Windows pr#3178
  • Remove use of hard links to symlinks on macOS pr#3137
  • Avoid deduplicate PATH entries added during build pr#2848
  • The toolchain name cannot be left blank pr#2993
  • Correctly propagate subshell failures in rustup-init.sh pr#3012
  • Enhanced warning message for Rust installation already present pr#3038
  • Improved error message when there is an error caused by override file pr#3041
  • Explain proxy in terminology documentation pr#3091
  • Recommend tracking Cargo.lock with rust-toolchain file pr#3054
  • Fix RUSTUP_PERMIT_COPY_RENAME condition so it is actually used pr#3292
  • Bump a lot of dependencies to their latest versions pr#renovate-bot

New in Rustup 1.25.2 (Feb 4, 2023)

  • This version of Rustup changes the signature verification code to continue accepting Rust's release signature key, which previously caused warnings due to a time-based check.
  • Note that signature verification in Rustup is still an experimental feature, and there is intentionally no way to enforce signature verification due to the feature being incomplete.

New in Rustup 1.25.1 (Jul 12, 2022)

  • This version of Rustup reverts a single PR from 1.25.1 and tidies a couple of internal bits of code.
  • In brief, it turns out that our optimisation for RUSTC and RUSTDOC cause problems with some tooling which runs under one cargo invocation, but expects to invoke either cargo or rustc without resetting the environment completely. As such, some particularly confusing error messages ensued, and we decided to revert this one optimisation while we wait to correct things in a future release.

New in Rustup 1.25.0 (Jul 11, 2022)

  • Added:
  • Added rust-gdbgui to the proxy list pr#2811
  • Support rustup default none as a way to unset the default toolchain pr#2831
  • Build Rustup for Windows arm64 pr#2835
  • Support Illumos/OpenIndiana platform check on website pr#2839
  • Add info message if self-update is disabled during update pr#2845
  • Added RUSTC and RUSTDOC environment variables for proxied child processes pr#2958
  • Added offer to auto-install VS 2022 pr#2954
  • Added --verbose mode for rustup show pr#2992
  • Added support for --force-non-host to more subcommands pr#2968
  • Changed:
  • Updated the opener crate used for rustup-doc pr#2792
  • Changed the recursion limit for tool/proxy invocation to 20 pr#2812
  • Updated to newer effective-limits crate to reduce "sysinfo not supported" errors pr#2817
  • Handle -y more robustly in rustup-init.sh pr#2815
  • Fix infinite recursion in bash completion when rustc not on PATH pr#2833
  • Update macOS aarch64 CI to newer xcode pr#2877
  • Update website to load TTF fonts more effectively pr#2862
  • Retry curl invocations in rustup-init.sh pr#2869
  • Better handle busybox's wget in rustup-init.sh pr#2885
  • Improve target matching to reduce spurious deprecation warnings pr#2854
  • Parse channel manifest only once to improve performance pr#2898
  • Remove trailing slashes from toolchain names pr#2897
  • Migrate OpenPGP support to Sequoia PGP pr#2847
  • We now send a user agent on http requests to improve compatibility with proxies pr#2953
  • We won't prepend ${CARGO_HOME}/bin to PATH unless it's missing pr#2978

New in Rustup 1.24.3 (Jun 8, 2021)

  • This patch release focusses around resolving some regressions in behaviour in the 1.24.x series. One problem, related to accounting for the release of data blocks in the unpack slab allocator, fixed in pr#2779, would manifest in the installer hanging during installation. A second, fixed in pr#2781, manifested in very early Rust versions (1.0 through 1.7) repeatedly having their checksums fetched despite already being installed. Finally the heuristic which started warning that toolchains being installed may not work on the given host was improved in pr#2782 to reduce false-positive rate and reduce worry among Windows users in particular.
  • Added
  • Added the ability to configure the auto-self-update functionality. This will be of most use when people are testing unreleased versions of Rustup and wish to ensure they don't accidentally lose the test version, without having to remember to run with --no-self-update all the time. pr#2763
  • Changed:
  • We no longer delete the top level of $RUSTUP_HOME/tmp and $RUSTUP_HOME/download meaning that if you have these set up as symlinks to another place, or bind mounts, etc. things should work. pr#2433
  • We more gracefully handle outlier situations with unpack-RAM, panicing less often, clamping settings into viable ranges and warning instead. pr#2780

New in Rustup 1.24.2 (May 17, 2021)

  • Added:
  • SHA256 links on the download page so that you can verify your downloads if you want to be certain. pr#2719
  • Added --verbose to rustup show active-toolchain to also display the version of the compiler for the toolchain. pr#2710
  • We now support 1.x installation channel names for versions 1.0 through 1.8 by hardcoding 1.x.0 since they lack patch releases. pr#2758
  • Changed:
  • Amended the behaviour of the 'missing components' code so that if the problem exists when installing a toolchain (rather than updating it) the message is different and leads you to other remediations. pr#2709
  • Amended the error message for a missing component so that when you're using a nightly toolchain and rust-std is missing for a given target, we lead you to cargo build -Z build-std as a remediation. pr#2732
  • Improved the documentation around settings.toml locations. pr#2698
  • Internal improvements around retrying removal of files. pr#2752

New in Rustup 1.24.1 (Apr 29, 2021)

  • This bugfix release corrects an oversight in the code we introduced to check for unknown proxy names. The original change accidentally omitted the rustfmt and cargo-fmt proxies due to a quirk of the fact those proxies were not originally part of a Rust component.
  • We're sorry for pain this may have caused.

New in Rustup 1.24.0 (Apr 27, 2021)

  • This release is mostly a bugfix and quality of life improvement release. However the headlines for this release are:
  • Support of rust-toolchain.toml as a filename for specifying toolchains.
  • Streaming support for large files to better enable Rust on lower memory platforms such as some Raspberry Pi systems.
  • When we introduced TOML support to rust-toolchain we expected to see some uptake but we saw a lot more than we had expected. Since Cargo is migrating to explicit .toml extensions on things like .cargo/config.toml it was considered sensible to also do this for rust-toolchain - at least the toml variant thereof.
  • This release of rustup has seen a significant number of new contributors to the project, and we hope to see many of you again in the future.
  • Added:
  • Optional use of RUSTLS as TLS backend for Reqwest pr#2517
  • We now support some corner cases in tarballs to permit unpacking early Rust versions pr#2502
  • When running rustup check we now report possible rustup upgrades too. pr#2615
  • We detect and warn if you try and install on an x32 system since for now Rust isn't hostable on that. pr#2622
  • We do, however, support gnux32 as an environment label ready for future support pr#2631
  • We now support managing PATHs on Windows which contain non-unicode values. pr#2649
  • You can now name the TOML variant of rust-toolchain as rust-toolchain.toml pr#2653
  • We prompt harder when checking for the MSVC tooling on Windows now. pr#2529
  • Experimental support for zstd compressed tarballs in channels. NOTE, this does not mean channels will magically gain zstd compressed component files any time soon. pr#2676
  • Register rustup with the Windows installed programs list when installing. This is another experiment into whether this is useful for Windows users. pr#2670
  • Added the ability to specify a path rather than a toolchain channel in the rust-toolchain.toml file. pr#2678
  • Changed:
  • rustup-init now detects tls1.2 for cURL 7.73+ pr#2604
  • Installation now indicates the defaults on all questions pr#2605
  • We now support the Big Sur major OS version pr#2607
  • You can now specify profile in rust-toolchain's TOML form pr#2586
  • We now use . instead of source to better support non-bash POSIX shells pr#2616
  • We fixed a nasty corner case on wildcarded component installation/recognition pr#2602
  • Our website now has a favicon pr#2419
  • We no longer rely on a broken mktemp invocation, this should make rustup-init.sh more compatible pr#2650
  • We now do a better job of reporting non-installable toolchains pr#2562
  • We cope better when modifying RC files which lack a trailing newline pr#2667
  • We are edging closer to requiring a specific force argument to install a toolchain whose host doesn't match the running system. This may break your CI in future so you should check carefully. The main use-case for this capability is the rust-embedded/cross project which we are working with to ensure this doesn't cause problems in the future. [pr#2672][]
  • Support streaming large files during unpack phase. pr#2707
  • We report when you call rustup with an unsupported arg0 -- for example if you make a symlink or hard link to the binary with a name other than one of the proxies. pr#2716
  • We also cleaned up a number of error message cases, including some on invalid toolchain name pr#2613, a better message when no toolchain is installed pr#2657, and some on component unavailability pr#2619.
  • Documented:
  • Added notes about Powershell to proxies documentation pr#2592
  • Various updates to the rustup manual build process including pr#2628
  • Small fixes on how to build rustup documentation pr#2641
  • We clarified the message around restarting the shell when installing pr#2684

New in Rustup 1.23.1 (Dec 2, 2020)

  • This point release is mostly to correct a problem where if you installed rustup with --no-modify-path then the .cargo/env file would not be created in some cases. In addition, we have rebuilt the macos binaries to correct an oversight which caused older Macs to be unable to run the new version. If you encountered a problem with liblzma on mac os 10.13 then this version should solve that for you.

New in Rustup 1.23.0 (Nov 27, 2020)

  • Added:
  • Our documentation is now in "book" form. pr#2448
  • When you retrieve rustup's version, you'll also be told the version of the compiler for your default toolchain, to disambiguate things a little. pr#2465
  • Support added for aarch64-unknown-linux-musl pr#2493
  • Support added for aarch64-apple-darwin pr#2521
  • Support added for x86_64-unknown-illumos pr#2432
  • You can now override the system-wide settings fallback path pr#2545
  • Support for major.minor channels pr#2551
  • Changed:
  • Significant updates to our handling of PATH updating on installation was made. Nominally this ought to have little external change visibility but it may make it more robust for some people. pr#2387
  • New support for toml-based rust-toolchain file format. This will be expanded upon going into the future to add new functionality, but for now the basics are in place, permitting you to select a channel, targets, and components which may be needed to build your applications. pr#2438
  • We now fall back to copying files when rename-in-place causes problems. This may improve matters in dockerised environments where rustup is preinstalled with a toolchain already. pr#2410
  • We do a better job of exiting gracefully in a number of circumstances. pr#2427
  • The reqwest backend (the default download backend) now supports socks5 proxies. pr#2466
  • If you use a proxy for a component which is not part of a custom toolchain you are using then we emit a message about trying to build that component. pr#2487
  • If you try and unpack super-large components which would previously be gracefully rejected, instead we try and if we succeed then you get to have the component unpacked. Unfortunately this means if we fail you could end up with a broken toolchain install. [pr#2490]
  • We will recommend ways to recover if you can't update your toolchain due to components or targets going missing. pr#2384
  • If you choose to install a toolchain which is for a different target than you are running on, we will warn you and direct you toward rustup target install in case that's what you meant. pr#2534

New in Rustup 1.22.1 (Jul 31, 2020)

  • A regression in proxied behaviour slipped in due to a non-compatible change in url slipping in 2.1 which caused a misbehaviour in env_proxy. which was fixed but not released to crates.io until after 1.22.0 was built.
  • Fortunately, inejge noticed and provided a fix for us by publishing a new env_proxy and providing us with this fix.
  • We apologise for any inconvenience this caused.
  • Changed:
  • Update to env_proxy 0.4.1 - #2399
  • Fixed website copy button and copy space overflow - #2398