Software 44801 Published by

Rustup 1.29.1 extending the concurrency overhaul from 1.29.0 with parallel pre-checks for updates and concurrent component installation across toolchains. Following the controversial 1.28.0 rollback, the t-rustup team is now taking a measured approach: direct rustup invocations will trigger deprecation warnings starting now, with full removal planned for the upcoming 1.30 release. New features include a rustup doc --serve flag for sandboxed environments, support for the aarch64-pc-windows-gnullvm platform, and fixes for stray temp files and Windows --default-host duplication. The 1.30 cycle will strip the curl backend in favor of reqwest/rustls and introduce XDG path support, so users with heavy direct-toolchain automation should review their scripts before the next major cycle.



Rustup 1.29.1 Ships With Concurrency Polish and the First Steps Toward Killing Implicit Installation

The t-rustup team released version 1.29.1 today, delivering another round of bug fixes and performance improvements to the Rust toolchain manager. If you've been using 1.29.0 since March, you've probably noticed the faster updates. This patch builds on that work while taking measured steps toward removing implicit toolchain installation, which is the feature that caused the most drama in rustup's recent history.

The biggest headline here is yet another layer on the parallel processing work that defined 1.29.0. When you run rustup update now, the tool checks all your installed toolchains concurrently before starting the actual download. Previously that was sequential. Same story for rustup component add install multiple components in one pass instead of one at a time.

FranciscoTGouveia, who originally landed the GSoC 2025 concurrency overhaul as a student contributor, is now a full team member. The work clearly paid off. The RUSTUP_CONCURRENT_DOWNLOADS environment variable (default 2) still controls the main download parallelism, but these pre-check improvements and multi-component installs squeeze out more efficiency from that setting.

Rust198

Implicit Installation Gets a Warning Shot

Here's where things get interesting. Rustup 1.29.1 adds deprecation warnings for implicit toolchain installation when you invoke rustup-init or rustup directly. The full removal is planned for 1.30.

Proxy invocations like rustc and cargo still trigger auto-install as before. The team specifically decided to preserve those, focusing only on non-proxy calls where auto-install is "clearly unnecessary."

If you're running scripts that call rustup directly instead of going through rustc, you'll start seeing warnings. The Inside Rust blog post from July outlines the plan: warnings in 1.29.1, full removal in 1.30 for direct calls only.

This is a lesson learned from the 1.28.0 debacle.

The One-Day Patch That Shook the Ecosystem

For those who don't remember, rustup 1.28.0 shipped on March 4, 2025, and removed implicit installation entirely. No opt-out. No warning period. Just gone.

The result was severe user frustration. Scripts broke. Workflows failed. The Rust team issued an explicit apology in the changelog: "we would like to sincerely apologize for the frustration this has caused."

One day later, on March 5, 2025, they released 1.28.1 restoring implicit installation as default with the RUSTUP_AUTO_INSTALL environment variable as an escape hatch. That's not how most toolchain managers handle breaking changes. Most ship a warning and wait a full release cycle.

This release takes the opposite approach. Warnings first. Removal later. The deprecation warnings in 1.29.1 give users months to adapt before 1.30 pulls the plug on direct rustup calls.

rustup doc --serveĀ for Sandboxed Environments

The new --serve flag on rustup doc starts a local HTTP server on 127.0.0.1 serving from the docs directory. This solves the problem where file:// URLs get blocked by sandboxed browsers in Docker setups, WSL with remote display, or other isolated environments.

The flag binds only to localhost and rejects path traversal attempts, so it's not exposing your filesystem. Binary size increases by about 198 KiB, which is roughly 1.45% of the total. The team used hyper for the HTTP server, promoting it from a dev-dependency to a regular one.

If you're working in containerized development environments, this will probably save you some headaches.

Other Notable Changes

The i686 Windows toolchains now require --force-non-host when installing on 64-bit Windows, matching how other cross-architecture installs work. This continues the host-incompatibility enforcement that started in 1.28.0.

Windows installers using rustup-init.sh under Cygwin or MSYS had a bug where --default-host could be passed twice on the command line. PR #4756 fixes that duplicate argument issue.

Cancelled installations using Ctrl-C no longer leave stray temporary files behind. You'll need to clean up manually less often.

The project also adopted "target tuple" instead of "target triple" for platform identifiers like x86_64-pc-windows-msvc. It's not a breaking change, --target flags remain unchanged, but you'll see the terminology shift in output and documentation.

New official platform support goes to aarch64-pc-windows-gnullvm, which is Windows on ARM with GNU libc. MSVC builds were already supported; this adds the GCC alternative.

What's Coming in 1.30

The team published their first "transparency" blog post in July outlining the 1.30 cycle. The curl download backend will be removed, leaving reqwest/rustls as the only supported stack. XDG path support from GSoC 2026 will land, along with update notifications and signing/mirroring support.

Artifact signing, process safety improvements, toolchain deduplication, and content verification are all on the radar. The JSON output mode and trusted directories feature are also planned.

How to Update

You can upgrade with rustup self update. The full release notes are linked from the official blog post.

Keep in mind that if you're running scripts that call rustup directly, you'll start seeing deprecation warnings now. Test those workflows before 1.30 ships and removes implicit installation for direct calls entirely.