T Compiler Meeting Agenda 2026 06 11

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

MCPs/FCPs

Beta regressions (being triaged, unprioritized)

(Maybe we can have a short look at these)

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_importsrust#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-compiler this time.

T-types beta / T-types stable

  • :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-types 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
    • PR #157617 opened (being being reviewed)

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

2026-06-09 Triage Log

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

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

T-compiler

  • No I-compiler-nominated issues this time.

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

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