T Compiler Meeting Agenda 2025 07 31

T-compiler Meeting Agenda 2025-07-31

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

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

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

  • No P-high beta regressions this time.

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2025-07-28

A week with lots of mixed results, including a few benchmarks that appear to be newly bimodal, which made some of the results look closer to noise than signal. Overall, however, the week ended as a slight improvement.

Triage done by @simulacrum. Revision range: 3f9f20f7..e3514bde

Summary:

(instructions:u)meanrangecount
Regressions (primary)0.5%[0.2%, 0.9%]7
Regressions (secondary)0.4%[0.0%, 0.7%]26
Improvements (primary)-0.4%[-1.1%, -0.2%]69
Improvements (secondary)-1.8%[-10.3%, -0.0%]96
All (primary)-0.3%[-1.1%, 0.9%]76

1 Regressions, 2 Improvements, 9 Mixed; 2 of them in rollups 38 artifact comparisons made in total

Regressions

resolve: Make disambiguators for underscore bindings module-local (take 2) #144272 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.4%[0.1%, 0.7%]17
Regressions (secondary)0.3%[0.0%, 0.6%]21
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.4%[0.1%, 0.7%]17

Unclear root cause; cachegrind diffs point at the regression ocurring in an unrelated function. It may also be bimodality as the regression temporarily self-resolves in a subsequent commmit.

Improvements

Various refactors to the LTO handling code (part 2) #144062 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)--0
Improvements (secondary)-3.4%[-6.7%, -1.1%]6
All (primary)--0

Avoids doing some work unless LTO is actually requested, which seems to lead to a nice improvement in the large workspace benchmark.

Do not run per-module late lints if they can be all skipped #139597 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.1%[0.1%, 0.1%]4
Improvements (primary)-0.4%[-0.5%, -0.2%]17
Improvements (secondary)-0.5%[-1.5%, -0.1%]24
All (primary)-0.4%[-0.5%, -0.2%]17

Mixed

Ports #[macro_use] and #[macro_escape] to the new attribute parsing infrastructure #143843 (Comparison Link)

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

Not particularly worried about the regressions here, they affect unused-warnings and deep-vector only (and not too high in magnitude) and this is part of larger changes throughout the compiler.

Create an AllocId for ConstValue::Slice. #116707 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.7%[0.2%, 1.0%]6
Regressions (secondary)0.3%[0.0%, 0.9%]38
Improvements (primary)-0.3%[-0.6%, -0.1%]17
Improvements (secondary)-1.9%[-10.2%, -0.0%]56
All (primary)-0.1%[-0.6%, 1.0%]23

Overall an improvement and potentially will allow for further simplifications (https://github.com/rust-lang/rust/pull/116707#issuecomment-3069572150).

Rollup of 15 pull requests #144398 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.4%]3
Regressions (secondary)0.2%[0.0%, 0.2%]3
Improvements (primary)-0.4%[-0.8%, -0.1%]14
Improvements (secondary)-0.3%[-0.6%, -0.1%]21
All (primary)-0.3%[-0.8%, 0.4%]17

Regressions appear limited to incr-println-like scenarios most likely from https://github.com/rust-lang/rust/pull/143374#issuecomment-3037244091. Not worth further investigation given limited impact and the change looks fairly benign.

MIR-build: No longer emit assumes in enum-as casting #144389 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.5%[0.2%, 0.7%]13
Regressions (secondary)0.3%[0.1%, 0.6%]17
Improvements (primary)-0.4%[-0.9%, -0.1%]8
Improvements (secondary)-0.3%[-0.3%, -0.3%]1
All (primary)0.1%[-0.9%, 0.7%]21

looks like html5ever has gone bimodal

(https://github.com/rust-lang/rust/pull/144389#issuecomment-3116885962)

Resolve: refactor define into define_local and define_extern #143884 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.1%[0.1%, 0.1%]3
Regressions (secondary)0.5%[0.3%, 0.7%]5
Improvements (primary)-0.5%[-0.8%, -0.2%]15
Improvements (secondary)-0.3%[-0.5%, -0.2%]27
All (primary)-0.4%[-0.8%, 0.1%]18

Overall positive, few regressions look like they might be within bimodality thresholds.

Avoid unnecessary new_adt/new_fn_def calls. #144425 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.4%[0.4%, 0.5%]6
Regressions (secondary)0.5%[0.3%, 0.7%]9
Improvements (primary)-0.3%[-0.5%, -0.1%]46
Improvements (secondary)-0.7%[-1.6%, -0.1%]44
All (primary)-0.2%[-0.5%, 0.5%]52

Overall positive, few regressions look like they might be within bimodality thresholds.

Preintern some TyKind::Bound values #144434 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.1%[0.1%, 0.1%]1
Regressions (secondary)0.8%[0.3%, 1.0%]8
Improvements (primary)-0.3%[-0.4%, -0.1%]4
Improvements (secondary)-0.9%[-1.7%, -0.2%]23
All (primary)-0.2%[-0.4%, 0.1%]5

match-stress regression looks plausibly like bimodality to me. ucd and unicode-normalization look more real but are small in magnitude and limited in which scenarios are affected; overall the change remains positive, so marking as triaged.

Rollup of 6 pull requests #144556 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.6%[0.2%, 1.2%]6
Improvements (primary)--0
Improvements (secondary)-0.7%[-1.0%, -0.0%]8
All (primary)--0

So that’s probably #143607. One secondary proc-macro benchmark with regressions, another one with gains. I guess the magnitude evens out…

I haven’t dived into the regression yet but it’s probably caused by #143940 (attributes are parsed twice).

Marked as triaged.

Allow more MIR SROA #144543 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.5%[0.2%, 0.8%]3
Regressions (secondary)0.3%[0.2%, 0.3%]6
Improvements (primary)-0.4%[-0.6%, -0.2%]3
Improvements (secondary)-0.9%[-1.0%, -0.9%]6
All (primary)0.0%[-0.6%, 0.8%]6

Changes look possibly like longer-term bimodality? But this is also a MIR optimization, so mixed results are somewhat expected.

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

  • “Extend QueryStability to handle IntoIterator implementations” rust#139345 (last review activity: 2 months ago)
    • cc @fmease
  • “diagnostics: hide expansion of builtin-like macros” rust#141314 (last review activity: about 57 days ago)
    • unsure how to proceed on this one, pinged Vadim (which was against this change)
  • “add first HelenOS compilation targets” rust#139310 (last review activity: about 54 days ago)
    • can this be merged? was approved by Wesley. Does T-bootstrap need to chime in?

Next meetings’ agenda draft: hackmd link