1.29.0 - 2026-03-05
This new release of rustup comes with significant changes.
The headline feature is better concurrency for certain operations, implemented by @FranciscoTGouveia with the help from the team as a part of the GSoC 2025 event:
-
Improved the UX for the
rustup updateandrustup toolchainsubcommands by downloading components concurrently and unpacking during downloads, which should speed up the toolchain installation process. Meanwhile, progress bars have been updated accordingly to and provide better feedback about where time is being spent. pr#4426 pr#4436 pr#4471 pr#4605- You can use the
RUSTUP_CONCURRENT_DOWNLOADSenvironment variable to adjust the number of concurrent downloads to better reflect the needs of your specific environment (the current default is2). Particularly, you may set the value to1to restore the sequential downloading behavior. pr#4455
- You can use the
-
Improved the UX for the
rustup checksubcommand by checking for toolchain updates concurrently and updating the progress reporting UI. pr#4388
rustup now officially supports the following host platforms:
In addition, basic support for more shells has been added, including:
This release also comes with other quality-of-life improvements, to name a few:
-
When running rust-analyzer via a proxy, rustup will consider the
rust-analyzerbinary fromPATHwhen the rustup-managed one is not found. pr#4324 -
Empty environment variables are now treated as unset. This should help with resetting configuration values to default when an override is present. pr#4422
-
rustup checkwill use different exit codes based on whether new updates have been found: it will exit with100on any updates or0for no updates. pr#4694
Furthermore, @FranciscoTGouveia has joined the team. He has shown his talent, enthusiasm and commitment to the project since the first interactions with rustup, so we are thrilled to have him on board and are actively looking forward to what we can achieve together.
- chore(deps): lock file maintenance by @renovate[bot] in #4321
- docs(changelog): mirror changes from the release announcement, take 2 by @rami3l in #4322
- deps: update aws-lc-rs to 1.13.1 by @ognevny in #4326
- feat(toolchain): consider external
rust-analyzerwhen calling a proxy by @rami3l in #4324 - chore(deps): bump semver-compatible dependencies by @rami3l in #4329
- toolchain: hoist binary name conditionals out of fallback functions by @djc in #4330
- Fix cargo lints on Windows by @ChrisDenton in #4335
- chore(deps): lock file maintenance by @renovate[bot] in #4341
- Log versions during self updates by @djc in #4331
- feat(custom-toolchains):
rustup shownow reporting installed targets by @FranciscoTGouveia in #4333 - refactor(test): add new APIs for easier snapshot testing by @rami3l in #4334
- style(test): clarify uses of
snapbox::str![]by @rami3l in #4342 - feat(self_update): add proxy sanity checks by @manyinsects in #4338
- rustup check: add exit status and no-self-update logic by @tjkirch in #4340
- chore(deps): lock file maintenance by @renovate[bot] in #4348
- fix(deps): update rust crate opener to 0.8.0 by @renovate[bot] in #4346
- Skip manifest loading if there are no components/targets to check by @Kobzol in #4350
- feat(custom-toolchains): targets and components are now reported for custom toolchains by @FranciscoTGouveia in #4347
- Custom list tweaks by @djc in #4351
- test(cli-self-upd): migrate to
.expect()APIs by @rami3l in #4343 - test(cli-paths): migrate to
.expect()APIs by @rami3l in #4354 - Unset RUSTUP_AUTO_INSTALL for tests by @ChrisDenton in #4360
- test(cli-inst-interactive): migrate to
.expect()APIs by @rami3l in #4353 - Increase Windows main thread stack size to 2mb by @ChrisDenton in #4362
- Clean up installed components/targets list tweaks by @djc in #4361
- test(cli-exact): migrate to
.expect()APIs by @rami3l in #4352 - chore(deps): lock file maintenance by @renovate[bot] in #4357
- Update platforms to 3.6 by @djc in #4364
- Fix CI image names for downloading ARM and PowerPC artifacts by @Kobzol in #4368
- test(cli-rustup): migrate to
.expect()APIs by @rami3l in #4365 - fix(deps): update opentelemetry by @renovate[bot] in #4371
- test(download): serialize tests with proxy-sensitive URLs by @cuviper in #4372
- test(cli-misc): migrate to
.expect()APIs by @rami3l in #4363 - test(cli-v1): migrate to
.expect()APIs by @rami3l in #4366 - test(cli-v2): migrate to
.expect()APIs by @rami3l in #4367 - Upgrade to rustls-platform-verifier 0.6 by @djc in #4373
- docs: mention the
AssertAPIs, add misc fixes by @rami3l in #4374 - Update bash completions instructions and test by @rickhg12hs in #4378
- chore(deps): lock file maintenance by @renovate[bot] in #4379
- test: finish migration to
.expect()APIs by @rami3l in #4376 - add Solaris support by @psumbera in #4380
- Fix rustup-init.sh cputype check for sparcv9 by @psumbera in #4382
- docs(README): update CI status badge by @rami3l in #4383
- Emphasize that
llvm-toolsdist component is not subject to compiler stability guarantees by @jieyouxu in #4384 - chore(deps): lock file maintenance by @renovate[bot] in #4386
- Upgrade to windows-sys 0.60 by @djc in #4387
- Block broken snap curl by @konstin in #4389
- chore(deps): lock file maintenance by @renovate[bot] in #4390
- docs: replace Discord links by @rami3l in #4393
- ci(run): install
codegen-cliwithcargo-binstallby @rami3l in #4394 - feat(www): improve "copy" button style compatibility with Chromium by @rami3l in #4395
- fix(ci/run): specify target triple for bindgen-cli installation by @rami3l in #4398
- style: migrate the codebase to
let-chainsby @rami3l in #4397 - chore(deps): lock file maintenance by @renovate[bot] in #4399
- chore(deps): lock file maintenance by @renovate[bot] in #4402
- Check for updates concurrently by @FranciscoTGouveia in #4388
- Bump
tomlto 0.9 by @Kobzol in #4405 - Limit the default number of I/O threads by @ChrisDenton in #4407
- Introduce
RUSTUP_TERM_WIDTHandRUSTUP_TERM_PROGRESS_WHENby @FranciscoTGouveia in #4406 - Simplify updates by @djc in #4404
- chore(deps): lock file maintenance by @renovate[bot] in #4410
- fix(ci/docker): update
CCname forpowerpc64le-unknown-linux-gnuby @rami3l in #4411 - fix(toolchain/distributable): refine handling of known targets with no prebuilt artifacts by @rami3l in #4409
- Set a maximum thread limit for the
remove_dir_allcrate by @ChrisDenton in #4413 - opt(err): show renaming file error source by @Binlogo in #4414
- Limit Tokio worker threads to I/O thread count by @djc in #4417
- chore(deps): lock file maintenance by @renovate[bot] in #4418
- docs(user-guide/environment-variables): update description of
RUSTUP_IO_THREADSby @rami3l in #4427 - ci(macos): run x64 workflows with Rosetta 2 by @rami3l in #4428
- chore(deps): lock file maintenance by @renovate[bot] in #4430
- Refactor the DownloadTracker in favor of
indicatifby @FranciscoTGouveia in #4426 - chore(deps): lock file maintenance by @renovate[bot] in #4437
- test: detach snapshots from component installation order by @rami3l in #4435
- feat: improve error message for
rustup whichby @Bogay in #4429 - chore(deps): lock file maintenance by @renovate[bot] in #4441
- Introduce
RUSTUP_DOWNLOAD_TIMEOUTto override the download timeout by @FranciscoTGouveia in #4440 - chore(deps): update actions/checkout action to v5 by @renovate[bot] in #4443
- Justify the presence of an
.unwrap()on getting the content of anOnceLockby @FranciscoTGouveia in #4444 - Concurrently download components of a toolchain by @FranciscoTGouveia in #4436
- Delete unnecessary Download(Pop/Push)Unit notifications by @FranciscoTGouveia in #4447
- ci(check): make installation of
taplo-clifaster by @AudaciousAxiom in #4449 - chore(deps): lock file maintenance by @renovate[bot] in #4451
- Introduce
RUSTUP_CONCURRENT_DOWNLOADSto control concurrency by @FranciscoTGouveia in #4450 - chore(deps): disable default features for zstd by @klensy in #4453
- chore(deps): lock file maintenance by @renovate[bot] in #4456
- Introduce a
Semaphoreto fully honorRUSTUP_CONCURRENT_DOWNLOADSby @FranciscoTGouveia in #4455 - Treat empty environment variables as unset by @djc in #4422
- Report the real elapsed time of a download instead of the cumulative time by @FranciscoTGouveia in #4460
- Replace non_empty_env_var() with Process::var_opt() by @djc in #4461
- feat(config): add support for
tcshshell by @cachebag in #4459 - chore(deps): lock file maintenance by @renovate[bot] in #4467
- Correct
DownloadTrackerreporting on retries and failures by @FranciscoTGouveia in #4466 - Remove hardcoded dependency to the master branch by @Kobzol in #4470
- feat(install): warn if default linker (
cc) is missing from PATH by @cachebag in #4469 - chore(deps): update aws-actions/configure-aws-credentials action to v5 by @renovate[bot] in #4472
- fix(cli/rustup_mode): use ASCII-compatible spinner by @rami3l in #4473
- chore(deps): lock file maintenance by @renovate[bot] in #4478
- Upgrade windows crates by @djc in #4479
- chore(deps/renovate): group version bumps for
windows-rscrates by @rami3l in #4480 - feat: adjust default concurrent download count by @rami3l in #4474
- docs(README): link CI status badge to GitHub Actions panel by @rami3l in #4482
- docs(dev-guide): mention the arg0 override trick on welcome page by @rami3l in #4484
- chore(deps): lock file maintenance by @rami3l in #4486
- Fix link in the bug reporting template by @LingMan in #4487
- Remove unneeded paranthesees by @DasMatus in #4488
- chore(deps): lock file maintenance by @rami3l in #4492
- Further refactoring of self update logic by @djc in #4412
- Simplify package unpacking code by @djc in #4490
- refactor: remove redundant references by @rami3l in #4494
- Simplify component downloads by @djc in #4489
- Flatten notification enums by @djc in #4496
- tests: deduplicate distribution installation tests by @djc in #4495
- tests: use DistContext for dist::component tests by @djc in #4500
- Start removing Notification variants by @djc in #4499
- refactor: Remove unused ColorableTerminal::carriage_return by @epage in #4506
- refactor: Switch logging to anstyle by @epage in #4507
- Remove more Notification variants by @djc in #4501
- ci: use macOS Intel runners by @djc in #4509
- Upgrade opentelemetry dependencies by @djc in #4508
- Move the default branch from
mastertomainby @Kobzol in #4511 - ci(docs): fix local doc branch name by @rami3l in #4512
- Fix typo in clitools.rs comment by @smoelius in #4516
- docs(changelog): describe default profile change during auto-install by @rami3l in #4515
- fix(process): Ensure stdout/stderr lock is held across calls by @epage in #4514
- refactor: Simplify abstracted stdout/stderr by @epage in #4517
- feat(cli/self-update): add support for PowerShell on Unix systems by @paxbun in #4519
- Clean up terminal source usage by @djc in #4521
- Remove more Notification variants (part 3) by @djc in #4510
- Update platforms to 3.7.0 by @djc in #4524
- Scope notifications to downloads only by @djc in #4526
- chore(deps): lock file maintenance by @renovate[bot] in #4530
- fix(www): removes www subdomain from all rust-lang.org urls by @WilliamCollishaw in #4533
- refactor: Replace termcolor with anstream by @epage in #4520
- Download cleanup by @djc in #4531
- Set
RUSTUP_TOOLCHAIN_SOURCEby @smoelius in #4518 - process: clean up more terminal stuff by @djc in #4538
- style: Encourage using existing imports by @epage in #4540
- refactor(log): Single source RUSTUP_TERM_COLOR by @epage in #4539
- Update the default Windows SDK version by @ChrisDenton in #4542
- test: Replace trycmd with snapbox by @epage in #4536
- Naming/miscellaneous cleanup by @djc in #4547
- refactor(installation): extract installation of a component into a separate function by @rami3l in #4545
- Expand
RUSTUP_TOOLCHAIN_SOURCE's documentation by @smoelius in #4549 - config: clean up override handling by @djc in #4546
- chore(deps): lock file maintenance by @renovate[bot] in #4550
- feat(cli): Add color to clap help/errors by @epage in #4551
- Handle the progress reporting of installations through progress bars by @FranciscoTGouveia in #4552
- style: Remove wildcard imports by @epage in #4553
- feat(cli/help): discuss
rustup toolchain installby @rami3l in #4554 - fix(cli/help): change indentation of discussions to 2 spaces by @rami3l in #4555
- cli: add
rustup self uninstall --no-modify-pathby @cyqsimon in #4534 - fix: Use HEADER styling in 'rustup show' by @epage in #4556
- fix(check): Respect RUSTUP_TERM_COLOR in
rustup checkby @epage in #4561 - fix(update): Match 'cargo update's colors by @epage in #4557
- fix(toolchain): Have 'list' match 'show's styling by @epage in #4559
- fix(list): Match show command's styling by @epage in #4558
- rustup: tweak update check output style by @djc in #4568
- fix(cli/rustup-mode): add missing self-update in
rustup toolchain installby @rami3l in #4566 - chore(deps): lock file maintenance by @renovate[bot] in #4569
- chore(deps): update actions/upload-artifact action to v5 by @renovate[bot] in #4572
- Simplify unpacking abstractions by @djc in #4573
- fix(check): Use Cargo's colors by @epage in #4563
- Apply suggestions from clippy 1.91 by @djc in #4578
- Concurrent downloads & installation by @djc in #4570
- Take semver-compatible dependencies by @djc in #4583
- cli: avoid dropped temporary by @djc in #4584
- dist: improve cohesion for downloads/installation by @djc in #4586
- feat(rustup-mode): add
no_updateflag torustup toolchain installby @nozwock in #4522 - chore(deps): lock file maintenance by @renovate[bot] in #4589
- Be more consistent about aliases for different subcommands by @joshtriplett in #4588
- dist: move update_from_dist() to DistOptions::install_into() by @djc in #4591
- rustup: unhide top-level install/uninstall commands by @djc in #4592
- dist: attach manifest download functions to DownloadCfg by @djc in #4593
- chore(deps): lock file maintenance by @renovate[bot] in #4596
- chore(config): migrate Renovate config by @renovate[bot] in #4597
- Clarify installation process dependencies by @djc in #4599
- chore(deps): lock file maintenance by @renovate[bot] in #4601
- Manifest names by @djc in #4600
- Unpack progress by @djc in #4594
- Fix refresh rate for progress bars by @djc in #4602
- dist: align progress bar elements by @djc in #4604
- dist: make installation asynchronous by @djc in #4605
- Prepare for mdbook 0.5 migration by @ehuss in #4612
- chore(deps): lock file maintenance by @renovate[bot] in #4619
- chore(deps): update actions/checkout action to v6 by @renovate[bot] in #4617
- fix(utils): downgrade panic to warning in
delete_dir_contents_following_links()by @rami3l in #4618 - fix(dist/manifestation): print "downloading component" only on
InstallEventsby @rami3l in #4625 - fix(install): default to GNU host in Cygwin/MSYS/MinGW environments (#4421) by @cachebag in #4497
- fix(dist/download): align
total_bytesfields in progress reporting UI by @rami3l in #4629 - chore(deps): lock file maintenance by @renovate[bot] in #4630
- feat: Added xonsh shell support by @anki-code in #4626
- download: statically bundle relevant trust anchors by @djc in #4631
- test(static-roots): refine
store_static_roots()by @rami3l in #4634 - dist: bump
rustupversion to v1.29.0 by @rami3l in #4513 - dist(rustup-init/sh): update commit shasum in help string by @rami3l in #4637
- Avoid panicking when parsing a toolchain version with leading zeros by @FranciscoTGouveia in #4639
- docs(dev-guide): mention snapshot updating in release process by @rami3l in #4640
- Tweak version parser by @djc in #4641
- chore(deps): lock file maintenance by @renovate[bot] in #4642
- chore(deps): update actions/cache action to v5 by @renovate[bot] in #4646
- chore(deps): update actions/upload-artifact action to v6 by @renovate[bot] in #4647
- cli: add
doc --releasesto open release notes by @cuviper in #4645 - fix(toolchain): forbid toolchain names starting with
+by @cachebag in #4650 - chore(deps): lock file maintenance by @renovate[bot] in #4656
- use "tuple" instead of "triple" for target names by @tshepang in #4658
- chore(deps): lock file maintenance by @renovate[bot] in #4661
- Upgrade to reqwest 0.13 by @djc in #4664
- chore(deps): lock file maintenance by @renovate[bot] in #4669
- Unify nightly component unavailable messages by @enthropy7 in #4670
- fix(dist): adjust printed newlines in
components_missing_msg()by @rami3l in #4673 - chore(deps): lock file maintenance by @renovate[bot] in #4677
- fix(utils): "Directory not empty" error when uninstalling multiple toolchains by @cachebag in #4678
- fix(cli/rustup-mode):
checkfor self updates forSelfUpdateMode::CheckOnlyby @rami3l in #4680 - Remove the mixed singular/plural phrasing as “
component(s)” by @steffahn in #4682 - feat(cli/rustup-mode): add
doc --rustc-docsto open rustdoc for Rust internals by @rami3l in #4660 - fix:
copy_dirandcopy_fileto preserve symlinks instead of following them by @cachebag in #4671 - Add powerpc64 unknown linux musl support by @Gelbpunkt in #4688
- chore(deps): lock file maintenance by @renovate[bot] in #4685
- fix(cli/rustup-mode): improve exit code of
rustup checkby @rami3l in #4694 - Add common commands section in help text by @dingxiangfei2009 in #4651
- feat(cli/rustup-mode): add "Exit status" section to
rustup check --helpby @appleGun22 in #4696 - Replace
$nu.home-pathwith~inenv.nufile by @VasanthakumarV in #4701 - Add winget instructions to MSVC install page by @ChrisDenton in #4702
- cli: introduce semantic exit code constants for rustup check by @dharmvr1 in #4700
- Preserve partial downloads on network failure by @FranciscoTGouveia in #4695
- fix(dist/manifest): sort keys when serializing
Manifestby @rami3l in #4716 - Ensure the server honors range requests to prevent download corruption by @FranciscoTGouveia in #4718
- fix(diskio): fall back to single-threaded unpacking by @cachebag in #4717
- Improve logs when recovering from an interrupted installation by @FranciscoTGouveia in #4725
- Add
--overrideflag inrustup toolchain installby @FranciscoTGouveia in #4727 - Fix the default number of
RUSTUP_CONCURRENT_DOWNLOADSin the documentation by @FranciscoTGouveia in #4728 - fix(cli/self-update): fix output format for
rustup checkon TTY by @rami3l in #4730 - Implement dark mode for rustup.rs website by @Bogay in #4729
- fix(cli): Style CLI errors in init mode by @epage in #4735
1.28.2 - 2025-05-05
This new patch release has brought even more tiny fixes and improvements over the previous one.
The headlines of this release are:
-
The cURL download backend and the native-tls TLS backend are now officially deprecated and a warning will start to show up when they are used. pr#4277
-
While rustup predates reqwest and rustls, the rustup team has long wanted to standardize on an HTTP + TLS stack with more components in Rust, which should increase security, potentially improve performance, and simplify maintenance of the project. With the default download backend already switched to reqwest since 2019, the team thinks it is time to focus maintenance on the default stack powered by these two libraries.
-
For people who have set
RUSTUP_USE_CURL=1orRUSTUP_USE_RUSTLS=0in their environment to work around issues with rustup, please try to unset these after upgrading to 1.28.2 and file an issue if you still encounter problems.
-
-
The version of
rustupcan be pinned when installing viarustup-init.sh, andrustup self updatecan be used to upgrade/downgrade rustup 1.28.2+ to a given version. To do so, set theRUSTUP_VERSIONenvironment variable to the desired version (for example1.28.2). pr#4259 -
rustup set auto-install disablecan now be used to disable automatic installation of the toolchain. This is similar to theRUSTUP_AUTO_INSTALLenvironment variable introduced in 1.28.1 but with a lower priority. pr#4254 -
Fixed a bug in Nushell integration that might generate invalid commands in the shell configuration. Reinstalling rustup might be required for the fix to work. pr#4265
-
The logic of fetching the active toolchain's profile has been adjusted in automatic installation. Now, when the profile is not specified, the profile from
rustup override set profilewill be chosen instead of the profile nameddefault. This aligns with the behavior ofrustup toolchain install. pr#4258
- Fix build script
cargoinstructions by @ChrisDenton in #4235 - Allow copy&paste of documented registry keys into Regedit by @eugenesvk in #4244
- document RUSTUP_AUTO_INSTALL by @ahl in #4247
- Remove validation for custom toolchains when reading rust-toolchain.toml by @wesleywiser in #4250
- Append Windows "bin" directory to
PATHby @ChrisDenton in #4249 - fix(dist): refine suggestions about missing targets by @rami3l in #4253
- Use
cursor: pointerfor copy button on website by @Noratrieb in #4255 - Add
set auto-install disableby @ChrisDenton in #4254 - fix(errors)!: improve error messages for
RustupError::ToolchainNotInstalledby @rami3l in #4258 - feat: allow version pinning & arbitrary downgrades via
RUSTUP_VERSIONby @rami3l in #4259 - fix(cli/self-update): fix Nushell-related suggestions and scripts by @rami3l in #4265
- Show toolchain paths in
rustup show -voutput by @CLoaKY233 in #4270 - Tweak rustup help output by @djc in #4272
- Update
CARGOenvironment variable if it is set to a rustup proxy by @ChrisDenton in #4275 - Simplify download abstractions and start warning about curl usage by @djc in #4277
- docs(user-guide): cover correct
$PATHconfiguration for proxies by @rami3l in #4283 - Add toolchain_name to not installed bail msg by @jmqd in #4293
- Add powerpc64le-unknown-linux-musl support by @Gelbpunkt in #4294
- Use
RUSTUP_HARDLINK_PROXIESenvironment variable to hard link proxies by @ChrisDenton in #4295 - Switch flate2 to use the zlib-rs backend by @joshtriplett in #4297
- feat(cli/rustup-mode): add aliases to
rustup component removeby @rami3l in #4304 - Skip span fields by @djc in #4306
- Log original download errors immediately by @djc in #4307
- download: show Debug representation for errors by @djc in #4309
- Emit tracing events from log facade calls by @djc in #4310
- Take rustls-platform-verifier 0.5.2 by @ctz in #4314
- Set ALPN protocols for rustls backend by @djc in #4312
- Deprecate native-tls as well by @djc in #4317
1.28.1 - 2025-03-05
This is a patch release to restore the automatic install behavior by default.
This release contains the following fixes:
- Automatic install is enabled by default but can be opted out by setting
RUSTUP_AUTO_INSTALLenvironment variable to0. pr#4214 pr#4227 rustup show active-toolchainwill only print a single line, as it did in 1.27. pr#4221- Fixed a bug in the reqwest backend that would erroneously timeout downloads after 30s. pr#4218
- Use relative symlinks for proxies. pr#4226
1.28.0 - 2025-03-04
This new release of rustup has been a long time in the making and comes with substantial changes.
The following improvements might require changes to how you use rustup:
-
rustup will no longer automatically install the active toolchain if it is not installed. pr#3985
- To ensure its installation, run
rustup toolchain installwith no arguments. - The following command installs the active toolchain both before and after this change:
rustup show active-toolchain || rustup toolchain install # Or, on older versions of PowerShell: rustup show active-toolchain; if ($LASTEXITCODE -ne 0) { rustup toolchain install }
- To ensure its installation, run
-
Installing a host-incompatible toolchain via
rustup toolchain installorrustup defaultwill now be rejected unless you explicitly add the--force-non-hostflag. pr#4028
rustup now officially supports the following host platforms:
This release also comes with various quality-of-life improvements, to name a few:
rustup show's output format has been cleaned up, making it easier to find out about your toolchains' status. pr#3225rustup docnow accepts a flag and a topic at the same time, enabling quick navigation to specific parts of more books. pr#4070- rustup's
removesubcommands now support more aliases such asrmanddel. pr#4093 - Basic support for nushell has been added. pr#4078
We have additionally made the following internal changes:
- The default download backend has been changed from reqwest with native-tls to reqwest with rustls. pr#3798
RUSTUP_USE_CURLandRUSTUP_USE_RUSTLScan still be used to change the download backend if the new backend causes issues. If issues do happen, please let us know.- The default backend now uses rustls-platform-verifier to verify server certificates, taking advantage of the platform's certificate store on platforms that support it. pr#3903
- When creating proxy links, rustup will now try symlinks first and fall back to hardlinks, as opposed to trying hardlinks first. pr#4023
- A new
RUSTUP_LOGenvironment variable can be used to control tracing-based logging in rustup binaries. See the dev guide for more details. pr#3875
Furthermore, Chris Denton joined the team. Chris has a lot of experience contributing to Windows-related parts of the Rust Project, expertise which was sorely lacking in existing team members, so we're happy to have him on board to help address Windows-specific issues.
- Replace remaining
winapiusage withwindows-sysby @kennykerr in #3802 - docs(dev-guide): remove “pushing to master” in the release process by @rami3l in #3789
- refactor(download): use
DownloadCallBackindownload_with_backend()by @rami3l in #3795 - Update MSVC requirements to VS 2017 to match Rust repo by @dpaoliello in #3799
- feat(download-backend)!: make
reqwest/rustlsthe new default by @rami3l in #3798 - fix(ci/freebsd): fix
invalid peer certificate: UnknownIssuerby @rami3l in #3810 - fix(filesource): make some constructs only available via the
testfeature by @rami3l in #3811 - Reduce code duplication for show commands by @djc in #3813
- refactor(cli): rewrite
rustup-initwithclap_deriveby @rami3l in #3814 - Make
rustup showoutput info in a more logical order by @majaha in #3225 - feat(download): reflect the download/TLS backends in the user agent by @rami3l in #3815
- fix(rustup-init): fix typo in
rustup-init[.sh]args by @rami3l in #3818 - refactor(cli): rewrite
rustupwithclap_deriveby @rami3l in #3596 - Stop showing ETA after download is complete by @djc in #3827
- Fix ETA display after regression by @djc in #3829
- refactor(filesource): replace repetitive
#[cfg()]usages with a newmodby @rami3l in #3833 - Tweaks from derived clap parser review by @djc in #3834
- fix(deps): update rust crate pulldown-cmark to 0.11 by @rami3l in #3838
- fix(deps): update rust crate itertools to 0.13 by @rami3l in #3839
- ci(macos): use
macos-latestinstead ofmacos-14by @rami3l in #3842 - Re-enable Ring support on Windows Arm64 by @Alovchin91 in #3845
- Switch from sync to a tokio runtime by @rbtcollins in #3367
- ci(windows): fix CI failure on
x86_64-pc-windows-gnuby @rami3l in #3849 - consistently add context with file path when parsing fails by @Skgland in #3853
- refactor: restrict
run_future()usages to tests by @rami3l in #3856 - feat: support for parsing beta versions with tags in the toolchain by @roife in #3858
- fix(download): work around
hyperhang issue by adjustingreqwestconfig by @rami3l in #3855 - Simplify process interface by @djc in #3764
- Add Windows Arm64 to Other Installation Methods by @Alovchin91 in #3854
- Store current_dir in Cfg by @djc in #3859
- Finalise Rustup Windows Arm64 support by @Alovchin91 in #3840
- Refactoring around use of
Processby @djc in #3860 - feat(cli): add
--quiettorustup toolchain listand friends by @rami3l in #3862 - fix(dist/triple): ensure
dist::triple::knownis up to date withplatformsby @rami3l in #3841 - Simplify notification handling setup by @djc in #3863
- Use serde to encode/decode various TOML formats by @djc in #3864
- refactor(ci/run): use more
target_cargo()inrun.bashby @rami3l in #3867 - Fix misleading "uninstalled toolchain" notification by @scimas in #3869
- Small refactoring tweaks to improve further changes by @djc in #3872
- refactor(test): execute all
#[rustup_macros::unit_test]s within atokiocontext by @rami3l in #3868 - chore(dist/features): ship
tracingand friends by default by @rami3l in #3803 - Simplify installation code by @djc in #3865
- Let argument parser handle enum conversions by @djc in #3874
- Pass Process around explicitly by @djc in #3871
- fix(log): use
RUSTUP_LOGfor internaltracinginstead ofRUST_LOGby @rami3l in #3876 - Process cleanup by @djc in #3877
- Use tracing macros directly by @djc in #3878
- Fix the
TODOinsrc\toolchain\toolchain.rsby @InfyniteHeap in #3881 - refactor(dist): hoist
dist::distintodistby @rami3l in #3882 - Simplify toolchain construction by @djc in #3880
- Remove unused code by @djc in #3886
- refactor(log): rename
NotificationLevelvariants to align withtracing::Levelby @rami3l in #3890 - Refactor platform-dependent code in self_update by @djc in #3887
- download: inline errors, rename TLS backend by @djc in #3888
- fix(dist/linux): handle the possible unavailability of
/procinrustup-init.shby @rami3l in #3800 - test(clitools): revive
run_inprocess()by @rami3l in #3891 - Extract types by @djc in #3766
- refactor(toolchain/names): replace
toolchain_sort()withToolchainName'sOrdinstance by @rami3l in #3892 - ci(all-features): add
-D warningstocargo check-all-featuresby @rami3l in #3894 - fix(dist): throw an error when a
PartialVersionstring doesn't start with an ASCII digit by @rami3l in #3895 - docs(dev-guide/tracing): mention
RUSTUP_LOGand console-based tracing by @rami3l in #3879 - Port tests to CliTestContext by @djc in #3893
- Add missing period in warning while checking existing Rust installations by @Uaitt in #3899
- fix(rustup-mode): improve
claperror format by @rami3l in #3906 - ci(windows): run
cargo all-featuresby @rami3l in #3904 - feat(download/rustls): use
rustls-platform-verifierby @rami3l in #3903 - Disable automatic self updates in CI environments by @djc in #3907
- feat: add hint to run
rustup selfwhen err desc isselfby @Xerxes-2 in #3901 - test(manifestation): replace
run_future()withTestContextby @rami3l in #3915 - implements quiet flag in
rustup-init.shby @vic1707 in #3910 - feat(rustup-init): set log level to
WARNon-qifRUSTUP_LOGis unset by @rami3l in #3911 - fix(download): fix build error with
--no-default-features --features=curl-backendby @rami3l in #3922 - Add loongarch64-unknown-linux-musl support by @heiher in #3921
- feat(cli): warn when removing the default/active toolchain by @rami3l in #3924
- Clean up usage of if_not_empty() by @djc in #3925
- feat(dist): refine suggestions regarding manifest checksum mismatches by @rami3l in #3923
- Upload Rustup build artifacts to new S3 bucket by @jdno in #3909
- Grant GitHub Actions workflows access to OIDC token by @jdno in #3930
- Prepare deployment on master branch by @jdno in #3931
- Fix uploading of Windows build artifacts by @jdno in #3933
- Upload Windows artifacts into correct subdirectory by @jdno in #3934
- feat(log): unhide
tracing::instrumentfrom behindfeature = "otel"by @rami3l in #3873 - Fix home_dir() and current_dir() regression by @djc in #3938
- Add help message for missing toolchain by @jtr860830 in #3939
- refactor: clean up platform-specific logic by @rami3l in #3941
- style: reformat all TOML files with
taploby @rami3l in #3942 - fix(rustup-mode)!: don't install toolchain on
rustup --versionby @rami3l in #3948 - fix(rustup-mode): return
ExitCode(1)whenupdate()fails by @rami3l in #3952 - fix(utils): make
ExitCode#[must_use]by @rami3l in #3954 - build(windows): fix typo in
build.rsby @rami3l in #3955 - Upgrade to opentelemetry 0.24 by @djc in #3959
- Bump fs_at to 0.2.1 by @djc in #3965
- docs(user-guide): use
brew install rustupinstead ofrustup-initby @rami3l in #3963 - docs(dev-guide): add guideline for atomic commits to the developer guide by @jtr860830 in #3969
- Remove
once_celldependency and useLazyLockinstead by @InfyniteHeap in #3971 - docs(dev-guide): update
coding-standardsto reflect recent API changes. by @rami3l in #3974 - fix: fix unreachable code lints on Android by @rami3l in #3975
- Upgrade windows-sys to 0.59 by @djc in #3976
- style(taplo): enable
reorder_keysfor*dependenciesinCargo.tomlby @rami3l in #3977 - feat(download/rustls): use
aws-lcinstead ofringby @rami3l in #3898 - ci(run): accelerate workflows by @rami3l in #3978
- ci(freebsd): fix build failure related to
aws-lcby @rami3l in #3979 - fix(config): warn if host is incompatible with the toolchain in
rustup defaultby @rami3l in #3980 - feat(rustup-mode): install the active toolchain by default on
rustup toolchain installby @rami3l in #3983 - feat(cli)!: remove implicit toolchain installation by @rami3l in #3985
- ci(macos): install
awsclifrombrewby @rami3l in #3989 - fix(manifest): consider possible renames in
Component::try_new()by @rami3l in #3991 - Upgrade pulldown-cmark to 0.12 by @djc in #3999
- feat(dist): add notes for
stableandbetaincomponents_missing_msg()by @rami3l in #3920 - Allow
rustup docto search for unions by @taylordotfish in #4004 - refactor(config)!: simplify logic by @rami3l in #3986
- feat(cli)!: set log level to
INFO/DEBUGon--quiet/--verboseifRUSTUP_LOGis unset by @rami3l in #3987 - Apply clippy suggestions from 1.81 by @djc in #4015
- Update semver-compatible dependencies, except openssl-src by @djc in #4021
- Try symlinking proxies first, falling back to hardlinking if that fails by @ChrisDenton in #4023
- Note that selecting VS lang packs is optional by @ChrisDenton in #4025
- docs(README): Point out where to find nightly/master docs. by @LunarLambda in #4026
- refactor(cli/common)!: deny installing a host-incompatible toolchain w/o
--force-non-hostby @rami3l in #4028 - Update semver-compatible dependencies by @djc in #4031
- Update remove_dir_all by @ChrisDenton in #4032
- Replace
winregwithwindows-registryby @InfyniteHeap in #3896 - Remove unnecessary methods by @InfyniteHeap in #4034
- tests: rust-toolchain + profile in settings by @lucacasonato in #4040
- Update semver-compatible dependencies by @djc in #4044
- fix(rustup-init/sh): fix incorrect TLS warning with curl v8.10 by @rami3l in #4046
- Update semver-compatible dependencies, except openssl-src by @djc in #4056
- fix(config): don't show toolchain names from
rust-toolchain.tomlin error message by @rami3l in #4060 - chore: use more workspace-wide configurations by @rami3l in #4061
- refactor(diskio): replace
eprintln!()withdebug!()by @rami3l in #4063 - feat(rustup-init): detect and warn about existing
settings.tomlby @rami3l in #4064 - refactor(utils): hoist
utils::utilsintoutilsby @rami3l in #4065 - fix: add powerpc64 and s390x to known target_arch values for tests by @decathorpe in #4067
- feat(cli/rustup-mode): support more books in
rustup docby @rami3l in #4071 - docs: update channel toolchain syntax by @kyle-leonhard in #4074
- fix(cli/rustup-mode): remove
.num_args()when.value_delimiter(',')is present by @rami3l in #4076 - Upgrade to rustls-platform-verifier 0.4 by @djc in #4087
- Upgrade thiserror to 2 by @djc in #4088
- fix: add missing close body tag by @Rustin170506 in #4090
- Upgrade to opentelemetry 0.27 by @djc in #4089
- feat: add nushell support by @LittleJianCH in #4078
- Add aliases for remove/uninstall/unset commands by @joshtriplett in #4093
- chore(deps): update remove-dir-all to 1.0 by @rbtcollins in #4095
- Prepare 1.28.0 release by @djc in #4079
- Prepare 1.28.0: step 2 by @djc in #4098
- feat: align website style with www.rust-lang.org for consistency by @Rustin170506 in #4080
- Update semver-compatible dependencies by @djc in #4107
- chore(deps): lock file maintenance by @renovate in #4108
- feat(cli/rustup-mode): allow
rustup docwith both a flag and a topic by @rami3l in #4070 - ci(windows): don't install
awscliviachocoby @rami3l in #4111 - docs(dev-guide/tracing): make "Adding instrumentation" a level-2 title by @rami3l in #4112
- chore(deps): lock file maintenance by @renovate in #4115
- chore(deps): lock file maintenance by @renovate in #4116
- Implement more complete backend selection by @djc in #4118
- ci(stable): fix build issues to prepare for v1.28.0 release by @rami3l in #4105
- fix(rustup-init/sh): don't emit "unknown macOS major version" for macOS v11+ by @rami3l in #4122
- fix(deps): update rust crate rustls-platform-verifier to 0.5 by @renovate in #4123
- drop unused dep or make them optional by @klensy in #4124
- chore(deps): lock file maintenance by @renovate in #4125
- docs(user-guide/installation): update "General tips" by @rami3l in #4126
- fix(ci): fix installation of
cargo-all-featuresby @rami3l in #4131 - chore(deps): lock file maintenance by @renovate in #4133
- feat(cli): show the toolchain path with
rustup show [active-toolchain] --verboseby @rami3l in #4130 - fix(deps): update rust crate itertools to 0.14 by @renovate in #4139
- fix(cli/rustup-mode)!: change
rustup doc --error_codesto--error-codesby @rami3l in #4142 - chore(deps): lock file maintenance by @renovate in #4144
- fix(cli/rustup-mode): err when trying to show the default/active toolchain but there is none by @rami3l in #4141
- Update Windows dependencies by @kennykerr in #4146
- docs(user-guide/components): add deprecation notice for
wasm32-wasiby @rami3l in #4149 - chore(deps): lock file maintenance by @renovate in #4153
- Use ARM based runners for ARM CI targets by @Kobzol in #4154
- ci(deploy-docs): install
mdbookwithinstall-actionby @rami3l in #4157 - ci(linux): use public ARM64 Linux runners by @rami3l in #4156
- ci(doc): fix stable build of
user-guideby @rami3l in #4158 - ci(schedule): promote to use the
stablejob list by @rami3l in #4160 - chore(deps): lock file maintenance by @renovate in #4161
- ci(doc): pin
mdbookand letrenovatebotupdate it by @rami3l in #4162 - fix(ci/doc): fix typo in renovate
datasourceby @rami3l in #4163 - chore(deps): lock file maintenance by @renovate in #4169
- Upgrade to rand 0.9 by @djc in #4172
- chore(deps): lock file maintenance by @renovate in #4174
- chore(deps): lock file maintenance by @renovate in #4180
- fix(component): normalize path separators by @rami3l in #4179
- feat(rustup-init/sh): add env var to print arch detection result by @rami3l in #4183
- chore(deps): lock file maintenance by @renovate in #4187
- fix(deps): update rust crate pulldown-cmark to 0.13 by @rami3l in #4188
- style(edition): migrate the codebase to the 2024 Style Edition by @rami3l in #4190
- build: migrate the codebase to the 2024 Language Edition by @rami3l in #4191
- refactor: improve binary suffix stripping by @Timmmm in #4193
- chore(deps): lock file maintenance by @renovate in #4194
- fix(deps): update rust crate windows-registry to 0.5.0 by @renovate in #4197
- chore(deps): update opentelemetry by @rami3l in #4199
- Add
TryFrom<Output>forSanitizedOutputby @smoelius in #4201 - Do not append
EXE_SUFFIXinConfig::cmdby @smoelius in #4200 - Have mocked cargo better adhere to cargo conventions by @smoelius in #4203
Full Changelog: https://github.com/rust-lang/rustup/compare/1.27.1...1.28.0
1.27.1 - 2024-04-14
This new Rustup release involves some minor bug fixes.
The headlines for this release are:
- Prebuilt Rustup binaries should be working on older macOS versions again.
rustup-initwill no longer fail whenfishis installed but~/.config/fish/conf.dhasn't been created.- Regressions regarding symlinked
RUSTUP_HOME/(toolchains|downloads|tmp)have been addressed.
Since the release of 1.27.0, the project has welcomed a total of 7 new contributors. Many thanks for your hard work, and we hope to see you again!
- Added the logging of
RUSTUP_UPDATE_ROOTandRUSTUP_DIST_(SERVER|ROOT)whenRUSTUP_DEBUGis set pr#3722
- Ensured that CI builds target macOS 10.12+ on x64 and macOS 11.0+ on arm64 pr#3710
- Fixed an error when writing to rcfiles by ensuring the creation of their parent dir(s) first pr#3712
- Fixed unexpected errors when
RUSTUP_HOME/(toolchains|downloads|tmp)is symlinked pr#3742 pr#3754 - Fixed an unexpected error when removing a component by component name with explicit target triple pr#3601
- Changed
RUSTUP_WINDOWS_PATH_ADD_BINto be false by default pr#3703 - Fixed incorrect color state after
ColorableTerminal::resetpr#3711 - Replaced
.withsourcein fish shell'ssource_stringpr#3715 - Fixed "component add" error message format pr#3724
- Fixed file paths in CI-generated
*.sha256files on *nix pr#3730 - Removed an unnecessary debug print pr#3734
- Disabled the "doc opening" output on
rustup doc --pathpr#3748 - Fixed the update of
DisplayVersionin the Windows registry onrustup self updatepr#3770 - Bumped a lot of dependencies to their latest versions pr#renovate-bot
Thanks go to:
- Anas (0x61nas)
- cuiyourong (cuiyourong)
- Dirkjan Ochtman (djc)
- Eric Huss (ehuss)
- eth3lbert (eth3lbert)
- hev (heiher)
- klensy (klensy)
- Chih Wang (ongchi)
- Adam (pie-flavor)
- rami3l (rami3l)
- Robert (rben01)
- Robert Collins (rbtcollins)
- Sun Bin (shandongbinzhou)
- Samuel Moelius (smoelius)
- vpochapuis (vpochapuis)
- Renovate Bot (renovate)
Full Changelog: https://github.com/rust-lang/rustup/compare/1.27.0...1.27.1
1.27.0 - 2024-03-08
This long-awaited Rustup release has gathered all the new features and fixes since April 2023. These changes include improvements in Rustup's maintainability, user experience, compatibility and documentation quality.
The headlines of this release are:
- Basic support for
fishshell has been added. - Support for the
loongarch64-unknown-linux-gnuhost platform has been added.
Also, it's worth mentioning that Dirkjan Ochtman and rami3l have joined the team and are coordinating this new release.
Finally, the project seems to have attracted a total of 23 new contributors within this release cycle. Looking forward to seeing you again in the future!
- Add basic support for
fishshell pr#3108 - Add the
RUSTUP_TERM_COLORenvironment variable to force the use of colored output pr#3435 - Improve
rustup-init.sh's compatibility withkshandzshpr#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
- Upgrade
clapto 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 stablepr#3548 - Rename
llvm-tools-previewcomponent tollvm-toolspr#3578 - Try using symlinks if possible on Windows pr#3687
- Bump a lot of dependencies to their latest versions pr#renovate-bot
Thanks go to:
- Anthony Perkins (acperkins)
- Tianqi (airstone42)
- Alex Gaynor (alex)
- Alex Hudspith (alexhudspith)
- Alan Somers (asomers)
- Brett (brettearle)
- Burak Emir (burakemir)
- Chris Denton (ChrisDenton)
- cui fliter (cuishuang)
- Dirkjan Ochtman (djc)
- Dezhi Wu (dzvon)
- Eric Swanson (ericswanson-dfinity)
- Prikshit Gautam (gautamprikshit1)
- hev (heiher)
- 二手掉包工程师 (hi-rustin)
- Kamila Borowska (KamilaBorowska)
- klensy (klensy)
- Jakub Beránek (Kobzol)
- Kornel (kornelski)
- Matt Harding (majaha)
- Mathias Brossard (mbrossard)
- Christian Thackston (nan60)
- Ruohui Wang (noirgif)
- Olivier Lemasle (olivierlemasle)
- Chih Wang (ongchi)
- Pavel Roskin (proski)
- rami3l (rami3l)
- Robert Collins (rbtcollins)
- Sandesh Pyakurel (Sandesh-Pyakurel)
- Waffle Maybe (WaffleLapkin)
- Jubilee (workingjubilee)
- WÁNG Xuěruì (xen0n)
- Yerkebulan Tulibergenov (yerke)
- Renovate Bot (renovate)
Full Changelog: https://github.com/rust-lang/rustup/compare/1.26.0...1.27.0
1.26.0 - 2023-04-05
This version of Rustup involves a significant number of internal refactors, both in terms of the Rustup code and its tests.
The headlines for this release are:
- Add rust-analyzer as a proxy of rustup. Now you can call
rust-analyzerand 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 keyscommand. 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.
In addition to a lot of work on the codebase itself, due to the length of time since the last release this one has a record number of contributors and we thank you all for your efforts and time.
Rather than list every single merged PR since the last release, we have pulled out a number of highlights to include in this changelog entry. For everything else, please review the repository.
- Added
rust-analyzeras 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
upas an alias of theupdatecommand 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
- Bump the
clapdependency 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.lockwith 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
Thanks go to:
- Daniel Silverstone (kinnison)
- Sabrina Jewson (SabrinaJewson)
- Robert Collins (rbtcollins)
- chansuke (chansuke)
- Shamil (shamilsan)
- Oli Lalonde (olalonde)
- 二手掉包工程师 (hi-rustin)
- Eric Huss (ehuss)
- J Balint BIRO (jbalintbiro)
- Easton Pillay (jedieaston)
- zhaixiaojuan (zhaixiaojuan)
- Chris Denton (ChrisDenton)
- Martin Geisler (mgeisler)
- Lucio Franco (LucioFranco)
- Nicholas Bishop (nicholasbishop)
- SADIK KUZU (sadikkuzu)
- darkyshiny (darkyshiny)
- René Dudfield (illume)
- Noritada Kobayashi (noritada)
- Mohammad AlSaleh (MoSal)
- Dustin Martin (dmartin)
- Ville Skyttä (scop)
- Tshepang Mbambo (tshepang)
- Illia Bobyr (ilya-bobyr)
- Vincent Rischmann (vrischmann)
- Alexander (Alovchin91)
- Daniel Brotsky (brotskydotcom)
- zohnannor (zohnannor)
- Joshua Nelson (jyn514)
- Prikshit Gautam (gautamprikshit1)
- Dylan Thacker-Smith (dylanahsmith)
- Jan David (jdno)
- Aurora (lilith13666)
- Pietro Albini (pietroalbini)
- Renovate Bot (renovate-bot)
1.25.2 - 2023-02-01
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.
Thanks go to:
- Pietro Albini
- Daniel Silverstone
1.25.1 - 2022-07-12
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.
Thanks go to:
- Joshua Nelson
- Manish Goregaokar
- Robert Collins
1.25.0 - 2022-07-11
This version of Rustup involves a significant number of internal cleanups, both in terms of the Rustup code and its documentation. In addition to a lot of work on the codebase itself, due to the length of time since the last release this one has a record number of contributors and we thank you all for your efforts and time.
Rather than list every single merged PR since the last release, we have pulled out a number of highlights to include in this changelog entry. For everything else, please review the repository.
- Added
rust-gdbguito the proxy list pr#2811 - Support
rustup default noneas 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
RUSTCandRUSTDOCenvironment variables for proxied child processes pr#2958 - Added offer to auto-install VS 2022 pr#2954
- Added
--verbosemode forrustup showpr#2992 - Added support for
--force-non-hostto more subcommands pr#2968
- Updated the
openercrate used forrustup-docpr#2792 - Changed the recursion limit for tool/proxy invocation to 20 pr#2812
- Updated to newer
effective-limitscrate to reduce "sysinfo not supported" errors pr#2817 - Handle
-ymore robustly inrustup-init.shpr#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.shpr#2869 - Better handle busybox's wget in
rustup-init.shpr#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}/bintoPATHunless it's missing pr#2978
Thanks go to:
- 二手掉包工程师 (hi-rustin)
- Brian Bowman (Seeker14491)
- Jon Gjengset (jonho)
- pierwill
- Daniel Silverstone (kinnison)
- Robert Collins (rbtcollins)
- Alan Somers (asomers)
- Brennan Vincent (umanwizard)
- Joshua Nelson (jyn514)
- Eric Huss (ehuss)
- Will Bush (willbush)
- Thad Guidry (thadguidry)
- Alexander Lovchin (alovchin91)
- zoodirector
- Takayuki Nakata (giraffate)
- Yusuke Abe (chansuke)
- Wyatt Carss (wcarss)
- Sondre Aasemoen (sondr3)
- facklambda
- Chad Dougherty (crd477)
- Noritada Kobayashi (noritada)
- Milan (mdaverde)
- Pat Sier (pjsier)
- Matt Keeter (mkeeter)
- Alex Macleod (alexendoo)
- Sathwik Matsa (sathwikmatsa)
- Kushal Das (kushaldas)
- Justus Winter (teythoon)
- k900
- Nicolas Ambram (nico-abram)
- Connor Slade (basicprogrammer10)
- Yerkebulan Tulibergenov (yerke)
- Caleb Cartwright (calebcartwright)
- Matthias Beyer (matthiasbeyer)
- spacemaniac
- Alex Touchet (atouchet)
- Guillaume Gomez (guillaumegomez)
- Chris Denton (chrisdenton)
- Thomas Orozco (krallin)
- cui fliter (cuishuang)
- Martin Nordholts (enselic)
- Emil Gardström (emilgardis)
- Arlo Siemsen (arlosi)
1.24.3 - 2021-05-31
This patch release focuses 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 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-updateall the time. pr#2763
- We no longer delete the top level of
$RUSTUP_HOME/tmpand$RUSTUP_HOME/downloadmeaning 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
Thanks go to:
- Ian Jackson
- Alexander (asv7c2)
- pierwill
- 二手掉包工程师 (hi-rustin)
- Robert Collins
- Daniel Silverstone
1.24.2 - 2021-05-05
This patch release primarily exists to work around a problem discovered on some Windows (and potentially other) systems where a combination of factors, including suspected allocator behaviour, led to Rustup failing to install certain toolchains. The symptom users observed was a failure to allocate 1677732 bytes: a chunk used for unpacking very large files. We hope this is fixed in a combination of pr#2750 and pr#2756.
In addition to that, we also:
- SHA256 links on the download page so that you can verify your downloads if you want to be certain. pr#2719
- Added
--verbosetorustup show active-toolchainto also display the version of the compiler for the toolchain. pr#2710 - We now support
1.xinstallation channel names for versions 1.0 through 1.8 by hardcoding1.x.0since they lack patch releases. pr#2758
- 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-stdis missing for a given target, we lead you tocargo build -Z build-stdas a remediation. pr#2732 - Improved the documentation around
settings.tomllocations. pr#2698 - Internal improvements around retrying removal of files. pr#2752
Thanks go to:
- 二手掉包工程师 (hi-rustin)
- Robert Collins
- Daniel Silverstone
- Joshua Nelson
- João Marcos Bezerra
- Carol (Nichols || Goulding)
- Josh Rotenberg
- Martijn Gribnau
- pierwill
1.24.1 - 2021-04-27
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.
1.24.0 - 2021-04-27
This release is mostly a bugfix and quality of life improvement release. However the headlines for this release are:
- Support of
rust-toolchain.tomlas 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.
- 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 checkwe now report possiblerustupupgrades too. pr#2615 - We detect and warn if you try and install on an
x32system since for now Rust isn't hostable on that. pr#2622 - We do, however, support
gnux32as 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-toolchainasrust-toolchain.tomlpr#2653 - We prompt harder when checking for the MSVC tooling on Windows now. pr#2529
- Experimental support for
zstdcompressed tarballs in channels. NOTE, this does not mean channels will magically gainzstdcompressed component files any time soon. pr#2676 - Register
rustupwith 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
pathrather than a toolchain channel in therust-toolchain.tomlfile. pr#2678
rustup-initnow 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
profileinrust-toolchain's TOML form pr#2586 - We now use
.instead ofsourceto 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
mktempinvocation, this should makerustup-init.shmore 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/crossproject 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
rustupwith an unsupportedarg0-- 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.
- Added notes about Powershell to proxies documentation pr#2592
- Various updates to the
rustupmanual build process including pr#2628 - Small fixes on how to build
rustupdocumentation pr#2641 - We clarified the message around restarting the shell when installing pr#2684
Thanks go to:
- SHA Miao
- est31
- Andrew Norton
- Gareth Hubball
- 二手掉包工程师 (hi-rustin)
- Tudor Brindus
- Eduard Miller
- Daniel Alley
- наб (nabijaczleweli)
- Eric Huss
- chansuke
- skim (sl4m)
- Joshua Nelson
- kellda
- Alex Chan
- Philipp Oppermann
- Michael Cooper
- Aloïs Micard
- Gurkenglas
- Vasili (3point2)
- Jakub Stasiak
- Robert Collins
- Jubilee (workingjubilee)
- Avery Harnish
1.23.1 - 2020-12-01
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.
Finally, the illumos binary is now part of the release properly.
Thanks go to:
- Élie Roudninski
- Jeroen Ooms
- Jake Goulding
- Joshua M. Clulow
- Neil Mitchell
- Richard Gomes
1.23.0 - 2020-11-27
The main points for this release are that rustup now supports a number of new
host platforms, most importantly of which is aarch64-apple-darwin for the new
Apple M1 based devices, and that we support a new structured format for the
rust-toolchain file. You can find more information
in the new book format documentation.
It is now also possible to install a particular release of the compiler as a
two-part version number. If you do this, then the release channel will only
update if there is a patch release of the compiler. For example, if you ran
rustup toolchain install 1.48 at the time of this release of rustup you
would end up with a toolchain called 1.48 which contained 1.48.0. If
subsequently 1.48.1 were released, a rustup update would update your 1.48
from 1.48.0 to 1.48.1.
As always, there were more changes than described below, thanks to everyone who contributed to this release. Highlights for this release are detailed below, but you can always see the full list of changes via the Git repository.
- 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-muslpr#2493 - Support added for
aarch64-apple-darwinpr#2521 - Support added for
x86_64-unknown-illumospr#2432 - You can now override the system-wide settings fallback path pr#2545
- Support for
major.minorchannels pr#2551
- Significant updates to our handling of
PATHupdating 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-toolchainfile 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
rustupis preinstalled with a toolchain already. pr#2410 - We do a better job of exiting gracefully in a number of circumstances. pr#2427
- The
reqwestbackend (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 installin case that's what you meant. pr#2534
- Aaron Loucks
- Aleksey Kladov
- Aurelia Dolo
- Camelid
- Chansuke
- Carol (Nichols || Goulding)
- Daniel Silverstone
- Dany Marcoux
- Eduard Miller
- Eduardo Broto
- Eric Huss
- Francesco Zardi
- FR Bimo
- Ivan Nejgebauer
- Ivan Tham
- Jake Goulding
- Jens Reidel
- Joshua M. Clulow
- Joshua Nelson
- Jubilee Young
- Leigh McCulloch
- Lzu Tao
- Matthias Krüger
- Matt Kraai
- Matt McKay
- Nick Ashley
- Pascal Hertleif
- Paul Lange
- Pietro Albini
- Robert Collins
- Stephen Muss
- Tom Eccles
1.22.1 - 2020-07-08
A regression in proxied behaviour slipped in due to a non-compatible change
in url slipping in 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.
- Ivan Nejgebauer
- Ben Chen
1.22.0 - 2020-06-30
Alongside a significant amount of internal refactoring and code updates, the highlights of this release include:
- We have switched to Github Actions to make our CI and release process more consistent.
- We've invested time in the flow when you reinstall
rustupatop an existing installation. - We've doubled down on discouraging the use of the internal-development-focussed
completeprofile. Please usedefaultorminimalunless you're trying to test/develop the Rust tooling itself. - We've made a number of subtle quality-of-life improvements around the CLI.
- Added a (provisionally unofficial) snap of
rustup - We've worked hard to improve a lot of the messages (error and informational) in the tool.
- We've increased internal timeouts and retries in an attempt to improve the situation for McAfee users.
- While it's not a change, we've documented that
rust-toolchainmust be UTF8 encoded.
While the changes spanned around 90 individual pull requests, here are the main changes and additions…
- Fixed various links to our repo and to the forge - #2173
- Improved OS detection (particularly darwin) in
rustup-init.sh- #2042 - Fixed bug where i686 installer on x86_64 windows would intend to install 64-bit but would actually install 32-bit toolchains by default. - #2186
- Increased width of copy box on rustup website - #2208
- When updating a toolchain, indicate the version you updated from as well. - #2152
- When installing atop an existing
rustupinstallation, we will now update the installed default toolchain, particularly we'll also try and install any additional targets or components specified - #2201 and #2339 - Fixed issue where
rustup docwouldn't work with custom toolchains - #2235 - In low-memory situations, attempt to unpack more conservatively - #2236
- Improved consistency in where
rustupwill auto-install a toolchain on use. - #2252 - Try to force strong cipher suites in
rustup-init.sh- #2287 - When skipping a
nightlyindicate all the missing components - #2316 - Increase timeout for rename retries - #2348
- Increased 'sanity limit' to account for MIPS binary size increases - #2363
- Fallback to non-threaded installation pathway on 1-CPU systems to improve chance that installation will succeed on Raspberry Pi - #2372
- It is now possible to install
rustupeven when there's an existingrustup.shinstallation, and we can install alongsiderustcorcargowithout necessarily forcing via-yby means of theRUSTUP_INIT_SKIP_EXISTENCE_CHECKSenvironment variable. - #2214 - Added the concept of a fallback settings file which will allow snaps, distro
packages, etc. to provide a default toolchain for users who have not passed
through the
rustup-initmanaged one-time question set. - #2244 - You can now specify multiple components in a single argument in the form
--component rls,rust-analysis,rust-srcwhen installing toolchains - #2239 - It is now possible to
snap install --classic rustupin theory (channel details may take some time to settle) - #1898 - Added indication of why overrides are happening when running
rustup show- #2312 - Added
riscv64gc-unknown-linux-gnusupport (note: There is still work to be done on the compiler etc before this will necessarily work) - #2313
- Alejandro Martinez Ruiz
- Alexander D'hoore
- Ben Chen
- Chris Denton
- Daniel Silverstone
- Evan Weiler
- Guillaume Gomez
- Harry Sarson
- Jacob Lifshay
- James Yang
- Joel Parker Henderson
- John Titor
- Jonas Platte
- Josh Stone
- Jubilee
- Kellda
- LeSeulArtichaut
- Linus Färnstrand
- LitoMore
- LIU An (劉安)
- Luciano Bestia
- Lzu Tao
- Manish Goregaokar
- Mingye Wang
- Montgomery Edwards
- Per Lundberg
- Pietro Albini
- Robert Collins
- Rudolf B.
- Solomon Ucko
- Stein Somers
- Tetsuharu Ohzeki
- Tom Eccles
- Trevor Arjeski
- Tshepang Lekhonkhobe
1.21.1 - 2019-12-19
A panic occurred if a rustup update was run with nothing to update and the
download directory was missing. This was harmless but could have confused some
automation jobs.
1.21.0 - 2019-12-19
In release 1.20.x profiles could incorrectly ascribe host-independent components
to the host architecture, resulting in surprising behaviour with rust-src.
We have corrected this and added mitigations which should
mean that as of this release, such incorrect ascriptions are supported and also
automatically corrected on toolchain update.
Due to the large number of confusions around the complete profile, we have
introduced a warning if you use it. It's really only meant for
developers of Rust, or those exploring particular issues in nightly.
There are also a large number of other changes, the highlights of which are below. Thanks to everyone who helped work on this release. Even if your changes are not listed below, they are still greatly appreciated.
- Download directory is cleaned up after successful full update.
- Bad
.partialdownloads will be cleaned up for you - Force installation of toolchain if install is automatic
- Switch to darker colours to improve terminal readability
- Attempt to be less surprising wrt. default-host during installation
rustup toolchain list --verbosenow correctly shows the paths- Fallback environment for non-cargo toolchains updated to match
rustc - Made human-readable units slightly more comprehensible
- Improved detection of armhf userland on aarch64 kernels
- Improved error message when rustc is detected on installation
- Added
--profilesupport torustup toolchain install - Added
+toolchainsupport torustupitself to match proxy functionality - Added ability to
rustup component add component-architecture - Added clear report when
rustup docis run withoutrust-docsavailable - Added
keyword:,primitive:, andmacro:prefix support torustup doc FOO - Added retry logic so that
rustupwill try and repeat interrupted downloads - Added
--allow-downgradesupport torustup toolchain install - Added display of previous version when upgrading channels
- Added support for local non-channel toolchains in rust-toolchain file
- Roman Frołow
- Jean Simard
- Lzu Tao
- Benjamin Chen
- Daniel Silverstone
- Jon Hoo
- Carlo Abelli
- Filip Demski
- Chris Tomlinson
- Kane Green
- Ralf Jung
- Yves Dorfsman
- Rudolf B
- Pietro Albini
- Takayuki Nakata
- Justus K
- Gilbert Röhrbein
- Friedel Ziegelmayer
- Robbie Clarken
- Tetsuharu OHZEKI
1.20.2 - 2019-10-16
One final tweak was needed to the force-installation of toolchains because otherwise components would be marked as installed when they were not.
Our apologies to anyone adversely affected by the 1.20.0/1 releases.
1.20.1 - 2019-10-16
This release was made to solve two problems spotted in 1.20.0
- Force installation of toolchain during
rustup-initto improve handling on non-tier-one platforms - Assume the
defaultprofile if a profile is missing from configuration which will solve a problem where distro-providedrustupbinaries did not upgrade the configuration properly
1.20.0 - 2019-10-15
- Toolchain listing now supports a verbose mode
- Improve zsh completions for cargo
- Updates/Installations of nightly now backtrack
- Improve handling of Ctrl+C on Windows
rustup whichnow supports--toolchain
- Added installation profiles
- Added
rustup check - Support for
--quietin most places - Support for adding components and targets during toolchain install
- Nick Cameron
- Andy McCaffrey
- Pietro Albini
- Benjamin Chen
- Artem Borisovskiy
- Jon Gjengset
- Lzu Tao
- Daniel Silverstone
- PicoJr
- Mitchell Hynes
- Matt Kantor
1.19.0 - 2019-09-09
- Fix race condition with some virus scanners
- UI improvements for race condition fix
- Improve home mismatch explanation
- Enable fully threaded IO for installs
- Improve look of rustup homepage
- Improve messaging if shell profile cannot be updated
- Improve messaging around directory names during install
- Disregard unavailable targets
- No longer provide non-panic backtraces by default
- Add support for
rustup target add all - Add
rustup show home - Add NetBSD target to CI
- Add x86_64 musl to CI
- Lzu Tao
- Gonzalo Brito Gadeschi
- Paul Oppenheimer
- Robert Collins
- KennyTM
- Daniel Silverstone
- Nicholas Parker
- Caleb Cartwright
- Josh Holland
- Charlie Saunders
- Wesley Van Melle
- Jason Cooke
- CrLF0710
- Brian Anderson
- Bryan Dady
- Fisher Darling
- Bjorn3
- Iku Iwasa
1.18.3 - 2019-05-22
- Improve performance by only opening terminfo once
- Use same webpage opening logic as cargo
- Report download duration on completion
- Reduce stat() usage in unpacking
- Buffer reads from tarfile during unpacking
- Buffer for hashing of dist content
- Don't set mtime on unpacked toolchain files
- UI consistency/improvement in download speeds
- Avoid blocking on CloseHandle
- Robert Collins (who has tirelessly worked to improve the performance of Rustup, particularly on Windows)
- Lucien Greathouse
- Filip Demski
- Peter Hrvola
- Bogdan Kulbida
- Srinivas Reddy Thatiparthy
- Sunjay Varma
- Lzu Tao (behind the scenes, lots of housekeeping and CI)
1.18.2 - 2019-05-02
- Fix local bash-completion directory path
- Handle stray toolchain hashes during install
- Update to env_proxy 0.3.1
- Improvements to release process around Windows versions
- Support listing installed targets only
- Added CI of CentOS 6 support for rustup-init.sh
- FAQ entry about not being able to update rustup on Windows
This release was made, in part, thanks to:
- Brian Ericson
- Onat Mercan
- Lzu Tao
- Takuto Ikuta
- Jason Williams
- Filip Demski
- Michael Maclean
- Daniel Silverstone
1.18.1 - 2019-04-25
- Fix panic when no default toolchain is installed
- Remove repeated CLI subcommands
- Detect s390x in rustup-init.sh
- Fallback to less secure curl/wget invocation
1.18.0 - 2019-04-22
- Output shell completions for cargo by
rustup completions <shell> cargo - Add
--embedded-bookflag torustup doc - Add --path option to
rustup override set
rustup defaultnow tells user if current directory is overriderustup-init: Force highest TLS version supported- Switch to git-testament rather than old
build.rs - Less copying during dist installation
- Improve error messages when missing nightly components
- Improve
rustup installerror message - Update Visual C++ install instructions, to link to Visual Studio 2019
- Use
DYLD_FALLBACK_LIBRARY_PATHfordylib_path_envvaron macOS - Improved documentation for shell completion enabling
- Added shellcheck and Travis folding
rustup-init.sh: Fix unset variable usage- Treat time in seconds as an integer for download times
- Fix man proxy in FreeBSD
- Fix networking failure after using socks5 proxy
- Fix
rustup showfails on terminal without color - Fix installation failed if
rustup-initis owned by another user - Fix panics with "Broken pipe" when using in a shell pipeline
- Document
--no-self-updateproperly - Clear line properly in download progress
- More download progress line clearing fixes
- Fix a bunch of clippy warnings/errors
1.17.0 - 2019-03-05
- Allow using inherited RUSTUP_UPDATE_ROOT variable in rustup-init.sh.
- Fix
utils::copy_filefor symlink. - Improve formatting of longer download times in download tracker
- Basic 2018 edition fix
- Update rustup-init.sh for 32bit powerpc userland
- Reformat the entire codebase using
cargo fmt - Support to open more documents directly in
rustup doc - Fix HumanReadable#fmt
- Add more detail error messages when installing with some components has failed.
- Fix a panic when a component is missing
- Update to use
dirs::home_dir() - Self update after updating a specific toolchain
- Add miri to rustup
- allow non-utf8 arguments to proxies
- rustup-dist: Use Download notifications to track install
- Deal cleanly with malformed default-host
- Better error message for missing binary
- Add tab completion instructions for PowerShell
- Add tab completion test for PowerShell
- When updating, show "removing old component" to avoid confusion
- Upgrade to Rust 2018 edition idioms
- Simplify host triplet passing code
- Remove telemetry
- Print default toolchain on
rustup defaultwithout arguments - Bring output of
rustup show active-toolchainandrustup defaultinto line with rest of rustup - Deprecate cURL
- Thread toolchain through to error message
- Add Listing of Installed Components (
rustup component list --installed) - Add
clippy-driveras a proxy - Remove the
rustup-win-installerdirectory
1.16.0 - 2018-12-06
1.15.0 - 2018-11-27
- More tweaks to renames
- Return Ok status when trying to add required component
- Use
renamesinstead ofrenameto match the actual manifest - Size optimizations: Build with LTO and alloc_system
- Use
openssl-srcfrom crates.io to link to OpenSSL - Change handling of renames
1.14.0 - 2018-10-04
- Fix Windows job management
- Preserve symlinks when installing
- Add
--toolchainoption torustup doc - Fix removing toolchain fail when update-hash does not exist
- Add note about installing the Windows SDK component
1.13.0 - 2018-07-16
Contributors: Jane Lusby
1.12.0 - 2018-07-07
- Add --path flag to 'rustup doc'
- Add flag to "rustup show" for active-toolchain
- Bring rustup.js and markup into alignment with rust-www
- Add caret after first installation question
- Add "rustup doc --reference"
- Update Visual C++ Build Tools URL
- Fix download indicator on OSes with newer ncurses package
- Remove components if they don't exist anymore during update
- Make sure rustup uses
utils::rename*consistently - Do not try to get CWD if not required
- Give correct error message if user tries to install an unavailable toolchain
- Fall back to wget if curl is not installed
- Added a link to all installers to the homepage
- Display helpful advice even with -y
- Use browser in BROWSER env if present for
doccommand - Update shebang to reflect bashisms
Contributors: Andrew Pennebaker, Who? Me?!, Matteo Bertini, mog422, Kasper Møller Andersen, Thibault Delor, Justin Worthe, TitanSnow, aimileus, Antonio Murdaca, Cyryl Płotnicki, Nick Cameron, Alex Crichton, Kornel, Stuart Dootson, Pietro Albini, Diggory Blake, Yuji Nakao, Johannes Hofmann, CrLF0710, Aaron Lee, Brian Anderson, Mateusz Mikuła, Segev Finer, Dan Aloni, Joeri van Ruth
1.11.0 - 2018-02-13
Contributors: Steffen Butzer
1.10.0 - 2018-01-25
Contributors: Nick Cameron, Steffen Butzer
1.9.0 - 2018-01-04
Contributors: Alex Crichton
1.8.0 - 2017-12-19
- Add
rustup run --install - Prevent
rustup updateto a toolchain withoutrustcorcargo - Add support for
rustfmtshims
Contributors: Alex Crichton, kennytm, Nick Cameron, Simon Sapin, Who? Me?!
1.7.0 - 2017-10-30
- Improve clarity of component errors
- Support
--default-toolchain none - Automatically install override toolchain when missing
Contributors: Aidan Hobson Sayers, Alan Du, Alex Crichton, Christoph Wurst, Jason Mobarak, Leon Isenberg, Simon Sapin, Vadim Petrochenkov
1.6.0 - 2017-08-30
- Fix support for s390x
- Fix
showso it displays helpful information if the active toolchain is not installed - Fix uninstalling toolchains with stale symlinks
- Replace the hyper backend with a reqwest downloading backend
- Consistently give a toolchain argument in the help text
- Use
execon Unix where possible to help manage Unix signals
Contributors: Alex Crichton, Chen Rotem Levy, Krishna Sundarram, Martin Geisler, Matt Brubeck, Matt Ickstadt, Michael Benfield, Michael Fletcher, Nick Cameron, Patrick Reisert, Ralf Jung, Sean McArthur, Steven Fackler
1.5.0 - 2017-06-24
- Rename references to multirust to rustup where applicable
- Update platform support in README
- Allow rustup to handle unavailable packages
- Update libz-sys and curl-sys
- Teach rustup to override the toolchain from a version file
- Update sha2 crate
- Check for unexpected cargo/rustc before install
- Update PATH in .bash_profile
Contributors: Allen Welkie, bors, Brian Anderson, Diggory Blake, Erick Tryzelaar, Ricardo Martins, Артём Павлов [Artyom Pavlov]
1.4.0 - 2017-06-09
- set_file_perms: if the file is already executable, keep it executable
- Disable man support on Windows
- VS 2017 updates
- Show version of rust being installed
- Detect MSVC 2017
- Use same precision as rustc for commit sha
- Fix prompt asking for msvc even though -y is provided
- README: fix rust build dir
- Add support for XZ-compressed packages
- Add PATH in post-install message when not modifying PATH
- Cleanup download-related code in the rustup_dist crate
- Increase Rust detection timeout to 3 seconds
- Suppress confusing NotADirectory error and show override missing
- Don't try to update archive toolchains
- Exit successfully on "update not yet available"
- Add a message when removing a component
- Use ShellExecute rather than start.exe to open docs on windows
- Clarify that rustup update updates rustup itself
- Ensure that intermediate directories exist when unpacking an entry
- Add the rust lib dir (containing std-.dll) to the path on windows
- Add x86_64-linux-android target
- Fix for help.rs suggestion
- Ignore remove_override_nonexistent on windows
- Update proxy setting docs
- Add sensible-browser to the browser list
- Added help for
rustup toolchain link
Contributors: Andrea Canciani, bors, Brian Anderson, CrazyMerlyn, Diggory Blake, Fabio B, James Elford, Jim McGrath, johnthagen, Josh Lee, Kim Christensen, Marco A L Barbosa, Mateusz Mikula, Matthew, Matt Ickstadt, Mikhail Modin, Patrick Deuster, pxdeu, Ralf Jung, Raphaël Huchet, Robert Vally, theindigamer, Tommy Ip, Xidorn Quan
1.3.0 - 2017-05-09
- Add armv8l support
- Update curl crate
- Fix inadvertent dependency on bash
- Update openssl-probe to 0.1.1
- zsh completions cleanup
- Alias 'rustup toolchain uninstall' to 'rustup uninstall'
- Fix a typo in PowerShell completion script help
- Enforce timeouts for reading rustc version
- Fix OpenSSL linkage by using the final install-directory in the build
Contributors: bors, Brian Anderson, Diggory Blake, Greg Alexander, James Elford, Jordan Hiltunen, Justin Noah, Kang Seonghoon, Kevin K, Marco A L Barbosa
1.2.0 - 2017-04-08
- Check ZDOTDIR when adding path to .zprofile
- Update links and install page to include android support
- Add bash completion guidance for macOS users
- Support partial downloads
- Don't crash if modifying multiple profile files
Contributors: Brian Anderson, James Elford, Jason Dreyzehner, Marco A L Barbosa, Wim Looman
1.1.0 - 2017-04-06
- Fix browser detection for Linux ppc64 and NetBSD
- Update windows info
- Update to markdown 0.2
- Make running program extension case insensitive
- Add MIPS/s390x builders (with PPC64 compilation fixed)
- Fix two missing quotes of download error message
- www: MIPS support and cleanups
- Update release instructions
- Don't set low speed limits for curl
- Attempt to fix msi build. Pin appveyor nightlies
- Stop defaulting to $PATH searches when the binary can't be found and causing infinite recursion
- Upgrade openssl
- Improve browser detection and install instructions
- Add android support to rustup-init.sh
- Add fallback to symlink if hardlink fails
- readme: add tmp dir hint to Contributing section
- Fixed link to the list of supported platforms
- Update job object code to match Cargo's
- Added argument-documentation to rustup-init.sh
- Add/remove multiple toolchains
- Remove curl usage from appveyor
- Store downloaded files in a persistent directory until installation
- Add android build support
- Fix up a bunch of things indicated by clippy
- Ensure librssl compatibility
- RLS support
- Add 'docs' alias
- Use correct name for undefined linked toolchain invocation
- zsh install support
- Add/remove multiple components+targets
- Better error message when not running in a tty
- Indent help text
- Document installing to a custom location using CARGO_HOME and RUSTUP_HOME environment variables
- Aggressive remove_dir_all
Contributors: Aarthi Janakiraman, Alex Burka, Alex Crichton, bors, Brian Anderson, Christian Muirhead, Christopher Armstrong, Daniel Lockyer, Diggory Blake, Evgenii Pashkin, Grissiom, James Elford, Luca Bruno, Lyuha, Manish Goregaokar, Marc-Antoine Perennou, Marco A L Barbosa, Mikhail Pak, Nick Cameron, polonez, Sam Marshall, Steve Klabnik, Tomáš Hübelbauer, topecongiro, Wang Xuerui
1.0.0 - 2016-12-15
Contributors: Alex Crichton, Andrew Koroluk, Arch, benaryorg, Benedikt Reinartz, Björn Steinbrink, bors, Boutin, Michael, Brian Anderson, Cam Swords, Chungmin Park, Corey Farwell, Daniel Keep, David Salter, Diggory Blake, Drew Fisher, Erick Tryzelaar, Florian Gilcher, geemili, Guillaume Fraux, Ivan Nejgebauer, Ivan Petkov, Jacob Shaffer, Jake Goldsborough, James Lucas, Jeremiah Peschka, jethrogb, Jian Zeng, Jimmy Cuadra, Joe Wilm, Jorge Aparicio, Josh Machol, Josh Stone, Julien Blanchard, Kai Noda, Kai Roßwag, Kamal Marhubi, Kevin K, Kevin Rauwolf, Kevin Yap, Knight, leonardo.yvens, llogiq, Marco A L Barbosa, Martin Pool, Matt Brubeck, mdinger, Michael DeWitt, Mika Attila, Nate Mara, NODA, Kai, Oliver Schneider, Patrick Reisert, Paul Padier, Ralph Giles, Raphael Cohn, Ri, Ricardo Martins, Ryan Havar, Ryan Kung, Severen Redwood, Tad Hardesty, Taylor Cramer, theindigamer, Tim Neumann, Tobias Bucher, trolleyman, Vadim Petrochenkov, Virgile Andreani, V Jackson, Vladimir, Wang Xuerui, Wayne Warren, Wesley Moore, Yasushi Abe, Y. T. Chung
0.7.0 - 2016-12-11
- Correctly "detect" host endianness on MIPS
- Add powershell completions
- Update toolchain used to build rustup
- Support probing MIPS64 n64 targets
- Support MIPS architectures in rustup-init.sh
- Automatically detect NetBSD during standard install
- Fix symlink creation on windows
- Search PATH for binaries run by
rustup run - Recursive tool invocations should invoke the proxy, not the tool directly
- Upgrade error-chain
- Add FAQ entry for downloading Rust source
- Rename ~/.multirust to ~/.rustup
- Remove some codegen hacks
- Update libc for MIPS64 host builds
- Default to MSVC on Windows
Contributors: Alex Crichton, Arch, bors, Brian Anderson, Diggory Blake, Kai Roßwag, Kevin K, Oliver Schneider, Ryan Havar, Tobias Bucher, Wang Xuerui
0.6.5 - 2016-11-04
- Update bundled curl code
- Remove old zsh completions
- Fix two small typos in the error descriptions
- Update README
- Fix name of bash completion directory
Contributors: Alex Crichton, Björn Steinbrink, Brian Anderson, Jian Zeng, Matt Brubeck
0.6.4 - 2016-10-24
- making rustup prepend cargo bin to path instead of append
- Use released version of rustls dependency
- Update OpenSSL
- Made outputting of ANSI terminal escapes codes defensive
- Adjusted rustup-init.sh need_cmd to add uname and remove printf
- Update to error-chain 0.5.0 to allow optional backtrace
- Fix variable naming in rustup-init.sh
- Update clap to fix --help formatting
- Add an FAQ entry about troubles with antivirus
- Clarify how rustup toolchain installation works on Windows
- Do not interpret commas when using "rustup run"
- Fix local declarations for zsh completions
- Fix checksum failures
- Treat an empty
CARGO_HOMEthe same as an unsetCARGO_HOME - Check stdout is a tty before using terminal features
- Add completion generation for zsh, bash and fish shells
Contributors: Alex Crichton, Andrew Koroluk, Brian Anderson, Chungmin Park, Diggory Blake, Guillaume Fraux, Jake Goldsborough, jethrogb, Kamal Marhubi, Kevin K, Kevin Rauwolf, Raphael Cohn, Ricardo Martins
0.6.3 - 2016-08-28
Contributors: Brian Anderson
0.6.2 - 2016-08-27
Contributors: Brian Anderson, Diggory Blake, Knight, Marco A L Barbosa
0.6.1 - 2016-08-24
Contributors: Brian Anderson, Diggory Blake
0.6.0 - 2016-08-23
- Print rustup version after update
- Don't spawn processes for copying
- Upgrade error-chain to 0.3
- Support telemetry with lots of output
- Remove empty directories after component uninstall
- Update rustup-init.sh for powerpc
- Switch builds to current nightly toolchain
- Add a WIP MSI installer
- Add
--pathand--nonexistentoptions torustup override unset - Add
componentsubcommand
Contributors: Alex Crichton, Brian Anderson, Diggory Blake, Ivan Nejgebauer Josh Machol, Julien Blanchard, Patrick Reisert, Ri, Tim Neumann
0.5.0 - 2016-07-30
- List custom toolchains in
rustup show - Add a usage example for local builds
- Read/Write impl rework for rustls
- Introduce
+TOOLCHAINsyntax for proxies - Add
rustup man - Try detecting sudo when running
rustup-init - Handle active custom toolchain in
rustup show
Contributors: Brian Anderson, Cam Swords, Daniel Keep, Diggory Blake, Florian Gilcher, Ivan Nejgebauer, theindigamer
0.4.0 - 2016-07-22
- Improve rustls CA certificate loading
- Detect ARMv7 CPUs without NEON extensions and treat as ARMv6
- Allow any toolchain to be specified as the default during rustup installation
- Add details about updating rustup to README
- Update libbacktrace to generate less filesystem thrashing on Windows
- Update gcc dep to fix building on MSVC
- Remove the multirust binary
- Use the env_proxy crate for proxy environment variable handling
- Set system-specific dynamic loader env var for command execution
- Hide telemetry command from top level help
- Add the "no-self-update" feature
- Update to error-chain 0.2.2
- Add HTTP proxy documentation to README
Contributors: Alex Crichton, Brian Anderson, Ivan Nejgebauer, Jimmy Cuadra, Martin Pool, Wesley Moore
0.3.0 - 2016-07-14
- Teach rustup to download manifests from the
/staging/directory. - Treat all HTTP client errors the same.
- Remove winapi replacement.
- Remove toolchain directory if initial toolchain install fails.
- Fallback to old download methods if server returns 403.
- Add preliminary rustls support.
- Add a hack to remediate checksum failure issues.
- Move error-chain out of tree.
- Remove uses of subcommand synonyms in the examples.
- Add
--yesas alias for-y. - Remove unavailable toolchains from
target list. - Add powerpc builds.
- Fix help text for
rustup update. - Remove noisy "rustup is up to date" message.
- Fix references to non-existent
.rustupdirectory. - When listing toolchains only list directories.
- rustup-init: remove dependency on
filecommand. - Link to rustup-init.sh in README.
- Improve docs for
set default-host.
Contributors: Alex Crichton, Brian Anderson, Drew Fisher, geemili, Ivan Petkov, James Lucas, jethrogb, Kevin Yap, leonardo.yvens, Michael DeWitt, Nate Mara, Virgile Andreani
0.2.0 - 2016-06-21
- Indicate correct path to remove in multirust upgrade instructions.
- Bring back optional hyper with proxy support.
- 'default' and 'update' heuristics for bare triples.
- Change upstream via $RUSTUP_DIST_SERVER.
- Fail with a nicer error message if /tmp is mounted noexec.
- Remove printfs from ~/.cargo/env.
- Reduce margin in installer text to 79 columns.
- Fix typos.
- Fix missing curly braces in error-chain docs.
- Fix downloads of builds without v2 manifests.
- Explain toolchains in
help install. - Compile on stable Rust.
- Fix spelling mistakes.
- Fix the toolchain command synonyms.
- Configurable host triples.
- Use a .toml file to store settings.
- Point PATH to toolchain/bin on Windows.
- Remove extra '.' in docs.
Contributors: Alex Crichton, benaryorg, Benedikt Reinartz, Boutin, Michael, Brian Anderson, Diggory Blake, Erick Tryzelaar, Ivan Nejgebauer, Jeremiah Peschka, Josh Stone, Knight, mdinger, Ryan Kung, Tad Hardesty
0.1.12 - 2016-05-12
0.1.11 - 2016-05-12
- Actually dispatch the
rustup installcommand. - Migrate to libcurl instead of hyper.
- Add error for downloading bogus versions.
0.1.10 - 2016-05-09
- Multiple cli improvements.
- Support HTTP protocol again.
- Improvements to welcome screen.
- Don't try to update non-tracking channels.
- Don't panic when NativeSslStream lock is poisoned.
- Fix multiple issues in schannel bindings
0.1.9 - 2016-05-07
- Do TLS hostname verification.
- Expand
rustup show. - Add
rustup doc. - Refuse to install if it looks like other Rust installations are present.
- Update www platform detection for FreeBSD.
- Fix color display during telemetry capture.
- Make it less of an error for the self-update hash to be wrong.
0.1.8 - 2016-04-28
- Initial telemetry implementation (disabled)
- Add hash to
--version - Improve download progress
- Completely overhaul error handling
- Add armv7l support to www
- Overhaul website