T-compiler Meeting Agenda 2026-06-25
Announcements
- Rust dot release 1.96.1 (#158331) to close issue #158214 (see discussion)
- 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).
Other WG meetings
- @_Jana office hours time:2026-06-29T16:15:00+02:00 and time:2026-06-29T16:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Add testing for lint machinery at runtime” compiler-team#1004 (Zulip)
- “MCP: Stabilization strategy for rustc parallel frontend” compiler-team#1005 (Zulip)
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- “group target modifier options under
-T” compiler-team#980 (Zulip) (last review activity: about 2 weeks ago) - “
{cwd}placeholder in –remap-path-prefix” compiler-team#998 (Zulip) (last review activity: about 12 days ago)
- “group target modifier options under
- Pending FCP requests (check your boxes!)
- merge: Promote
wasm32-wasip3to Tier 2 (compiler-team#1001)- no pending concerns
- merge: Stabilize
-Zprofile-sample-use(rust#155942)- no pending concerns
- cc: @|116266 @|125250 @|119031 @|370197 @|343125 (if you can get a look at that)
- merge: Promote
- 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
- triage: Left a comment because I cannot make head or tail of its status
- “Promote tier 3 riscv32 ESP-IDF targets to tier 2” compiler-team#864 (Zulip)
- concern: documentation
- concern: continued-maintainer-interest
- triage: Left a comment almost 2 months ago asking for an update. Author(s) did not reply
- “Optimize
repr(Rust)enums by omitting tags in more cases involving uninhabited variants.” compiler-team#922 (Zulip) - “Desugar async blocks in HIR instead of MIR” compiler-team#997 (Zulip)
- “Single-byte counter support in coverage instrumentation” compiler-team#1002 (Zulip)
- “Rename the compiler files containing struct diagnostics to
diagnostics.rs” compiler-team#1003 (Zulip) - “enable eager
param_envnorm in new solver” rust#156976 - “infra: add policy covering mfa with hardware keys” rust-forge#1051
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- “Create new Tier 3 targets:
powerpc64le-unknown-none-softfloat,powerpc64-unknown-none-softfloat,powerpc-unknown-none-softfloat” compiler-team#988 (Zulip) - “Create a new Tier 3 target:
s390x-ibm-zos” compiler-team#992 (Zulip) - “Deny
todo!()in tidy” compiler-team#999 (Zulip)
- “Create new Tier 3 targets:
- MCPs blocked on unresolved concerns
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: 8 months ago)
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: 11 months ago)
- concern: proposal-wording
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: about 20 days ago)
- concern: needs-champion
- “Split the
-openbsd*targets by version” compiler-team#916 (Zulip) (last review activity: 8 months ago)- concern: nonsystematic-breakage
- concern: version-churn
- concern: why-not-ports-rustc
- “Stop bumping the bootstrap version on every rustc release” compiler-team#925 (Zulip) (last review activity: 4 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: 7 months ago)
- concern: lang
- “Publish
rustc_publiccrate v0.1 to crates.io” compiler-team#949 (Zulip) (last review activity: 3 months ago) - “Query
gitstate to get information on a currently ongoing rebase when encountering conflict markers” compiler-team#955 (Zulip) (last review activity: 4 months ago)- concern: not worth the complexity
- “Allow crates downstream of
rustc_middleto define queries” compiler-team#966 (Zulip) (last review activity: 4 months ago)- concern: complexity
- concern: fragmentation
- Finalized FCPs (disposition merge)
- [T-types] “Fix trait method resolution on an adjusted never type” rust#156047
Backport nominations
T-compiler beta / T-compiler stable
- No beta nominations for
T-compilerthis time. - No stable nominations for
T-compilerthis time.
PRs S-waiting-on-t-compiler
- “library: core: document layout guarantee of
TypeId” rust#148265 - “Removability of unused imports for traits seemingly conditional to markdown in docs” rust#155098
- T-compiler-nominated, opened a thread on Zulip
- Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 58 T-compiler P-high issues
- 0 P-critical, 1 P-high, 1 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 1 P-medium, 0 P-low regression-from-stable-to-nightly
- 1 P-critical, 33 P-high, 100 P-medium, 30 P-low regression-from-stable-to-stable
P-critical
- “Suspected miscompilation with
bool as u32” rust#158206- Fixed by #158214 (Rust dot release 1.96.1 going out today)
- No
P-criticalissues forT-typesthis time.
P-high regressions
- “1.97 beta regression: “conflicting implementations of trait”” rust#157407
- (T-types) Fixed by #157617
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
This week had a lot of big swings, with two significant perf regressions that are accepted because they unlock future features and perf improvements. We also saw large improvements in the next trait solver due to the performance optimization work happening there.
Triage done by @JonathanBrouwer with help from @Kobzol. Revision range: b5d46ecb..8b6558a0
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.9% | [0.2%, 2.7%] | 184 |
| Regressions (secondary) | 1.0% | [0.1%, 4.2%] | 160 |
| Improvements (primary) | -0.3% | [-0.3%, -0.2%] | 2 |
| Improvements (secondary) | -11.8% | [-69.9%, -0.2%] | 25 |
| All (primary) | 0.8% | [-0.3%, 2.7%] | 186 |
5 Regressions, 3 Improvements, 2 Mixed; 4 of them in rollups 30 artifact comparisons made in total
Regressions
Add unstable loop unrolling hint attributes #156816 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.1%, 0.3%] | 17 |
| Regressions (secondary) | 0.2% | [0.0%, 0.5%] | 22 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.2% | [0.1%, 0.3%] | 17 |
Regression caused by adding attribute information to Terminator, as this new information is needed to implement the #[unroll] attribute.
There doesn’t seem to be a way to get around this without seriously decreasing code quality.
Make lowering incremental, take 3/N #142830 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.8% | [0.1%, 2.7%] | 172 |
| Regressions (secondary) | 1.1% | [0.1%, 4.2%] | 105 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.4% | [-0.4%, -0.4%] | 1 |
| All (primary) | 0.8% | [0.1%, 2.7%] | 172 |
A perf regression caused adding more queries to the resolver. This has the potential to unlock new features and incremental perf improvements in the future. The perf regression is unavoidable without making this PR bitrot for a long time and much more complex. A lot of work has already gone into making the regression smaller.
Rollup of 13 pull requests #157991 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.7% | [0.2%, 3.0%] | 85 |
| Regressions (secondary) | 0.7% | [0.2%, 2.0%] | 72 |
| Improvements (primary) | -0.4% | [-0.5%, -0.3%] | 2 |
| Improvements (secondary) | -0.1% | [-0.2%, -0.1%] | 4 |
| All (primary) | 0.7% | [-0.5%, 3.0%] | 87 |
Caused by #157702 which was immediately reverted because of this and other problems.
Rollup of 8 pull requests #158145 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.6% | [0.2%, 1.6%] | 10 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -1.1% | [-1.1%, -1.1%] | 1 |
| All (primary) | - | - | 0 |
Caused by #158075, the author has been pinged but no reply yet.
Rollup of 3 pull requests #158162 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.3%, 0.8%] | 6 |
| Regressions (secondary) | 0.6% | [0.1%, 1.1%] | 21 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.4% | [0.3%, 0.8%] | 6 |
Caused by #157976, the author has been made aware and seems to be looking into it.
Improvements
- Outline part of
evaluate_goal_rawinto its own#[cold]function #158042 (Comparison Link) - Rollup of 2 pull requests #158104 (Comparison Link)
- Revert “Add expansion info to implied bounds” #158122 (Comparison Link)
Mixed
-Znext-solver Less normalizes-to janks #156619 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.8% | [0.8%, 0.9%] | 3 |
| Improvements (primary) | -0.3% | [-0.6%, -0.1%] | 16 |
| Improvements (secondary) | -1.2% | [-3.6%, -0.1%] | 20 |
| All (primary) | -0.3% | [-0.6%, -0.1%] | 16 |
This is mostly improvement and the regression only happens with wg-grammar with the second benchmark, with the next-solver.
With this PR, we need relatively lesser depth in nested goals when normalizing things,
which is usually a good thing but for wg-grammar this causes more goals to be visited.
More details in the PR.
Dont rerun stalled goals if erased runs succeeded* #157910 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.2% | [0.1%, 0.3%] | 4 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -40.8% | [-69.6%, -10.5%] | 6 |
| All (primary) | - | - | 0 |
Perf improvements seriously outweigh regressions. If I understand the change correctly, this is caused by adding new fast paths to the trait solver, which usually seriously improve performance but might sometimes be missed and minorly regress performance.
Nominated Issues
- “Removability of unused imports for traits seemingly conditional to markdown in docs” rust#155098
- (IIUC) seems more a generic question for the t-compiler, so opened a Zulip thread
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Use
horde’sSyncTablefor default query caches andCtxtInterners” rust#153826 (last review activity: 2 months ago)- cc @tako8ki
- “Support
u128/i128c-variadic arguments” rust#155429 (last review activity: 2 months ago)- cc @Trevor Gross
- “Move checking placeholder types in return types to
typeck” rust#153243 (last review activity: 2 months ago)- This PR design and motivation seems to have raised some concerns cc @fmease . How do you feel about it now?
Next meetings’ agenda draft: hackmd link