$ the-wire · showcase
Cargo pipelining groundwork lands in rustc, crates.io trims listing queries
By RepoJournal · Filed · About Rust · Composed from the cited sources · methodology
Rust merged a compiler cleanup around fatal errors and delayed bugs that clears the way for more effective cargo build pipelining, while crates.io stopped loading full version records for crate listings.
The rustc rollup [1] carried a prerequisite for better cargo build pipelining: bjorn3's cleanup around fatal errors and delayed bugs [2] makes it easier to move compiler passes across `has_errors_or_delayed_bugs` calls, which the author says is "a prerequisite for a local change that improves the effectiveness of cargo build pipelining." The same rollup fixed a trait-system regression where re-instantiating the object bound's trait ref with infer lost the `'x: 'static` constraint [3].
Trait diagnostics got a fix: index suggestions no longer carry expression references [4], resolving the issue where the compiler emitted suggestions referencing expressions in that context.
On crates.io, the krate controllers now use `PartialVersion` to select only `crate_id`, `created_at`, and `num` when building crate listings, instead of loading complete version records [5]. The change reduces database transfer and decoding work, and the summary calculation still considers every non-yanked version, preserving the returned highest, highest stable, and newest versions [6].
cc-rs CI fixes the toolchain passed to actions-rust-lang/setup-rust-toolchain so it no longer includes architecture, moves to `*-latest` runners where applicable, updates CUDA keyring installation for Ubuntu 24.04 with a minimal build version of 12-6, repairs MinGW32 jobs, and drops an unused curl command for fetching the Rust channel SHA256 [7]. The crates.io index also picked up crate updates including `bicmath` [8], `inferadb-common-storage` [9], `slop-merkle-tree` [10], `packed-term-arena` [11], and `slop-utils` [12].
Action items
- → Watch rustc nightly for the fatal-error and delayed-bug cleanup that unblocks cargo pipelining work rust-lang/rust [monitor]
- → Pick up the crates.io listing query change if you maintain a crates.io fork rust-lang/crates.io [plan]
- → Update cc-rs CI toolchain config if you vendor the workflow rust-lang/cc-rs [plan]
References
- [1] Auto merge of #162592 - JonathanBrouwer:rollup-3q5U3Oo, r=JonathanBrouwer ↗ rust-lang/rust
- [2] Some cleanups around fatal errors and delayed bugs ↗ rust-lang/rust
- [3] re-equate the object bound's trait ref with the goal's when considering object bounds ↗ rust-lang/rust
- [4] fix(traits): Remove expression references from index suggestions ↗ rust-lang/rust
- [5] controllers/krate: Avoid loading unused version fields in listings ↗ rust-lang/crates.io
- [6] controllers/krate: Avoid loading unused version fields in listings (#14637) ↗ rust-lang/crates.io
- [7] Fix ci(test): make sure right toolchain is passed (#1892) ↗ rust-lang/cc-rs
- [8] Create crate `bicmath` ↗ rust-lang/crates.io-index
- [9] Update crate `inferadb-common-storage` ↗ rust-lang/crates.io-index
- [10] Update crate `slop-merkle-tree` ↗ rust-lang/crates.io-index
- [11] Update crate `packed-term-arena` ↗ rust-lang/crates.io-index
- [12] Update crate `slop-utils` ↗ rust-lang/crates.io-index