| 
1 | 1 | # Changelog  | 
2 | 2 | 
 
  | 
 | 3 | +## [1.29.0] - Unreleased  | 
 | 4 | + | 
 | 5 | +This new release of rustup comes with significant changes.  | 
 | 6 | + | 
 | 7 | +The headline feature is better concurrency for certain operations,  | 
 | 8 | +implemented by @FranciscoTGouveia within the scope of the GSoC 2025 event:  | 
 | 9 | + | 
 | 10 | +- `rustup check` will check for toolchain updates concurrently. [pr#4388]  | 
 | 11 | + | 
 | 12 | +- `rustup update` and `rustup toolchain` subcommands will download toolchain  | 
 | 13 | +  components concurrently. [pr#4436]   | 
 | 14 | + | 
 | 15 | +  - You can use the `RUSTUP_CONCURRENT_DOWNLOADS`  | 
 | 16 | +    environment variable to adjust the number of concurrent downloads to better  | 
 | 17 | +    reflect the needs of your specific environment. [pr#4455]  | 
 | 18 | + | 
 | 19 | +- `rustup` now uses `indicatif`-based progress bars for toolchain update  | 
 | 20 | +  checks and downloads. This provides not only a more async-friendly UI solution,  | 
 | 21 | +  but also a more consistent and visually appealing experience for various  | 
 | 22 | +  commands like `rustup check`, `rustup update`, and `rustup toolchain install`.  | 
 | 23 | +  [pr#4388] [pr#4426]  | 
 | 24 | + | 
 | 25 | +rustup now officially supports the following host platforms:  | 
 | 26 | + | 
 | 27 | +- `sparcv9-sun-solaris` [pr#4380]  | 
 | 28 | +- `x86_64-pc-solaris` [pr#4380]  | 
 | 29 | + | 
 | 30 | +This release also comes with other quality-of-life improvements, to name a few:  | 
 | 31 | + | 
 | 32 | +- When running rust-analyzer via a proxy, rustup will consider the  | 
 | 33 | +  `rust-analyzer` binary from `PATH` when the rustup-managed one is not found.  | 
 | 34 | +  [pr#4324]  | 
 | 35 | + | 
 | 36 | +- Empty environment variables are now treated as unset. This should help with  | 
 | 37 | +  resetting configuration values to default when an override is present.  | 
 | 38 | +  [pr#4422]  | 
 | 39 | + | 
 | 40 | +- Basic support for the `tcsh` shell has been added. [pr#4459]  | 
 | 41 | + | 
 | 42 | +[1.29.0]: https://github.com/rust-lang/rustup/releases/tag/1.29.0  | 
 | 43 | +[pr#4324]: https://github.com/rust-lang/rustup/pull/4324  | 
 | 44 | +[pr#4380]: https://github.com/rust-lang/rustup/pull/4380  | 
 | 45 | +[pr#4388]: https://github.com/rust-lang/rustup/pull/4388  | 
 | 46 | +[pr#4422]: https://github.com/rust-lang/rustup/pull/4422  | 
 | 47 | +[pr#4426]: https://github.com/rust-lang/rustup/pull/4426  | 
 | 48 | +[pr#4436]: https://github.com/rust-lang/rustup/pull/4436  | 
 | 49 | +[pr#4455]: https://github.com/rust-lang/rustup/pull/4455  | 
 | 50 | +[pr#4459]: https://github.com/rust-lang/rustup/pull/4459  | 
 | 51 | + | 
 | 52 | +### Detailed changes  | 
 | 53 | + | 
 | 54 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4321  | 
 | 55 | +* docs(changelog): mirror changes from the release announcement, take 2 by @rami3l in https://github.com/rust-lang/rustup/pull/4322  | 
 | 56 | +* deps: update aws-lc-rs to 1.13.1 by @ognevny in https://github.com/rust-lang/rustup/pull/4326  | 
 | 57 | +* feat(toolchain): consider external `rust-analyzer` when calling a proxy by @rami3l in https://github.com/rust-lang/rustup/pull/4324  | 
 | 58 | +* chore(deps): bump semver-compatible dependencies by @rami3l in https://github.com/rust-lang/rustup/pull/4329  | 
 | 59 | +* toolchain: hoist binary name conditionals out of fallback functions by @djc in https://github.com/rust-lang/rustup/pull/4330  | 
 | 60 | +* Fix cargo lints on Windows by @ChrisDenton in https://github.com/rust-lang/rustup/pull/4335  | 
 | 61 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4341  | 
 | 62 | +* Log versions during self updates by @djc in https://github.com/rust-lang/rustup/pull/4331  | 
 | 63 | +* feat(custom-toolchains): `rustup show` now reporting installed targets by @FranciscoTGouveia in https://github.com/rust-lang/rustup/pull/4333  | 
 | 64 | +* refactor(test): add new APIs for easier snapshot testing by @rami3l in https://github.com/rust-lang/rustup/pull/4334  | 
 | 65 | +* style(test): clarify uses of `snapbox::str![]` by @rami3l in https://github.com/rust-lang/rustup/pull/4342  | 
 | 66 | +* feat(self_update): add proxy sanity checks by @manyinsects in https://github.com/rust-lang/rustup/pull/4338  | 
 | 67 | +* rustup check: add exit status and no-self-update logic by @tjkirch in https://github.com/rust-lang/rustup/pull/4340  | 
 | 68 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4348  | 
 | 69 | +* fix(deps): update rust crate opener to 0.8.0 by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4346  | 
 | 70 | +* Skip manifest loading if there are no components/targets to check by @Kobzol in https://github.com/rust-lang/rustup/pull/4350  | 
 | 71 | +* feat(custom-toolchains): targets and components are now reported for custom toolchains by @FranciscoTGouveia in https://github.com/rust-lang/rustup/pull/4347  | 
 | 72 | +* Custom list tweaks by @djc in https://github.com/rust-lang/rustup/pull/4351  | 
 | 73 | +* test(cli-self-upd): migrate to `.expect()` APIs by @rami3l in https://github.com/rust-lang/rustup/pull/4343  | 
 | 74 | +* test(cli-paths): migrate to `.expect()` APIs by @rami3l in https://github.com/rust-lang/rustup/pull/4354  | 
 | 75 | +* Unset RUSTUP_AUTO_INSTALL for tests by @ChrisDenton in https://github.com/rust-lang/rustup/pull/4360  | 
 | 76 | +* test(cli-inst-interactive): migrate to `.expect()` APIs by @rami3l in https://github.com/rust-lang/rustup/pull/4353  | 
 | 77 | +* Increase Windows main thread stack size to 2mb by @ChrisDenton in https://github.com/rust-lang/rustup/pull/4362  | 
 | 78 | +* Clean up installed components/targets list tweaks by @djc in https://github.com/rust-lang/rustup/pull/4361  | 
 | 79 | +* test(cli-exact): migrate to `.expect()` APIs by @rami3l in https://github.com/rust-lang/rustup/pull/4352  | 
 | 80 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4357  | 
 | 81 | +* Update platforms to 3.6 by @djc in https://github.com/rust-lang/rustup/pull/4364  | 
 | 82 | +* Fix CI image names for downloading ARM and PowerPC artifacts by @Kobzol in https://github.com/rust-lang/rustup/pull/4368  | 
 | 83 | +* test(cli-rustup): migrate to `.expect()` APIs by @rami3l in https://github.com/rust-lang/rustup/pull/4365  | 
 | 84 | +* fix(deps): update opentelemetry by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4371  | 
 | 85 | +* test(download): serialize tests with proxy-sensitive URLs by @cuviper in https://github.com/rust-lang/rustup/pull/4372  | 
 | 86 | +* test(cli-misc): migrate to `.expect()` APIs by @rami3l in https://github.com/rust-lang/rustup/pull/4363  | 
 | 87 | +* test(cli-v1): migrate to `.expect()` APIs by @rami3l in https://github.com/rust-lang/rustup/pull/4366  | 
 | 88 | +* test(cli-v2): migrate to `.expect()` APIs by @rami3l in https://github.com/rust-lang/rustup/pull/4367  | 
 | 89 | +* Upgrade to rustls-platform-verifier 0.6 by @djc in https://github.com/rust-lang/rustup/pull/4373  | 
 | 90 | +* docs: mention the `Assert` APIs, add misc fixes by @rami3l in https://github.com/rust-lang/rustup/pull/4374  | 
 | 91 | +* Update bash completions instructions and test by @rickhg12hs in https://github.com/rust-lang/rustup/pull/4378  | 
 | 92 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4379  | 
 | 93 | +* test: finish migration to `.expect()` APIs by @rami3l in https://github.com/rust-lang/rustup/pull/4376  | 
 | 94 | +* add Solaris support by @psumbera in https://github.com/rust-lang/rustup/pull/4380  | 
 | 95 | +* Fix rustup-init.sh cputype check for sparcv9 by @psumbera in https://github.com/rust-lang/rustup/pull/4382  | 
 | 96 | +* docs(README): update CI status badge by @rami3l in https://github.com/rust-lang/rustup/pull/4383  | 
 | 97 | +* Emphasize that `llvm-tools` dist component is not subject to compiler stability guarantees by @jieyouxu in https://github.com/rust-lang/rustup/pull/4384  | 
 | 98 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4386  | 
 | 99 | +* Upgrade to windows-sys 0.60 by @djc in https://github.com/rust-lang/rustup/pull/4387  | 
 | 100 | +* Block broken snap curl by @konstin in https://github.com/rust-lang/rustup/pull/4389  | 
 | 101 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4390  | 
 | 102 | +* docs: replace Discord links by @rami3l in https://github.com/rust-lang/rustup/pull/4393  | 
 | 103 | +* ci(run): install `codegen-cli` with `cargo-binstall` by @rami3l in https://github.com/rust-lang/rustup/pull/4394  | 
 | 104 | +* feat(www): improve "copy" button style compatibility with Chromium by @rami3l in https://github.com/rust-lang/rustup/pull/4395  | 
 | 105 | +* fix(ci/run): specify target triple for bindgen-cli installation by @rami3l in https://github.com/rust-lang/rustup/pull/4398  | 
 | 106 | +* style: migrate the codebase to `let-chains` by @rami3l in https://github.com/rust-lang/rustup/pull/4397  | 
 | 107 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4399  | 
 | 108 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4402  | 
 | 109 | +* Check for updates concurrently by @FranciscoTGouveia in https://github.com/rust-lang/rustup/pull/4388  | 
 | 110 | +* Bump `toml` to 0.9 by @Kobzol in https://github.com/rust-lang/rustup/pull/4405  | 
 | 111 | +* Limit the default number of I/O threads by @ChrisDenton in https://github.com/rust-lang/rustup/pull/4407  | 
 | 112 | +* Introduce `RUSTUP_TERM_WIDTH` and `RUSTUP_TERM_PROGRESS_WHEN` by @FranciscoTGouveia in https://github.com/rust-lang/rustup/pull/4406  | 
 | 113 | +* Simplify updates by @djc in https://github.com/rust-lang/rustup/pull/4404  | 
 | 114 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4410  | 
 | 115 | +* fix(ci/docker): update `CC` name for `powerpc64le-unknown-linux-gnu` by @rami3l in https://github.com/rust-lang/rustup/pull/4411  | 
 | 116 | +* fix(toolchain/distributable): refine handling of known targets with no prebuilt artifacts by @rami3l in https://github.com/rust-lang/rustup/pull/4409  | 
 | 117 | +* Set a maximum thread limit for the `remove_dir_all` crate by @ChrisDenton in https://github.com/rust-lang/rustup/pull/4413  | 
 | 118 | +* opt(err): show renaming file error source by @Binlogo in https://github.com/rust-lang/rustup/pull/4414  | 
 | 119 | +* Limit Tokio worker threads to I/O thread count by @djc in https://github.com/rust-lang/rustup/pull/4417  | 
 | 120 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4418  | 
 | 121 | +* docs(user-guide/environment-variables): update description of `RUSTUP_IO_THREADS` by @rami3l in https://github.com/rust-lang/rustup/pull/4427  | 
 | 122 | +* ci(macos): run x64 workflows with Rosetta 2 by @rami3l in https://github.com/rust-lang/rustup/pull/4428  | 
 | 123 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4430  | 
 | 124 | +* Refactor the DownloadTracker in favor of `indicatif` by @FranciscoTGouveia in https://github.com/rust-lang/rustup/pull/4426  | 
 | 125 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4437  | 
 | 126 | +* test: detach snapshots from component installation order by @rami3l in https://github.com/rust-lang/rustup/pull/4435  | 
 | 127 | +* feat: improve error message for `rustup which` by @Bogay in https://github.com/rust-lang/rustup/pull/4429  | 
 | 128 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4441  | 
 | 129 | +* Introduce `RUSTUP_DOWNLOAD_TIMEOUT` to override the download timeout by @FranciscoTGouveia in https://github.com/rust-lang/rustup/pull/4440  | 
 | 130 | +* chore(deps): update actions/checkout action to v5 by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4443  | 
 | 131 | +* Justify the presence of an `.unwrap()` on getting the content of an `OnceLock` by @FranciscoTGouveia in https://github.com/rust-lang/rustup/pull/4444  | 
 | 132 | +* Concurrently download components of a toolchain by @FranciscoTGouveia in https://github.com/rust-lang/rustup/pull/4436  | 
 | 133 | +* Delete unnecessary Download(Pop/Push)Unit notifications by @FranciscoTGouveia in https://github.com/rust-lang/rustup/pull/4447  | 
 | 134 | +* ci(check): make installation of `taplo-cli` faster by @AudaciousAxiom in https://github.com/rust-lang/rustup/pull/4449  | 
 | 135 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4451  | 
 | 136 | +* Introduce `RUSTUP_CONCURRENT_DOWNLOADS` to control concurrency by @FranciscoTGouveia in https://github.com/rust-lang/rustup/pull/4450  | 
 | 137 | +* chore(deps): disable default features for zstd by @klensy in https://github.com/rust-lang/rustup/pull/4453  | 
 | 138 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4456  | 
 | 139 | +* Introduce a `Semaphore` to fully honor `RUSTUP_CONCURRENT_DOWNLOADS` by @FranciscoTGouveia in https://github.com/rust-lang/rustup/pull/4455  | 
 | 140 | +* Treat empty environment variables as unset by @djc in https://github.com/rust-lang/rustup/pull/4422  | 
 | 141 | +* Report the real elapsed time of a download instead of the cumulative time by @FranciscoTGouveia in https://github.com/rust-lang/rustup/pull/4460  | 
 | 142 | +* Replace non_empty_env_var() with Process::var_opt() by @djc in https://github.com/rust-lang/rustup/pull/4461  | 
 | 143 | +* feat(config): add support for `tcsh` shell by @cachebag in https://github.com/rust-lang/rustup/pull/4459  | 
 | 144 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4467  | 
 | 145 | +* Correct `DownloadTracker` reporting on retries and failures by @FranciscoTGouveia in https://github.com/rust-lang/rustup/pull/4466  | 
 | 146 | +* Remove hardcoded dependency to the master branch by @Kobzol in https://github.com/rust-lang/rustup/pull/4470  | 
 | 147 | +* feat(install): warn if default linker (`cc`) is missing from PATH by @cachebag in https://github.com/rust-lang/rustup/pull/4469  | 
 | 148 | +* chore(deps): update aws-actions/configure-aws-credentials action to v5 by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4472  | 
 | 149 | +* fix(cli/rustup_mode): use ASCII-compatible spinner by @rami3l in https://github.com/rust-lang/rustup/pull/4473  | 
 | 150 | +* chore(deps): lock file maintenance by @renovate[bot] in https://github.com/rust-lang/rustup/pull/4478  | 
 | 151 | +* Upgrade windows crates by @djc in https://github.com/rust-lang/rustup/pull/4479  | 
 | 152 | +* chore(deps/renovate): group version bumps for `windows-rs` crates by @rami3l in https://github.com/rust-lang/rustup/pull/4480  | 
 | 153 | +* feat: adjust default concurrent download count by @rami3l in https://github.com/rust-lang/rustup/pull/4474  | 
 | 154 | +* docs(README): link CI status badge to GitHub Actions panel by @rami3l in https://github.com/rust-lang/rustup/pull/4482  | 
 | 155 | +* docs(dev-guide): mention the arg0 override trick on welcome page by @rami3l in https://github.com/rust-lang/rustup/pull/4484  | 
 | 156 | +* chore(deps): lock file maintenance by @rami3l in https://github.com/rust-lang/rustup/pull/4486  | 
 | 157 | +* Fix link in the bug reporting template by @LingMan in https://github.com/rust-lang/rustup/pull/4487  | 
 | 158 | +* Remove unneeded paranthesees by @DasMatus in https://github.com/rust-lang/rustup/pull/4488  | 
 | 159 | +* chore(deps): lock file maintenance by @rami3l in https://github.com/rust-lang/rustup/pull/4492  | 
 | 160 | +* Further refactoring of self update logic by @djc in https://github.com/rust-lang/rustup/pull/4412  | 
 | 161 | +* Simplify package unpacking code by @djc in https://github.com/rust-lang/rustup/pull/4490  | 
 | 162 | +* refactor: remove redundant references by @rami3l in https://github.com/rust-lang/rustup/pull/4494  | 
 | 163 | +* Simplify component downloads by @djc in https://github.com/rust-lang/rustup/pull/4489  | 
 | 164 | +* Flatten notification enums by @djc in https://github.com/rust-lang/rustup/pull/4496  | 
 | 165 | +* tests: deduplicate distribution installation tests by @djc in https://github.com/rust-lang/rustup/pull/4495  | 
 | 166 | +* tests: use DistContext for dist::component tests by @djc in https://github.com/rust-lang/rustup/pull/4500  | 
 | 167 | +* Start removing Notification variants by @djc in https://github.com/rust-lang/rustup/pull/4499  | 
 | 168 | +* refactor: Remove unused ColorableTerminal::carriage_return by @epage in https://github.com/rust-lang/rustup/pull/4506  | 
 | 169 | +* refactor: Switch logging to anstyle by @epage in https://github.com/rust-lang/rustup/pull/4507  | 
 | 170 | +* Remove more Notification variants by @djc in https://github.com/rust-lang/rustup/pull/4501  | 
 | 171 | +* ci: use macOS Intel runners by @djc in https://github.com/rust-lang/rustup/pull/4509  | 
 | 172 | +* Upgrade opentelemetry dependencies by @djc in https://github.com/rust-lang/rustup/pull/4508  | 
 | 173 | +* Move the default branch from `master` to `main` by @Kobzol in https://github.com/rust-lang/rustup/pull/4511  | 
 | 174 | + | 
3 | 175 | ## [1.28.2] - 2025-05-05  | 
4 | 176 | 
 
  | 
5 | 177 | This new patch release has brought even more tiny fixes and improvements over the previous one.  | 
 | 
0 commit comments