T-compiler Meeting Agenda 2026-07-30
Announcements
- P-high review triage (2nd run) tomorrow time:2026-07-31T16:00:00+02:00
- Issue list at https://hackmd.io/CQmx-X5iTO6nf23Ng5uHtA (will be updated)
- Reminder: if you see a PR/issue that seems like there might be legal implications due to copyright/IP/etc, please let us know (or at least message @davidtwco or @Boxy so we can pass it along).
MCPs/FCPs
New MCPs (take a look, see if you like them!)
- No new proposals this time.
Old MCPs (not seconded, take a look, tracking HackMD)
- “
{cwd}placeholder in –remap-path-prefix” compiler-team#998 ([Zulip](@rustbot label +major-change +T-compiler)) (last review activity: about 48 days ago) - “@moelwintun api” compiler-team#1000 (last review activity: about 49 days ago)
- “Add testing for lint machinery at runtime” compiler-team#1004 (Zulip) (last review activity: about 34 days ago)
- “More strongly point people to link to Tracking Issues in the PR template” compiler-team#1009 (Zulip) (last review activity: about 20 days ago)
- “Add -Z stack-protector-guard” compiler-team#1013 (Zulip) (last review activity: about 1 days ago)
- “MCP: Add -Zasync-panic for binary size” compiler-team#1016 (Zulip) (last review activity: about 6 days ago)
- “Encode OpenBSD
-currentversion in targets’target_env” compiler-team#1018 (Zulip) (last review activity: about 6 days ago) - “Implement a naming convention for lint/diagnostic-only
rustc_attrs” compiler-team#1021 (Zulip) (last review activity: about 6 days ago)
- “
Pending FCP requests (check your boxes!)
- merge: Drop tier 2
i686-pc-windows-gnuhost tools (compiler-team#1020)- @|124288 @|125250 @|119031 @|116122 @|370197 @|343125
- no pending concerns
- merge: Promote riscv64a23-unknown-linux-gnu to Tier 2 with host tools (compiler-team#1022)
- @|124288 @|125250 @|116107 @|370197 @_|343125
- no pending concerns
- merge: WF checks on closure arguments and improved type-test promotion. (rust#151510)
- @|124288 @|326176 @_|232957
- concerns: jobsteal crater regression fix (by lcnr)
- merge: Stabilize
-Zprofile-sample-use(rust#155942)- reminder cc: @|119031 @|370197 @|343125
- no pending concerns
- merge: Drop tier 2
Things in FCP (make sure you’re good with it)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- concern: inhibit-opts
- concern: lose-debuginfo-data
- concern: impl-at-mir-level
- “Optimize
repr(Rust)enums by omitting tags in more cases involving uninhabited variants.” compiler-team#922 (Zulip) - “group target modifier options under
-T” compiler-team#980 (Zulip) - “Promote
wasm32-wasip3to Tier 2” compiler-team#1001 (Zulip) - “Add
target_feature_available_at_call_site” compiler-team#1010 (Zulip)- concern: debugging-the-llvmir
- “Let the OS handle stack growth” compiler-team#1011 (Zulip)
- “Wasm proc macro support” compiler-team#1017 (Zulip)
- “Emit
notewhen callingrustcwithout specifying an edition” compiler-team#1019 (Zulip) - “lint against repeated repr attributes” rust#157036
- “Ensure inferred let pattern types are well-formed” rust#157841
- “Shallow resolve ty and const vars to their root vars, attempt 2” rust#158447
- “Stabilize passing 128-bit integers via vector registers with
asm!on x86” rust#159525 - “stabilize
c_variadic_naked_functions” rust#159746
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
Accepted MCPs
- “Enable
-Znext-solveron nightly by default for testing” compiler-team#1014 (Zulip) - “Enable
-Zpolonius=nexton nightly” compiler-team#1015 (Zulip)
- “Enable
MCPs blocked on unresolved concerns
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: 9 months ago)
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: 12 months ago)
- concern: proposal-wording
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: about 56 days ago)
- concern: needs-champion
- “Stop bumping the bootstrap version on every rustc release” compiler-team#925 (Zulip) (last review activity: 5 months ago)
- concern: we-like-using-the-features-we-ship
- concern: infra-and-bootstrap-burden
- “Doc comments and attributes on macro arms” compiler-team#935 (Zulip) (last review activity: 8 months ago)
- concern: lang
- “Publish
rustc_publiccrate v0.1 to crates.io” compiler-team#949 (Zulip) (last review activity: 4 months ago) - “Query
gitstate to get information on a currently ongoing rebase when encountering conflict markers” compiler-team#955 (Zulip) (last review activity: 6 months ago)- concern: not worth the complexity
- “Allow crates downstream of
rustc_middleto define queries” compiler-team#966 (Zulip) (last review activity: 5 months ago)- concern: fragmentation
- concern: complexity
- “Single-byte counter support in coverage instrumentation” compiler-team#1002 (Zulip) (last review activity: about 22 days ago)
- concern: question-boolean-valued-counters
- concern: state-of-the-impl
- “Move
LayoutandTyAndLayouttorustc_type_ir” compiler-team#1008 (Zulip) (last review activity: about 27 days ago)- concern: type_ir-is-a-pain
Finalized FCPs (disposition merge)
- None
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Rename splat to avoid stable name collisions” rust#159817
- Authored by teor2345
- Voting Zulip topic, unanimously approved
- :beta: “Rename
#[unroll]=>#[rustc_unroll]to mitigate names ambiguity” rust#160211- Authored by Jieyou
- Voting Zulip topic (just opened)
- No stable nominations for
T-compilerthis time.
PRs S-waiting-on-t-compiler
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 64 T-compiler P-high issues
- 0 P-critical, 3 P-high, 0 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 0 P-medium, 0 P-low regression-from-stable-to-nightly
- 0 P-critical, 32 P-high, 100 P-medium, 30 P-low regression-from-stable-to-stable
P-critical
- “dist-i686-msvc hang on lint-docs” rust#158378
- (being worked on, nothing to do)
- No
P-criticalissues forT-typesthis time.
(new) Stable regressions
Just a quick check:
-Cpassestransformations are missing from embedded bitcode with one codegen unit · Issue #159533- Any opinion or context about this issue?
- ICE: could not replace AliasTerm · Issue #159462 · rust-lang/rust
- a recent regression
- Large arm64 macOS debug binaries fail to exec since the v0 mangling default · Issue #159426 · rust-lang/rust
- Discussed on Zulip, we suggested mitigations but not a lot we can do. So maybe I’ll leave this open and remove I-priority?
P-high regressions
- “1.98 beta regression: “queries overflow the depth limit!”” rust#159427
- Discussion on Zulip
- In some similar cases (IIUC) of overflow error, we fixed the crates as per the suggestion ("
consider increasing the recursion limit"), unsure if this is the case here. Opinions? What should we do? (cc @cjgillot @oli)
- “1.98 beta regression due to name collision with
splat” rust#159428- Solved by renaming the attribute (#159817)
- “1.98 beta regression due to name collision with
unroll” rust#159429- Same reasoning, proposed fix #160211 (authored by @Jieyou Xu, thanks!)
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
Several large improvements landed in the past week:
- rustdoc is on average roughly 16% faster across all of our doc benchmarks:
- rustdoc: Only inline impls for local primitives, 7% faster doc builds
- rustdoc: Only synthesize auto/blanket impls for documented items, another 7% faster doc builds
- rustdoc: Only build extern trait impls if needed, another 10% faster doc builds
- Early removal of no-op panic handling in debug builds. This speeds up Cargo by ~4% in cycle count.
- Optimize escape_string_symbol() sped
up large
include_bytes!/include_str!through changes to string escaping, avoiding a regression in upcoming LLVM 23 upgrade.
Great to see so many improvements!
Triage done by @simulacrum. Revision range: d527bc9b..ad0c9dce
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 16.2% | [16.2%, 16.2%] | 1 |
| Regressions (secondary) | 0.4% | [0.1%, 0.6%] | 17 |
| Improvements (primary) | -3.3% | [-50.5%, -0.1%] | 143 |
| Improvements (secondary) | -8.8% | [-50.4%, -0.1%] | 137 |
| All (primary) | -3.1% | [-50.5%, 16.2%] | 144 |
2 Regressions, 7 Improvements, 5 Mixed; 5 of them in rollups 30 artifact comparisons made in total
Regressions
Rollup of 20 pull requests #159802 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.3%] | 20 |
| Regressions (secondary) | 0.4% | [0.2%, 0.6%] | 6 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.3% | [0.2%, 0.3%] | 20 |
Root caused to #150161, which
increases metadata / incremental dep graph and so causes regressions across the
board. @panstromek asked for followup from the author on whether that can be mitigated.
Rollup of 28 pull requests #159966 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.3%, 0.3%] | 6 |
| Regressions (secondary) | 0.4% | [0.2%, 0.6%] | 22 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.3% | [0.3%, 0.3%] | 6 |
Queued up builds on a few of the contained PRs which should hopefully narrow down root cause.
Improvements
- Use PGO for Cargo #159149 (Comparison Link)
- Resolve: more preperation work for parallelizing the import resolution loop #159440 (Comparison Link)
- Optimize escape_string_symbol() #159609 (Comparison Link)
This is being further iterated on in
#159916 to bring these
improvements to users without needing replacement of
escape_default().to_string() with a hand-coded version; that PR will bring
further improvements to include-blob.
- Apply RemoveNoopLandingPads post-monomorphization #143208 (Comparison Link)
- rustdoc: Only inline impls for local primitives #159721 (Comparison Link)
- Try to make FieldDef smaller #157986 (Comparison Link)
- rustdoc: Only synthesize auto/blanket impls for documented items #159779 (Comparison Link)
Mixed
Rollup of 14 pull requests #159634 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.4%, 0.4%] | 2 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 2 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.1% | [-0.2%, 0.4%] | 4 |
This seems like it’s probably noise - single affected benchmark, and mixed results (improvements and regressions). Not worth further followup.
rustdoc: Only build extern trait impls if needed #159623 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.4% | [0.6%, 2.2%] | 2 |
| Regressions (secondary) | 2.2% | [2.2%, 2.2%] | 1 |
| Improvements (primary) | -10.8% | [-30.8%, -1.7%] | 18 |
| Improvements (secondary) | -20.3% | [-31.4%, -4.9%] | 24 |
| All (primary) | -9.6% | [-30.8%, 2.2%] | 20 |
Improvements greatly outweigh the small regressions.
codegen: skip stores for entirely-uninit constant aggregate fields #157797 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 16.2% | [16.2%, 16.2%] | 1 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.3% | [-0.5%, -0.2%] | 8 |
| All (primary) | 16.2% | [16.2%, 16.2%] | 1 |
Perf looks clean and slightly improving things across the board. There is one regression (building cranelift with opts) that has a 16% compile-time perf hit entirely in LLVM, so this change tips the optimizations over the edge somewhere and causes lots of changes. I have not checked whether it produces better runtime code, but let’s land it regardless.
Quoting from a reviewer comment.
Rollup of 25 pull requests #159942 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.4% | [0.2%, 0.5%] | 4 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.2%] | 9 |
| All (primary) | - | - | 0 |
Regression has held up in subsequent PRs, appears to be limited to our large-workspace benchmark. This was deemed acceptable on the root cause PR (comment), and given the regression is small it seems OK.
Rollup of 14 pull requests #160003 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.8% | [0.1%, 1.3%] | 5 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.3%, -0.1%] | 4 |
| All (primary) | - | - | 0 |
Most likely new-solver specific regression coming from a bug fix #159840.
Nominated Issues
- “1.98 beta regressions involving ambiguous glob imports” rust#159432
- This crater run shows many more breaking crates (about 30, see comment) than the original PR crate run which was then used to inform making that breakage
- See triage comment and comment
- I (@apiraino) nominated this one, relaying @_theemathas question: should we have T-lang FCP these breaking changes?
- Describe approval needed for promoting/demoting between T2 w/ host tools <=> T2 w/out host tools? forge#1085
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Region inference: split results from RegionInferenceContext” rust#151688 (last review activity: 3 months ago)
- cc: @lcnr (perhaps author asks for feedback, can’t follow the thread, there are a few of review comments not resolved)
- “adds better error message for temporary value does not live long enough” rust#154810 (last review activity: 3 months ago)
- cc @Yuki Okushi
- “Use
horde’sSyncTablefor default query caches andCtxtInterners” rust#153826 (last review activity: 3 months ago)- cc @_TaKO8Ki
- “Move checking placeholder types in return types to
typeck” rust#153243 (last review activity: 3 months ago)- This PR design and motivation made @fmease raise some concerns (comment). @fmease how do you feel about it now?
Next meetings’ agenda draft: hackmd link