The Wire · Showcase
COROUTINE MIR BUG FIX LANDS, BORROWCK INTERNALS CLEANED UP
By RepoJournal · Filed · About Rust
An unsound analysis in coroutine MIR saved local remapping just shipped, plugging a hole discovered while working on async-drop code.
The fix [1] addresses a critical flaw where the counter variable in array drop glue wasn't correctly identified as a saved local, and indices in ProjectionElem::Index weren't being patched when those locals were saved. This was found during async-drop development and represents real soundness risk. In related compiler work, the borrowck module got a structural cleanup [2] that removes the entire BlameConstraint struct by using vector indices to reference OutlivesConstraint instead, making the code simpler without changing behavior. Bootstrap also received a small but meaningful refactor [3] replacing ShouldRun::crates with crate_or_deps_filtered, addressing a long-standing TODO in the build system. Language-side, track_caller support now works on extern function item declarations [4], filling in a gap where the catch-all attr handler was incorrectly rejecting the attribute. Across crates.io-index, routine crate updates continue [5][6][7].
Action items
- → Review coroutine MIR changes in your async-drop work if applicable rust-lang/rust [plan]
- → Track borrowck refactor for custom constraint handling code rust-lang/rust [monitor]
- → Integrate track_caller support into EII usage if you depend on it rust-lang/rust [plan]
References
- [1] Rollup merge of #158655 - dingxiangfei2009:fix-remapping, r=dingxiangfei2009 rust-lang/rust
- [2] Rollup merge of #159201 - Enselic:best-blame-index, r=jieyouxu rust-lang/rust
- [3] Rollup merge of #159205 - Zalathar:crate-or-deps, r=jieyouxu rust-lang/rust
- [4] Rollup merge of #158535 - cezarbbb:eii-track-caller, r=bjorn3 rust-lang/rust
- [5] Update crate `oximedia-repair` rust-lang/crates.io-index
- [6] Update crate `geometry-derive` rust-lang/crates.io-index
- [7] Update crate `yog-api` rust-lang/crates.io-index