T Compiler Meeting Agenda 2026 01 22

T-compiler Meeting Agenda 2026-01-22

Announcements

  • Today Rust 1.93 release, blog post
  • 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 @Wesley Wiser so we can pass it along).

Other WG meetings

MCPs/FCPs

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Don’t try to evaluate const blocks during constant promotion” rust#150557
    • Authored by dianne
    • Visited last week, decided to leave it backport nominated but approve for the next cycle
  • No stable nominations for T-compiler this time.

T-types beta / T-types stable

  • No beta nominations for T-types this time.
  • 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

T-types

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

P-high regressions

P-high stable regressions

  • Two related regressions caught my attention:
    • “ICE in release builds from 1.90.0 onwards” rust#150263
    • “SignatureMismatch ICE” rust#146965
      • both seems to originate from #142625
      • There’s a pending patch (#150292) but it needs more work
      • Assigned P-high but unsure - maybe can we review?

P-high beta regressions

  • No P-high beta regressions this time.

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

Triage for 2026-01-19

Various changes in both direction, but not much has changed overall.

Triage done by @panstromek. Revision range: 840245e9..3d087e60

Summary:

(instructions:u)meanrangecount
Regressions (primary)0.6%[0.1%, 1.6%]21
Regressions (secondary)0.6%[0.0%, 2.6%]113
Improvements (primary)-0.3%[-2.1%, -0.2%]37
Improvements (secondary)-1.2%[-29.6%, -0.1%]37
All (primary)0.0%[-2.1%, 1.6%]58

3 Regressions, 4 Improvements, 7 Mixed; 6 of them in rollups 40 artifact comparisons made in total

Regressions

Rollup of 13 pull requests #151087 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.3%[0.1%, 0.4%]9
Improvements (primary)--0
Improvements (secondary)--0
All (primary)--0

I’m inclined to say this is mostly noise, but it’s not 100% clear to me. Previous PR was explicit optimization, so while this looks it could be return to default state in some cases, it could also be a legit regression. Some of those numbers also improve in next rollup (https://github.com/rust-lang/rust/pull/151107).

If this is a regression, then I’d expect https://github.com/rust-lang/rust/pull/151017 to be the cause, as we’ve already seen a few regressions from attribute parsing rework and based on detailed results, regressions are mostly in frontend (parse_crate, HIR and such) and in frontend-focused benchmarks. I personally don’t think we need to dig deeper into this, these are small stress tests and regressions are also small.

Rollup of 15 pull requests #151144 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)1.3%[0.5%, 2.1%]6
Improvements (primary)--0
Improvements (secondary)--0
All (primary)--0

Caused by https://github.com/rust-lang/rust/pull/150962, already triaged by @JonathanBrouwer. Discussion continues on the PR.

Only use SSA locals in SimplifyComparisonIntegral #150925 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.4%]3
Regressions (secondary)--0
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.3%[0.2%, 0.4%]3

This fixes miscompilation regression, and the perf impact was measured and discussed before merge, so I assume this result is expected.

Improvements

Fix perf of check_crate_level refactor #151015 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)--0
Improvements (secondary)-0.5%[-0.9%, -0.1%]14
All (primary)--0

Rollup of 11 pull requests #151107 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.0%[0.0%, 0.0%]1
Improvements (primary)-0.2%[-0.3%, -0.2%]4
Improvements (secondary)-0.2%[-0.3%, -0.1%]7
All (primary)-0.2%[-0.3%, -0.2%]4

resolve: In visit_scopes do not extract ctxt out of span unless necessary #150982 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.3%[-0.5%, -0.1%]59
Improvements (secondary)-0.4%[-0.7%, -0.2%]27
All (primary)-0.3%[-0.5%, -0.1%]59

rustdoc: Stop unconditionally evaluating the initializer of associated consts #151232 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.3%[-0.4%, -0.3%]2
Improvements (secondary)-14.8%[-29.6%, -0.0%]2
All (primary)-0.3%[-0.4%, -0.3%]2

Mixed

Dogfood -Zno-embed-metadata in the standard library #145343 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.9%[0.5%, 1.1%]5
Regressions (secondary)0.3%[0.1%, 0.8%]45
Improvements (primary)-0.3%[-0.3%, -0.2%]2
Improvements (secondary)-0.0%[-0.0%, -0.0%]1
All (primary)0.5%[-0.3%, 1.1%]7

Triaged by @Kobzol: “The tiny regressions are only noticeable on the smallest crates, they are caused by now loading both the .rmeta and .rlib files of stdlib.”

Rollup of 14 pull requests #151051 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.1%[0.1%, 0.2%]4
Regressions (secondary)0.2%[0.1%, 0.3%]13
Improvements (primary)--0
Improvements (secondary)-0.2%[-0.3%, -0.1%]2
All (primary)0.1%[0.1%, 0.2%]4

Caused by https://github.com/rust-lang/rust/pull/150934, already triaged by @JonathanBrouwer.

Explicitly export core and std macros #139493 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.5%[0.5%, 0.5%]1
Regressions (secondary)0.1%[0.0%, 0.5%]10
Improvements (primary)--0
Improvements (secondary)-0.1%[-0.1%, -0.1%]2
All (primary)0.5%[0.5%, 0.5%]1

Pre-merge results (https://github.com/rust-lang/rust/pull/139493#issuecomment-3336171110) roughly match post-merge results, so I assume the regression is expected here. Some of this could also be noise, especially include-blob.

avoid phi node for pointers flowing into Vec appends #130998 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.6%[0.1%, 1.2%]10
Regressions (secondary)0.2%[0.1%, 0.9%]8
Improvements (primary)-1.3%[-2.7%, -0.5%]3
Improvements (secondary)-1.4%[-4.3%, -0.3%]6
All (primary)0.2%[-2.7%, 1.2%]13

Some change like this was expected, but this was reverted for non-perf reasons, so I don’t think we need to investigate further at the moment.

Rollup of 2 pull requests #151151 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)1.4%[0.6%, 2.8%]3
Regressions (secondary)1.4%[0.3%, 4.5%]6
Improvements (primary)-0.7%[-1.1%, -0.6%]6
Improvements (secondary)-0.2%[-0.6%, -0.1%]5
All (primary)-0.0%[-1.1%, 2.8%]9

Revert of the previous PR, opposite effect. Quoting @Zalathar comment: “Perf changes appear to be the reverse of #130998 (comment), which is one of the PRs being reverted.”

Rollup of 8 pull requests #151291 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.1%, 0.6%]17
Regressions (secondary)0.5%[0.1%, 1.7%]41
Improvements (primary)-0.8%[-2.3%, -0.2%]4
Improvements (secondary)-0.4%[-2.1%, -0.2%]11
All (primary)0.0%[-2.3%, 0.6%]21

Caused by https://github.com/rust-lang/rust/pull/150955, which will be addressed in https://github.com/rust-lang/rust/pull/151376 and by https://github.com/rust-lang/rust/pull/148769, I’ll continue discussion there.

New MIR Pass: SsaRangePropagation #150309 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.4%]4
Regressions (secondary)0.2%[0.2%, 0.3%]2
Improvements (primary)-0.4%[-0.4%, -0.4%]1
Improvements (secondary)--0
All (primary)0.2%[-0.4%, 0.4%]5

pre-merge results roughly match the final results. Based on the assessment from https://github.com/rust-lang/rust/pull/150309#issuecomment-3718871578, I assume some small regressions in opt are expected.

Note that I can’t assess very well whether this is justified or not as I don’t have that much context. The original motivation for mir-opts was improving compile time, which is what I’m triaging here. From that standpoint this is now negative and it’s only acceptable if it later leads to more improvements.

As far as I can tell, the motivation here is to improve runtime performance, for which we don’t have much coverage in the benchmarks, so from that standpoint it’s also not obvious to me whether this is worth the cost. Somebody with more knowledge than me should make that judgement.

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

  • “mir-opt: Remove the workaround in UnreachableEnumBranching” rust#146544 (last review activity: 4 months ago)
    • cc @Nikita Popov
  • “Remove FromResidual param default” rust#147160
    • cc @scottmcm, plus maybe a look also from Miri folks (link) cc @RalfJ @lcnr
  • “Initial upstreaming of Rust ADBench implementations” rust#149126 (last review activity: 2 months ago)
    • cc @oli
  • “fix(compiler/rustc_target): set correct linker flags for wasm32v1-nonerust#145539 (last review activity: 4 months ago)
    • <2026-01-22 Thu> cc @bjorn3
  • “slice/ascii: Optimize eq_ignore_ascii_case with auto-vectorization” rust#147436 (last review activity: 3 months ago)
    • cc: @scottmcm

Next meetings’ agenda draft: hackmd link