Two separate changes, and the TWiR wording makes the second sound bigger than it is:
-
Unchanged
Cargo.lockfast path (#17301): Cargo used to deserialize both lockfiles and rebuild the resolution graph before checking whether the files were byte-for-byte equivalent. The merged change checks normalized line-by-line equality first; only changed files take the old semantic-compare path. The reportedcargo metadata --offline --lockedimprovement was ~2.7–3.5% on large workspaces. It changes no lock semantics, and mainly helps repeatedcargo metadata/cargo check/CI/Rust Analyzer invocations. -
New
build-dirlayout (#17272 / #15010): this is about intermediate artifacts, not your finaltarget/debug/foooutputs. Cargo is reorganizing.fingerprint, build-script outputs, deps, etc. by package plus build-unit hash instead of broad artifact-type directories. The immediate PR only fixes how the experiment is enabled by default on nightly (including Cargo’s own CI/bootstrap); it does not make stable Cargo switch layouts.
The medium-term goal is smaller independently cacheable/lockable units: less contention when Rust Analyzer runs cargo check beside cargo build, better shared/CI caching, and eventually more parallel Cargo processes. The near-term downside is tooling that pokes at undocumented target internals or assumes OUT_DIR/intermediate-artifact paths; those tools need testing against nightly. Stable users should see no change until a later stabilization, and the team has already treated the migration as something that may need rollback.