T-compiler Meeting Agenda 2026-06-11
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).
Other WG meetings
- @_Jana office hours time:2026-06-11T16:15:00+02:00 and time:2026-06-15T16:00:00+02:00
- P-high review (compiler-team#900), tentative scheduling
- time:2026-06-19T16:00:00+02:00
- time:2026-06-26T16:00:00+02:00
- (who wants to participate? Send an invite also in #t-compiler?)
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Add
-Zglobal-target-cpu” compiler-team#991 (Zulip) - “
{cwd}placeholder in –remap-path-prefix” compiler-team#998 ([Zulip](@rustbot label +major-change +T-compiler))
- “Add
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: about 7 days ago)
- concern: needs-champion
- “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: 2 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: 3 months ago)- concern: fragmentation
- concern: complexity
- “group target modifier options under
-T” compiler-team#980 (Zulip) (last review activity: 2 months ago)
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: about 7 days ago)
- Pending FCP requests (check your boxes!)
- merge: Stabilize stack-protector (rust#146369)
- @|116266 @|426609 @_|444933
- concerns: mitigation-enforcement (by Noratrieb)
- merge: Stabilize
-Zprofile-sample-use(rust#155942)- @|116266 @|125250 @|116107 @|119031 @|116122 @|370197 @_|343125
- no pending concerns
- merge: Stabilize stack-protector (rust#146369)
- 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
- “Promote tier 3 riscv32 ESP-IDF targets to tier 2” compiler-team#864 (Zulip)
- concern: documentation
- concern: continued-maintainer-interest
- “Optimize
repr(Rust)enums by omitting tags in more cases involving uninhabited variants.” compiler-team#922 (Zulip) - “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) - “Set requirements for windows-gnu” compiler-team#993 (Zulip)
- “Add
-Zllvm-target-featuretarget modifier to directly set LLVM-level target features, and deprecate doing that with-Ctarget-feature” compiler-team#994 (Zulip) - “Test new solver and polonius alpha on CI” compiler-team#996 (Zulip)
- “Desugar async blocks in HIR instead of MIR” compiler-team#997 (Zulip)
- concern: back-to-the-future
- “Deny
todo!()in tidy” compiler-team#999 (Zulip) - “Clean up crate type names to fix dylib vs staticlib confusion” rust#153863
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- “Add flag to pass MSRV/
package.rust-versionfor use by lints” compiler-team#950 (Zulip) - “Add -Z dead-fn-elimination to skip codegen of BFS-unreachable functions” compiler-team#976 (Zulip)
- “Removing the unstable ptx linker flavor” compiler-team#990 (Zulip)
- “Add flag to pass MSRV/
- MCPs blocked on unresolved concerns
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: 8 months ago)
- concern: wont-stop-target-names-from-proliferating
- Author will close it (comment) after posting an RFC about target alias
- Did anyone encounter that yet?
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: 10 months ago)
- concern: proposal-wording
- pinged author (comment), they didn’t respond
- maybe close?
- “Split the
-openbsd*targets by version” compiler-team#916 (Zulip) (last review activity: 8 months ago)- concern: why-not-ports-rustc
- concern: nonsystematic-breakage
- concern: version-churn
- Some concerns were raised, unsure if the author could address them directly.
- @_Trevor Gross left a comment suggesting a more lightweight approach
- Maybe leave a ping to check for an update? I think I don’t see a clear agreement, is there anything I am missing?
- “Stop bumping the bootstrap version on every rustc release” compiler-team#925 (Zulip) (last review activity: 3 months ago)
- concern: infra-and-bootstrap-burden
- concern: we-like-using-the-features-we-ship
- Concerns are still unresolved, there is a general opposition to the proposal
- Feel candidate for closing
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: 8 months ago)
- Finalized FCPs (disposition merge)
- None
Beta regressions (being triaged, unprioritized)
(Maybe we can have a short look at these)
- 1.97 beta regression involving backtraces · Issue #157432 · rust-lang/rust
- can close this as accepted breaking of #151994 (maybe adding a
rel-noteslabel, cc @davidtwo as author), see comment
- can close this as accepted breaking of #151994 (maybe adding a
- 1.97 beta rustdoc regression: “queries overflow the depth limit!” · Issue #157411 · rust-lang/rust
- suspect dupe, cannot repro (ext. deps)
- maybe candidate for closing?
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “resolve: Partially revert “Remove a special case for dummy imports”” rust#157719
- Authored by petrochenkov, nominated by @_Jack Huey
- Partial revert to fix #157406
- Voting Zulip topic, the patch looks pretty small so probably no harm in backporting
- :beta: “resolve: Remove exported imports from
maybe_unused_trait_imports” rust#157713- Authored and nominated by petrochenkov
- Very small fix for #157420 (fixes a miscompile due to a misleading unused warning)
- Voting Zulip topic, the patch looks pretty small so probably no harm in backporting
- No stable nominations for
T-compilerthis time.
- :beta: “Do not eagerly normalize alias during coherence” rust#157617
- Authored by Shourya742
- Fix beta regression #157407 (P-high beta regression)
- Voting Zulip topic @_lcnr agrees, this would backport a fix to the coherence checking, discussed here
- No stable nominations for
T-typesthis time.
PRs S-waiting-on-t-compiler
- “Stabilize
-Zprofile-sample-use” rust#155942- In FCP since last week (comment), needs a look from T-compiler
- Issues in progress or waiting on other teams
- (Sent a few pings around to check for updates)
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 61 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
- 0 P-critical, 34 P-high, 100 P-medium, 32 P-low regression-from-stable-to-stable
P-critical
- No
P-criticalissues forT-compilerthis time.
- No
P-criticalissues forT-typesthis time.
P-high regressions
- “1.97 beta regression: “conflicting implementations of trait”” rust#157407
- PR #157617 opened (being being reviewed)
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
A fairly noisy week, with a bunch of small regressions contained within, leading to a slight increase on average in instruction counts. This week had a lot of large rollups, likely due to some CI problems, but thankfully many of those came with pre-triaged perf results by the time (thank you to those triagers!). Roughly similar slight regressions for cycles and wall times across the week.
Triage done by @simulacrum. Revision range: 4804ad7e..f3ef3bd8
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.5% | [0.1%, 2.0%] | 124 |
| Regressions (secondary) | 1.2% | [0.1%, 9.9%] | 116 |
| Improvements (primary) | -0.5% | [-0.8%, -0.3%] | 4 |
| Improvements (secondary) | -1.7% | [-9.9%, -0.1%] | 41 |
| All (primary) | 0.4% | [-0.8%, 2.0%] | 128 |
2 Regressions, 0 Improvements, 10 Mixed; 5 of them in rollups 32 artifact comparisons made in total
Regressions
Rollup of 25 pull requests #157558 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.1%, 0.2%] | 3 |
| Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 3 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.2% | [0.1%, 0.2%] | 3 |
“mir_build: Add an extra intermediate step in MIR building for patterns” appears to be the root cause of small regressions. Regressions are fairly small in magnitude and only affect two benchmarks, so not investigating further.
Optimize checked_ilog and pow when base is a power of two #147250 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.6% | [0.3%, 0.7%] | 4 |
| Regressions (secondary) | 0.4% | [0.4%, 0.4%] | 1 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.6% | [0.3%, 0.7%] | 4 |
It’s not clear what the root cause for the regressions is, though they seem repeatable across multiple perf runs. It seems likely that there is some additional inlining or similar happening into the affected benchmarks, as the new code is more complicated.
Marking as triaged as the regressions are fairly small and debugging seems fairly painful, though potentially worthwhile in terms of identifying an opportunity for optimization.
Mixed
rustdoc: Fix trait impl ordering #157233 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.1%, 0.3%] | 2 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.2% | [0.1%, 0.3%] | 2 |
The regressions are very small and only on two benchmarks. The code is doing slightly more work now: a little more printing and an extra collect. I tried a few variations on the sorting and collecting but couldn’t improve things. I think it’s worth accepting this tiny regression for the improved behaviour.
Quoting @nnethercote’s comment.
Rollup of 12 pull requests #157398 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.1%, 0.3%] | 7 |
| Regressions (secondary) | 0.3% | [0.1%, 0.6%] | 41 |
| Improvements (primary) | -0.2% | [-0.4%, -0.2%] | 5 |
| Improvements (secondary) | -0.3% | [-0.6%, -0.0%] | 8 |
| All (primary) | -0.0% | [-0.4%, 0.3%] | 12 |
Suspecting rustdoc correctness fix in “rustdoc: IXCRE: Preserve sizedness bounds on type params belonging to the parent item” #157262 to be the root cause for majority of regressions based on the perf run from the unrolled build.
Introduce TypingMode::Codegen to avoid layout cycles on coroutines #145477 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.5% | [0.1%, 1.1%] | 51 |
| Regressions (secondary) | 1.5% | [0.1%, 9.9%] | 43 |
| Improvements (primary) | -0.5% | [-0.5%, -0.5%] | 1 |
| Improvements (secondary) | -0.4% | [-0.4%, -0.4%] | 1 |
| All (primary) | 0.4% | [-0.5%, 1.1%] | 52 |
This is a correctness/unblocking change so regressions are somewhat expected. There was already some work done on trying to get perf as reasonable as we can, so marking as triaged.
Fix an ICE in the vtable iteration for a trait reference in const eval when a supertrait is not implemented #156417 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.8% | [0.3%, 1.2%] | 19 |
| Improvements (primary) | -0.7% | [-0.7%, -0.7%] | 1 |
| Improvements (secondary) | -0.2% | [-0.6%, -0.1%] | 6 |
| All (primary) | -0.7% | [-0.7%, -0.7%] | 1 |
Correctness fix, so slight regressions are likely acceptable. Majority of the 19 regressions are concentrated in issue-46449 benchmark too (so not distinct kinds of code getting affected).
Avoid loading HIR for check_well_formed on type declarations #143328 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.4%] | 6 |
| Regressions (secondary) | 0.6% | [0.2%, 2.2%] | 9 |
| Improvements (primary) | -0.1% | [-0.1%, -0.1%] | 1 |
| Improvements (secondary) | -0.4% | [-0.4%, -0.3%] | 3 |
| All (primary) | 0.3% | [-0.1%, 0.4%] | 7 |
Marking as triaged as an intentionally roughly neutral change in preparation for larger refactoring, see this comment for more details.
interpret: add per-interpreter layout cache #157275 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 3 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -4.9% | [-11.7%, -0.5%] | 12 |
| All (primary) | - | - | 0 |
Perf results are a bit hard to interpret here, but mixed seems not entirely inaccurate. Note that this is expected to have more of an effect on cycles/wall times (though confusingly in practice we measure effect in opposite directions). See comment for some more investigation.
Rollup of 25 pull requests #157586 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 3 |
| Improvements (primary) | -0.3% | [-0.7%, -0.1%] | 8 |
| Improvements (secondary) | -0.2% | [-0.4%, -0.0%] | 3 |
| All (primary) | -0.3% | [-0.7%, -0.1%] | 8 |
Regressions are limited to incr-unchanged on unused-warnings. This is a huge rollup so it’s hard to say what’s causing it precisely, but I think it’s probably not worth digging further, especially if this is slower emitted diagnostics code (as seems not entirely implausible).
perf: use get_unchecked for TwoWaySearcher #155607 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.2%, 0.7%] | 4 |
| Regressions (secondary) | 0.4% | [0.1%, 0.9%] | 9 |
| Improvements (primary) | -1.6% | [-1.6%, -1.6%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.0% | [-1.6%, 0.7%] | 5 |
Pre-merge (with no changes) results were a slight improvement, and the regressions look like noise. Unclear what caused them but marking as triaged.
Rollup of 9 pull requests #157600 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.6% | [0.3%, 1.6%] | 15 |
| Regressions (secondary) | 1.1% | [0.3%, 1.8%] | 24 |
| Improvements (primary) | -0.4% | [-0.7%, -0.2%] | 5 |
| Improvements (secondary) | -0.4% | [-1.0%, -0.2%] | 11 |
| All (primary) | 0.4% | [-0.7%, 1.6%] | 20 |
Enqueued
a perf build on the contained PR implementing the unstable integer_casts
feature in std. My guess is that is causing the regressions which are
concentrated in doc scenarios; all non-doc results are small improvements and
look more like noise. We somewhat expect doc regressions when the standard
library gets larger, even if there’s no usage of the new functionality in
downstream crates.
Rollup of 13 pull requests #157616 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 1 |
| Regressions (secondary) | 0.3% | [0.3%, 0.5%] | 4 |
| Improvements (primary) | -0.3% | [-0.3%, -0.3%] | 1 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.1%] | 5 |
| All (primary) | -0.0% | [-0.3%, 0.2%] | 2 |
Enqueued
perf run on contained PR with “comptime” implementation. The regressed
benchmarks appear to all have more executions of the constness query which
strongly hints at this PR being responsible. This just landed, so it’s hard to
say how much of the regression is noise (of which we’ve had a lot in the last
week).
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Suggest only Span without source changes when source code is unavailable” rust#144585 (last review activity: 6 months ago)
- ripe for a review cc @Esteban Küber
- “Address redundant errors for missing crate for nested imports and later uses of crate” rust#153956 (last review activity: 2 months ago)
- [2026-06-11 Thu] cc @Ding Xiang Fei (wieDasDing)
- “Remove the empty variant of
VerifyBound” rust#152438 (last review activity: 2 months ago)- [2026-06-11 Thu] Unsure but I think this is waiting on the author
- “Fix check_expr_if to point to a more accurate location of the compilation error in some cases” rust#147484 (last review activity: 2 months ago)
- Thu] (for T-types) cc @_Jack Huey
Next meetings’ agenda draft: hackmd link