T-compiler Meeting Agenda 2026-06-18
Announcements
- :loudspeaker: :point_right: P-high review (compiler-team#900): time:2026-06-19T16:00:00+02:00
- P-high issue list is on HackMD: https://hackmd.io/CQmx-X5iTO6nf23Ng5uHtA
- 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-22T16:15:00+02:00 and time:2026-06-25T16:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- No new proposals this time.
- 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: 2 months ago) - “Add
-Zglobal-target-cpu” compiler-team#991 (Zulip) (last review activity: about 6 days ago) - “
{cwd}placeholder in –remap-path-prefix” compiler-team#998 ([Zulip](@rustbot label +major-change +T-compiler)) (last review activity: about 6 days ago)
- “group target modifier options under
- Pending FCP requests (check your boxes!)
- merge: Promote
wasm32-wasip3to Tier 2 (compiler-team#1001)- @|116266 @|124288 @|116107 @|119031 @|370197 @|343125
- no pending concerns
- merge: Stabilize stack-protector (rust#146369)
- @_|444933
- concerns: mitigation-enforcement (by Noratrieb), see also this comment
- concern should be resolved by #157941
- merge: Stabilize
-Zprofile-sample-use(rust#155942)- cc: @|119031 @|370197 @|343125
- no pending concerns
- merge: remove
box_patterns(rust#156749)- @_|116009
- concerns: crater (by traviscross)
- merge: enable eager
param_envnorm in new solver (rust#156976)- @|116266 @|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: inhibit-opts
- concern: impl-at-mir-level
- concern: lose-debuginfo-data
- “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) - “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) - “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) - “Fix trait method resolution on an adjusted never type” rust#156047
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- “Set requirements for windows-gnu” compiler-team#993 (Zulip)
- “Test new solver and polonius alpha on CI” compiler-team#996 (Zulip)
- 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 14 days ago)
- concern: needs-champion
- “Split the
-openbsd*targets by version” compiler-team#916 (Zulip) (last review activity: 8 months ago)- concern: version-churn
- concern: nonsystematic-breakage
- 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: 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: 4 months ago)- concern: fragmentation
- concern: complexity
- Finalized FCPs (disposition merge)
- No new finished FCP (disposition merge) this time.
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
- “Stabilize
-Zprofile-sample-use” rust#155942- (See FCP reminder)
- Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 63 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, 35 P-high, 100 P-medium, 30 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
- (T-types) #157617 is fixing that and is beta-nominated
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
This week we had quite a lot of changes, a few small regressions that were a bit tough to diagnose, but the week is largely positive, overall. Notably, we got one massive improvement on the next-solver benchmark in #156187, and a nice speedup for incremental in #157781.
Triage done by @panstromek. Revision range: f3ef3bd8..b5d46ecb
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.2%, 0.6%] | 22 |
| Regressions (secondary) | 0.5% | [0.1%, 2.0%] | 40 |
| Improvements (primary) | -1.8% | [-5.9%, -0.1%] | 125 |
| Improvements (secondary) | -3.8% | [-69.4%, -0.1%] | 90 |
| All (primary) | -1.5% | [-5.9%, 0.6%] | 147 |
1 Regression, 4 Improvements, 8 Mixed; 5 of them in rollups 28 artifact comparisons made in total
Regressions
Add a check for impossible predicates to trivial_const #156934 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.2%, 0.5%] | 10 |
| Regressions (secondary) | 0.4% | [0.2%, 0.7%] | 10 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.4% | [0.2%, 0.5%] | 10 |
This regression was justified pre-merge in https://github.com/rust-lang/rust/pull/156934#issuecomment-4588047527 by the author: ‘IMO the perf overhead is fine, all that the “regression” means is that the trival_const optimization is now a touch less of an improvement.’
Mixed
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 |
Two large-workspace regressions caused by https://github.com/rust-lang/rust/pull/148820 as noted in the comment by Jonathan.
I’m inclined to say that bitmaps regression is just its existing (somewhat chaotic) bimodality. But it also slightly regressed in https://github.com/rust-lang/rust/pull/148820 (below the significance threshold).
The secondary ones I’m not sure about. My other guess (except the ones that were already measured) would be https://github.com/rust-lang/rust/pull/154608. I’ve looked through the rest, and it seems mostly tests or diagnostic changes, which should not have any impact.
I started a perf run on https://github.com/rust-lang/rust/pull/154608. Otherwise, I don’t think there’s much to do. The secondary changes don’t seem to be big enough to dive deeper into this, in my opinion.
Rewrite rustc_span::symbol::Interner to avoid double hashing #157252 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.7% | [0.2%, 1.7%] | 6 |
| Improvements (primary) | -0.5% | [-0.7%, -0.2%] | 6 |
| Improvements (secondary) | -0.4% | [-1.8%, -0.2%] | 21 |
| All (primary) | -0.5% | [-0.7%, -0.2%] | 6 |
Improvements outweigh regressions. include-blob regression looks persistent, but a bit unexpected to me. It seems it’s metadata-related. Earlier comment noted it’s an LLVM codegen noise, but even benchmarks that don’t do codegen (doc) had regressed.
This was known before merge and accepted, so I’m marking it as triaged. On top of that, include-blob is a bit weird benchmark. I’d certainly like to know what happened there, though.
Rollup of 17 pull requests #157683 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.5% | [0.2%, 1.4%] | 23 |
| Improvements (primary) | -0.2% | [-0.3%, -0.2%] | 2 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.2% | [-0.3%, -0.2%] | 2 |
Caused by https://github.com/rust-lang/rust/pull/157683, already triaged by @JonathanBrouwer. No response on the PR, yet.
Rollup of 31 pull requests #157739 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.3%] | 7 |
| Regressions (secondary) | 0.2% | [0.2%, 0.3%] | 5 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.3% | [-0.3%, -0.3%] | 1 |
| All (primary) | 0.2% | [0.2%, 0.3%] | 7 |
Small acceptable regression caused by https://github.com/rust-lang/rust/pull/155527, as investigated by @JonathanBrouwer.
The rest is mostly caused by https://github.com/rust-lang/rust/pull/157647#issuecomment-4699736291 (part of the comptime experiment).
The clue is in the size:dep_graph metric which is a broad regression, similar in both perf runs. That PR adds a few thousand new query calls.
These kinds of regressions also show up the most on small incremental benchmarks that spend proportionally more time in metadata-related code, and that’s also the case here.
I left a note on the PR.
Build the dep-graph reverse index lazily, per DepKind #157319 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.3%] | 3 |
| Regressions (secondary) | 0.3% | [0.2%, 0.5%] | 6 |
| Improvements (primary) | -0.4% | [-0.7%, -0.2%] | 50 |
| Improvements (secondary) | -0.7% | [-2.7%, -0.2%] | 33 |
| All (primary) | -0.4% | [-0.7%, 0.3%] | 53 |
I don’t know what to do with this to be honest. Improvements seemingly outweigh regressions, but I’ll reiterate the concern from the Zoxc comment above:
If you untick the incr-unchanged filter, pretty much everything else is red (and non-significant results are also mostly red), including other metrics.
Judging this depends on how much do we weigh incr-unchanged improvements against other regressions.
I left a longer comment on the PR, asking for more opinions.
Rollup of 24 pull requests #157794 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 2 |
| Improvements (primary) | -0.4% | [-0.9%, -0.2%] | 12 |
| Improvements (secondary) | -0.2% | [-0.3%, -0.0%] | 2 |
| All (primary) | -0.4% | [-0.9%, -0.2%] | 12 |
Already triaged by @jhpratt: “The gains clearly outweigh the 2 minor secondary regressions, both of which are incr-unchanged.”
include-blob regression is bimodal noise. deeply-nested-multi looks related to metadata.
@Teor is also trying to address a small regression in https://github.com/rust-lang/rust/pull/157699, which might have been masked by improvements in the rollup.
See https://github.com/rust-lang/rust/pull/157794#issuecomment-4716299616 for more info.
Might also be related to deeply-nested-multi regression, because it regresses similar queries.
Do not eagerly normalize alias during coherence #157617 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.3%, 0.5%] | 6 |
| Regressions (secondary) | 0.4% | [0.3%, 0.5%] | 3 |
| Improvements (primary) | -0.2% | [-0.3%, -0.1%] | 4 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.2%] | 3 |
| All (primary) | 0.2% | [-0.3%, 0.5%] | 10 |
This PR fixes the regression from https://github.com/rust-lang/rust/pull/155767 and the primary results in nalgebra and diesel looks to be roughly inverse of the results on that PR.
It also fixes beta regression and is part of an important line of work on the type system. Given all that, I think the results are acceptable.
Introduce #[diagnostic::on_type_error(message)] #155200 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.4% | [0.2%, 1.7%] | 9 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.4% | [-0.4%, -0.3%] | 2 |
| All (primary) | - | - | 0 |
The regression in large-workspace looks like noise, but tt-muncher one looks real. Full opt and debug runs are noisy, but incr-unchanged, check and doc show clear regressions. Detailed results are all over the place (maybe the benchmark machine was noisy at the time), but eyeballing all of that, the regression seems to be somewhere in the frontend. Maybe metadata loading, maybe macro expansion?
I don’t understand how this PR could cause this, to be honest. tt-muncher is a stress test for declarative macros, I don’t see any related change here. Most of this code should be unused right now.
tt-muncher is a pathological stress test, so I don’t think this is worth a revert, but it’d be nice to know why it regressed. I left a note on the PR.
Improvements
- obligations_for_self_ty: skip irrelevant goals (recompute sub_root from stalled_vars) #156187 (Comparison Link)
- rustdoc: Cleanup and (micro-)optimize
print_where_clause#157874 (Comparison Link) - Rollup of 5 pull requests #157894 (Comparison Link)
- perf: reuse green-marking’s edge walk when promoting a node #157781 (Comparison Link)
Nominated Issues
- No I-compiler-nominated issues this time.
- 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)
- “Add regression test for #132767 (try_normalize_erasing_regions ICE)” rust#154792 (last review activity: 2 months ago)
- cc @Yuki Okushi
- “Enable split_debuginfo=packed/unpacked for RISC-V” rust#155135 (last review activity: 2 months ago)
- left a comment for @_TaKO8Ki in case they want to hand it to someone else
Next meetings’ agenda draft: hackmd link