T-compiler Meeting Agenda 2026-07-23
Announcements
- 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!)
- “MCP: Add -Zasync-panic for binary size” compiler-team#1016 (Zulip)
- “Wasm proc macro support” compiler-team#1017 (Zulip)
- “Encode OpenBSD
-currentversion in targets’target_env” compiler-team#1018 (Zulip) - “Implement a naming convention for lint/diagnostic-only
rustc_attrs” compiler-team#1021 (Zulip) - “Promote riscv64a23-unknown-linux-gnu to Tier 2 with host tools” compiler-team#1022 (Zulip)
- “Parallel and scoped fat LTO” compiler-team#1023 (Zulip)
Old MCPs (not seconded, take a look. Traked in HackMD doc)
- “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 49 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: infra-and-bootstrap-burden
- concern: we-like-using-the-features-we-ship
- “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: 5 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: complexity
- concern: fragmentation
- “
{cwd}placeholder in –remap-path-prefix” compiler-team#998 ([Zulip](@rustbot label +major-change +T-compiler)) (last review activity: about 41 days ago) - “@moelwintun api” compiler-team#1000 (last review activity: about 42 days ago)
- “Single-byte counter support in coverage instrumentation” compiler-team#1002 (Zulip) (last review activity: about 15 days ago)
- concern: question-boolean-valued-counters
- concern: state-of-the-impl
- “Add testing for lint machinery at runtime” compiler-team#1004 (Zulip) (last review activity: about 27 days ago)
- “Move
LayoutandTyAndLayouttorustc_type_ir” compiler-team#1008 (Zulip) (last review activity: about 20 days ago)- concern: type_ir-is-a-pain
- “More strongly point people to link to Tracking Issues in the PR template” compiler-team#1009 (Zulip) (last review activity: about 13 days ago)
- “Add -Z stack-protector-guard” compiler-team#1013 (Zulip) (last review activity: about 6 days ago)
Pending FCP requests (check your boxes!)
- merge: Promote
wasm32-wasip3to Tier 2 (compiler-team#1001)- @|116266 @|119031 @_|370197
- no pending concerns
- merge: Drop tier 2
i686-pc-windows-gnuhost tools (compiler-team#1020)- @|116266 @|124288 @|125250 @|119031 @|116122 @|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)- @|116266 @|125250 @|119031 @|370197 @_|343125
- no pending concerns
- merge: Stabilize
optimizeattribute (rust#157273)- @|116266 @|116009 @|125270 @|370197 @_|343125
- concerns: should-apply-to-closures (by tmandry)
- merge: Ensure inferred let pattern types are well-formed (rust#157841)
- @|116266 @|124288 @|326176 @|232957
- no pending concerns
- merge: Shallow resolve ty and const vars to their root vars, attempt 2 (rust#158447)
- @|116266 @|124288 @|326176 @|232957
- no pending concerns
- merge: Promote
Things in FCP (make sure you’re good with it)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- concern: lose-debuginfo-data
- concern: inhibit-opts
- 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) - “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)
- “Enable
-Znext-solveron nightly by default for testing” compiler-team#1014 (Zulip) - “Enable
-Zpolonius=nexton nightly” compiler-team#1015 (Zulip) - “Emit
notewhen callingrustcwithout specifying an edition” compiler-team#1019 (Zulip) - “Add
raw_borrows_via_referenceslint” rust#138230 - “Avoid computing layout of enums with non-int discriminants” rust#157562
- “enable
unreachable_cfg_select_predicateslint as part ofunusedlint group” rust#159179 - “Stabilize passing 128-bit integers via vector registers with
asm!on x86” rust#159525 - “Split non-local
semicolon_in_expressions_from_macrosinto a separate lint” rust#159700
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
Accepted MCPs
- “Stabilizing the state of the debuginfo test suite” compiler-team#1012 (Zulip)
Finalized FCPs (disposition merge)
- [T-types] “Infer all anonymous lifetimes in assoc consts as
'static” rust#156508 - [T-compiler] “enable eager
param_envnorm in new solver” rust#156976 - [T-types] “consider subtyping when checking if an infer var is sized” rust#157820
- [T-types] “Infer all anonymous lifetimes in assoc consts as
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Fix string indexing in diagnostic format strings” rust#159470
- Authored by mejrs
- Voting Zulip topic, approved
- :beta: “Resolver: Record at least 1 ambiguous trait if main decl is not a trait.” rust#159599
- Authored by LorrensP-2158466
- Addresses #159476 (beta crater run regression, P-high)
- Voting Zulip topic, do we want to backport?
- No stable nominations for
T-compilerthis time.
PRs S-waiting-on-t-compiler
- “library: core: document layout guarantee of
TypeId” rust#148265 - “Stabilize
-Zprofile-sample-use” rust#155942 - Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 2 T-compiler P-critical issues
- 65 T-compiler P-high issues
- 0 P-critical, 4 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, 31 P-low regression-from-stable-to-stable
P-critical
- “dist-i686-msvc hang on lint-docs” rust#158378
- Demote Tier 2 > 3 discussed on Zulip MCP compiler-team#1020
- “Miscompilation with FFI
boolreturn type on AArch64” rust#159244- Should be fixed by #159317 (being reviewed)
- No
P-criticalissues forT-typesthis time.
P-high regressions
- “1.98 beta regression: “queries overflow the depth limit!”” rust#159427
- Was bisected, needs patching
- “1.98 beta regression due to name collision with
splat” rust#159428- See following section of the agenda “Discussions and FYIs”
- “1.98 beta regression due to name collision with
unroll” rust#159429- Again a name collision with an unstable attribute, see “Discussions and FYIs”
- “1.98 beta rustdoc crater regression: “no method named … found”” rust#159476
- Fixed by #159599
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
The two most notable changes this week were #159115, which resulted in pretty nice instruction count wins for full incremental builds on several benchmarks, and #159091, which enabled PGO for rustdoc, which makes it ~3-4% faster across the board.
There were two large rollups with tiny performance regressions, which made it difficult to find the offending PRs.
Triage done by @Kobzol. Revision range: 5503df87..d527bc9b
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.2%, 1.0%] | 40 |
| Regressions (secondary) | 0.7% | [0.2%, 4.6%] | 69 |
| Improvements (primary) | -2.0% | [-6.2%, -0.2%] | 136 |
| Improvements (secondary) | -2.6% | [-8.4%, -0.2%] | 119 |
| All (primary) | -1.4% | [-6.2%, 1.0%] | 176 |
2 Regressions, 3 Improvements, 6 Mixed; 4 of them in rollups 34 artifact comparisons made in total
Regressions
Rollup of 13 pull requests #159246 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.3%, 0.3%] | 3 |
| Regressions (secondary) | 0.3% | [0.2%, 0.5%] | 20 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.6% | [-0.6%, -0.6%] | 1 |
| All (primary) | 0.3% | [0.3%, 0.3%] | 3 |
- The regressions are tiny, but across the board.
- Started several performance runs.
- Not marking as triaged yet.
Shrink ast::Expr64 #158720 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.3%, 0.6%] | 3 |
| Regressions (secondary) | 0.6% | [0.3%, 1.3%] | 25 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.4% | [0.3%, 0.6%] | 3 |
- This change resulted in instruction count regressions, but cycle count and wall-time wins.
- Already marked as triaged.
Improvements
- Rollup of 3 pull requests #159367 (Comparison Link)
- Overhaul
CfgTrace/CfgAttrTracehandling #159266 (Comparison Link) - Get rid of
StructurallyRelateAliases#158731 (Comparison Link)
Mixed
Eagerly check for ambiguity in macro parsing #158976 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 10 |
| Improvements (primary) | -0.9% | [-2.3%, -0.3%] | 29 |
| Improvements (secondary) | -0.6% | [-0.9%, -0.4%] | 5 |
| All (primary) | -0.9% | [-2.3%, -0.3%] | 29 |
- More wins than regressions.
- Already marked as triaged.
Rollup of 22 pull requests #159293 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.5% | [0.2%, 0.8%] | 13 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.3% | [-0.3%, -0.2%] | 2 |
| All (primary) | - | - | 0 |
- There seems to be a very tiny regression across the board, which is a bit larger (but still small) on some secondary benchmarks.
- The
wg-grammartiny regression was likely caused by #158993. - Marked as triaged.
Rollup of 2 pull requests #159350 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.5%] | 7 |
| Regressions (secondary) | 0.3% | [0.2%, 0.5%] | 26 |
| Improvements (primary) | -0.8% | [-0.9%, -0.8%] | 4 |
| Improvements (secondary) | -2.9% | [-5.1%, -0.7%] | 2 |
| All (primary) | -0.1% | [-0.9%, 0.5%] | 11 |
- Small regression caused by standard library dependency upgrades in #159345.
- Already marked as triaged.
Move fast paths around to gain a bit of new-solver perf #158249 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 1.2% | [0.2%, 2.2%] | 11 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -5.1% | [-8.4%, -1.5%] | 6 |
| All (primary) | - | - | 0 |
- Only affects the next trait solver. Some benchmarks regressed, but there are larger wins.
- Marked as triaged.
Use PGO for rustdoc #159091 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 4.5% | [4.5%, 4.5%] | 1 |
| Improvements (primary) | -4.1% | [-6.3%, -1.6%] | 20 |
| Improvements (secondary) | -5.1% | [-8.1%, -2.0%] | 23 |
| All (primary) | -4.1% | [-6.3%, -1.6%] | 20 |
- Many wins on
docbenchmarks, expectedly, as this PR enabled PGO for rustdoc. - Only one regression on a secondary benchmark.
- Marked as triaged.
perf: dep_graph: deduplicate task reads with an epoch-filtered index recorder #159115 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.1%, 0.5%] | 11 |
| Regressions (secondary) | 0.2% | [0.2%, 0.3%] | 4 |
| Improvements (primary) | -1.8% | [-6.4%, -0.3%] | 101 |
| Improvements (secondary) | -1.5% | [-4.9%, -0.1%] | 96 |
| All (primary) | -1.6% | [-6.4%, 0.5%] | 112 |
- A lot of big wins, and only a few tiny regressions.
- Marked as triaged.
Discussions and FYIs
Beta crater run: 1.98 beta regression: Behavior change involving comparisons #159519
- Affects
spdxdue tospdxhavingPartialOrd<->Ordcontract violated (see comment)In particular:
PartialOrdonly compares theidfields, whereOrdcompares theidandor_laterfields. - Technically not-a-bug, filed issue with
spdx(https://github.com/EmbarkStudios/spdx/issues/95). However the crate does have fairly widespread usage.
- Affects
Beta crater run: two instances of introducing unstable {
#[splat],#[unroll]} built-in attributes in presence of user macro re-exports of the same name causing breakage in stable code due to new nameres ambiguity (#134963)#[splat]: #159428; crater impact assessment minimal (comment)#[unroll]: #159429; crater impact assessment minimal (comment)- Decision: accept breakage or beta-backport a rename mitigation {
#[splat]->#[rustc_splat],#[unroll]->#[rustc_unroll]} sincerust*-prefix attributes are reserved names. - Factors to consider:
- Unstable feature breaking stable code.
- Precedent:
#[align](#143834) and https://rust-lang.zulipchat.com/#narrow/channel/238009-t-compiler.2Fmeetings/topic/.5Bweekly.5D.202025-07-17/near/529289663, we decided to beta-backport a#[rustc_$name]rename for the#[align]case.
“LLD crash on mingw related to TLS destruction”
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
Will resume next week.
Next meeting’s agenda draft: hackmd link