T Compiler Meeting Agenda 2026 08 13

T-compiler Meeting Agenda 2026-08-13

Announcements

Other WG meetings

MCPs/FCPs

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “resolving cyclic glob vis-max” rust#161024

    • FIY, PR was just opened should close #160685
    • Voting Zulip topic
  • 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

T-types

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

P-high regressions

Mostly for awareness, since we are a week before the release.

P-high beta regressions

  • “1.98 beta regression: compiler stack overflow” rust#160685
    • unsure about priority, on one hand is just one crate, on the other is a segfault easily reproducible
    • author of the regressed patch is at work on a fix (#160685), would that a good candidate for a backport? (in case we make it to the release cut)
  • “Rust warns pub glob export is unused” rust#160691
    • unsure about priority, follows a number of similar regressions (now fixed)
    • the originating PR #145108 was FCP’d and will be in the release notes so we are just dealing with some fallout
    • Reviewer of the PR (Vadim) left a comment but probably someone else should author a fix (in case it’s something we def. want to fix)

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

2026-08-09 Triage Log

This week so many new performance improvements landed that we needed to roll 10 of them up together to keep the bors queue manageable, great work! Also new is the LLVM 23 update which caused massive compile-time, run-time, bootstrap time and artifact size improvements. These improvements are reduced by the merge of Polonius Alpha on nightly causing a 3.0% regression. There still seems to be some potential to mitigate this regression.

Triage done by @JonathanBrouwer. Revision range: 65dd30fb..771916f9

Summary:

(instructions:u)meanrangecount
Regressions (primary)4.6%[0.2%, 12.8%]24
Regressions (secondary)4.3%[0.2%, 14.3%]30
Improvements (primary)-3.3%[-16.4%, -0.2%]251
Improvements (secondary)-5.2%[-34.8%, -0.2%]308
All (primary)-2.6%[-16.4%, 12.8%]275

1 Regression, 4 Improvements, 7 Mixed; 5 of them in rollups 25 artifact comparisons made in total

Regressions

Rollup of 22 pull requests #160517 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.6%[0.2%, 1.9%]11
Regressions (secondary)0.5%[0.2%, 1.8%]13
Improvements (primary)-0.8%[-0.8%, -0.8%]1
Improvements (secondary)--0
All (primary)0.5%[-0.8%, 1.9%]12

Most of this regression is noise, showing up on all PRs that were part of this rollup identically. The one exception is #160480, which changes the implementation of to_ascii_uppercase and to_ascii_lowercase to be faster. While the run-time performance of these functions improve, they are now slower to compile because they use more generics. Why this effect is so significant is unclear.

Improvements

Mixed

Rollup of 10 perf-sensitive pull requests #160506 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.5%[0.5%, 0.5%]1
Improvements (primary)-1.7%[-6.2%, -0.2%]237
Improvements (secondary)-4.7%[-34.7%, -0.1%]230
All (primary)-1.7%[-6.2%, -0.2%]237

This is a rollup of 10 perf-sensitive pull requestions, this was made for the first time because the queue was too large. After the rollup was merged, every PR in the rollup was individually benchmarked. The following 10 PRs were rolled up: (below each PR the effect on benchmarks is listed)

Update to LLVM 23 #158734 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.5%[0.2%, 0.7%]14
Regressions (secondary)1.7%[0.0%, 9.1%]27
Improvements (primary)-2.6%[-16.8%, -0.2%]208
Improvements (secondary)-2.0%[-11.9%, -0.0%]246
All (primary)-2.4%[-16.8%, 0.7%]222

Not only does the LLVM 23 update have an overwhelmingly positive effect on compile-time performance, it also seriously improves run-time performance (-6.9% on the raytracer benchmark), it reduces bootstrap time by 7.7%, and reduces binary size by 0.2%. Thanks to everyone who worked on landing this update!

Type fallback refactorings #159026 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.3%[0.1%, 0.6%]12
Improvements (primary)--0
Improvements (secondary)-2.2%[-3.1%, -0.1%]13
All (primary)--0

The perf regression is noise, while the improvements are real.

Rollup of 25 pull requests #160559 (Comparison Link)

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

The performance improvements and some of the regressions are noise. The rest of the regressions are caused by changes in rustc-perf.

Enable polonius alpha on nightly #159343 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)3.0%[0.2%, 15.7%]89
Regressions (secondary)2.3%[0.2%, 17.3%]108
Improvements (primary)--0
Improvements (secondary)-0.9%[-1.3%, -0.3%]9
All (primary)3.0%[0.2%, 15.7%]89

This enables polonius alpha on nightly, which represents years of work on making the borrow checker stronger. This is not enabled on stable yet, thus the performance regression won’t be present there. Polonius does strictly more work so getting this to zero will be impossible. Serde is the biggest regression with a 15.6% regression.

While some performance work has already been done on polonius alpha, there seems to be quite some opportunities left. One of those that @panstromek mentioned is that the IntervalSet datatype could be optimized further.

Rollup of 17 pull requests #160627 (Comparison Link)

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

The new-solver benchmark improvements seem to be noise. Some improvements caused by https://github.com/rust-lang/rust/pull/160555. Perf regression caused by https://github.com/rust-lang/rust/pull/160464. Pinged the authors.

Rollup of 28 pull requests #160725 (Comparison Link)

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

Improvements outweigh regressions. The regressions may or may not be caused by a separate PR, but are so small that they are not worth hunting down.

Nominated Issues

T-compiler

  • “30% cargo target directory size regression between rust 1.96(.1) and 1.97(.1)” rust#160659

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • “improve error message when a cfg-ed out item is resolved” rust#154037 (last review activity: 3 months ago)
    • cc @Jana Dönszelmann
  • “Normalize .. and . in diagnostic file paths” rust#155569 (last review activity: 3 months ago)
    • cc @Urgau
  • “debuginfo: emit DW_TAG_call_site entries on optimized builds” rust#154532 (last review activity: 2 months ago)
    • @Ding Xiang Fei (wieDasDing)
  • “fix: fix the capture behavior of if let in closures” rust#154210 (last review activity: 2 months ago)
    • cc @Nadrieril (assigned) or someone from T-compiler?
  • “Wrap multi-bound impl/dyn after prefix type constructors in the type printer” rust#156844 (last review activity: 2 months ago)
    • cc @Shoyu Vanilla

Next meetings’ agenda draft: hackmd link