T Compiler Meeting Agenda 2026 06 18

T-compiler Meeting Agenda 2026-06-18

Announcements

Other WG meetings

MCPs/FCPs

Backport nominations

T-compiler beta / T-compiler stable

  • No beta nominations for T-compiler this time.
  • No stable nominations for T-compiler this time.

PRs S-waiting-on-t-compiler

T-compiler

Issues of Note

Short Summary

P-critical

T-compiler

  • No P-critical issues for T-compiler this time.

T-types

  • No P-critical issues for T-types this time.

P-high regressions

P-high beta 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-high nightly regressions this time.

Performance logs

2026-06-15 Triage Log

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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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

Nominated Issues

T-compiler

  • No I-compiler-nominated issues this time.

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • “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