T Compiler Meeting Agenda 2025 08 21

T-compiler Meeting Agenda 2025-08-21

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 @Wesley Wiser so we can pass it along).

Other WG meetings

MCPs/FCPs

Backport nominations

T-compiler beta / T-compiler stable

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-team

T-compiler

Issues of Note

Short Summary

P-critical

T-compiler

  • pin!() has incorrect/unexpected drop order inside if-let.” rust#145328
    • See backports
  • “ICE (nightly): panicked at compiler/rustc_const_eval/src/util/type_name.rs:145:18: entered unreachable code” rust#145696
    • just opened, a fix in being authored by @nnethercote in #145700 (thanks!)

T-types

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

P-high regressions

P-high beta regressions

  • “E0275 is occuring in beta 1.90.0-beta.1 but not in stable 1.89.0” rust#145151
    • being taken care in #145395 by @lcnr (thanks!)

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2025-08-19

Lots of noise/bimodality this week. Overall though no major performance impacting changes landed.

Triage done by @simulacrum. Revision range: 6355cd39..239e8b1b

Summary:

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 1.2%]94
Regressions (secondary)0.4%[0.1%, 1.1%]48
Improvements (primary)-1.2%[-3.2%, -0.2%]16
Improvements (secondary)-0.3%[-0.5%, -0.2%]5
All (primary)0.1%[-3.2%, 1.2%]110

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

Regressions

Make no_mangle on foreign items explicit instead of implicit #144678 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.6%]8
Regressions (secondary)0.2%[0.1%, 0.5%]8
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.3%[0.2%, 0.6%]8

One extra query introduced, possibly to be removed at a future date with additional validation on attributes in an earlier stage of the compiler.

Improvements

Rollup of 13 pull requests #145388 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.7%[0.7%, 0.7%]1
Regressions (secondary)0.3%[0.2%, 0.4%]3
Improvements (primary)-0.2%[-0.4%, -0.2%]68
Improvements (secondary)-0.4%[-1.8%, -0.2%]24
All (primary)-0.2%[-0.4%, 0.7%]69

Rework target checking for built-in attributes #145085 (Comparison Link)

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

Rollup of 10 pull requests #145551 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-1.2%[-1.5%, -0.8%]2
Improvements (secondary)-0.6%[-1.5%, -0.1%]3
All (primary)-1.2%[-1.5%, -0.8%]2

Mixed

Fix parallel rustc not being reproducible due to unstable sorts of items #144722 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.5%]5
Regressions (secondary)0.2%[0.2%, 0.3%]7
Improvements (primary)-0.2%[-0.6%, -0.1%]12
Improvements (secondary)--0
All (primary)-0.1%[-0.6%, 0.5%]17

#145358 claws back some of the performance impact from this PR.

Update to LLVM 21.1.0 rc3 #145298 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.2%[0.1%, 0.2%]8
Regressions (secondary)--0
Improvements (primary)-0.2%[-0.2%, -0.2%]1
Improvements (secondary)-0.7%[-1.8%, -0.2%]3
All (primary)0.1%[-0.2%, 0.2%]9

I’m not convinced the changes are real here, but they’re certainly not significant enough to investigate deeply for an LLVM upgrade.

Rollup of 9 pull requests #145366 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.2%[0.1%, 0.7%]43
Regressions (secondary)0.3%[0.1%, 0.6%]20
Improvements (primary)--0
Improvements (secondary)-0.5%[-0.5%, -0.5%]1
All (primary)0.2%[0.1%, 0.7%]43

Caused by #145153. In general regressions across the board aren’t great, but this is headed towards introduction of new functionality, so perhaps required. Some profiling of the PR may yield interesting results given how wide spread the regression is for some micro-opt work.

resolve: Split extern prelude into two scopes #144793 (Comparison Link)

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

Looks like it’s only a real regression for the secondary externs scenario, and even there only significant in incr-unchanged. I’m not worried enough to merit further poking, especially as it seems plausible this is a natural (if slight) regression from tracking at finer granularity.

Rollup of 11 pull requests #145407 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.4%]39
Regressions (secondary)0.4%[0.2%, 0.9%]18
Improvements (primary)-1.4%[-3.7%, -0.2%]3
Improvements (secondary)--0
All (primary)0.1%[-3.7%, 0.4%]42

Regression caused by #145233, based on granular perf run, but there’s some suspicion that it might still be just noise. Further investigation seems unwarranted at this time.

Patterns: represent constants as valtrees #144591 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)5.3%[5.3%, 5.3%]1
Regressions (secondary)0.7%[0.2%, 1.0%]9
Improvements (primary)-2.7%[-3.2%, -2.2%]6
Improvements (secondary)--0
All (primary)-1.5%[-3.2%, 5.3%]7

The match-stress regression seems real, but probably not important to look into given the context of this PR. Other regressions look like noise.

Rollup of 21 pull requests #145423 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)1.2%[0.2%, 3.2%]4
Regressions (secondary)0.4%[0.0%, 0.5%]3
Improvements (primary)-0.2%[-0.2%, -0.2%]1
Improvements (secondary)-1.5%[-2.0%, -0.9%]2
All (primary)0.9%[-0.2%, 3.2%]5

Most regressions are noise but ripgrep regression looks real, seems to be caused by #122661. See writeup for some brief investigation.

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

  • “-Zharden-sls flag (target modifier) added to enable mitigation against straight line speculation (SLS)” rust#136597 (last review activity: 2 months ago)
    • cc: @Jubilee
  • “Improve type parameter suggestion heuristic for missing types” rust#140073 (last review activity: 3 months ago)
    • cc @León Orell Liehr (fmease)
  • “Tweak output of missing lifetime on associated type” rust#135602 (last review activity: 5 months ago)
    • cc: @Nadrieril
  • “Provide more context on Fn closure modifying binding” rust#133149 (last review activity: 9 months ago)
    • 2025-08-21 cc @Sparrow Li (autoassigned after review reroll)
  • “aarch64-nintendo-switch-freestanding - Enable CPU features that are always available in a live system (crypto instructions, plus explicit NEON).” rust#144613
    • maybe not a top prio but this seems an easy one, it’s approved but (for some reason?) not merged

Next meetings’ agenda draft: hackmd link