T Compiler Meeting Agenda 2026 07 02

T-compiler Meeting Agenda 2026-07-02

Announcements

  • Release Rust 1.96.1 was released to close issue #158214 (blog post)
  • And next week release Rust 1.97!
  • 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

Backport nominations

T-compiler beta / T-compiler stable

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

  • “dist-i686-msvc hang on lint-docs” rust#158378
    • Temporarily worked around by #158379 (disables part of CI)
    • Issue needs investigation, see Zulip thread

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

2026-06-29 Triage Log

Overall, the week was fairly neutral, with no meaningful shift on most benchmarks on any of our statistics.

Triage done by @simulacrum. Revision range: 8b6558a0..7dc2c162

Summary:

(instructions:u)meanrangecount
Regressions (primary)0.9%[0.1%, 3.7%]45
Regressions (secondary)0.9%[0.0%, 8.0%]74
Improvements (primary)-0.4%[-1.4%, -0.2%]34
Improvements (secondary)-4.0%[-30.6%, -0.2%]57
All (primary)0.3%[-1.4%, 3.7%]79

2 Regressions, 1 Improvement, 7 Mixed; 5 of them in rollups 34 artifact comparisons made in total

Regressions

Rollup of 13 pull requests #158487 (Comparison Link)

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

Root cause is Update doc_cfg hide/show syntax #157871. Probably worth some follow-up since it affects lots of doc benchmarks, and at least a glance it seems plausible this might have a simple fix (syntax changes don’t feel like they should be meaningfully more expensive, especially in code that doesn’t use this feature like helloworld).

resolve: Explicit Set for detecting resolution cycles #158035 (Comparison Link)

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

This primarily (outside incremental) affects unused-warnings, which is a stress test for this code. It’s expected that this change would be a slight regression, but per the PR description, this unblocks parallelization of this code, which is an important benefit.

Improvements

Mixed

GVN: Don’t assume nested shared references are read-only. #157346 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.1%, 0.5%]9
Regressions (secondary)0.3%[0.1%, 0.4%]11
Improvements (primary)-0.3%[-0.4%, -0.2%]10
Improvements (secondary)-0.5%[-1.1%, -0.2%]5
All (primary)0.0%[-0.4%, 0.5%]19

Soundness fix, regressions are minor.

Rollup of 35 pull requests #158342 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.1%[0.1%, 0.1%]7
Regressions (secondary)0.7%[0.1%, 1.0%]6
Improvements (primary)-0.3%[-0.5%, -0.1%]5
Improvements (secondary)-0.1%[-0.2%, -0.1%]3
All (primary)-0.1%[-0.5%, 0.1%]12
  • Improvements are fully from proc_macro simplification #157271
  • Regressions are from:
    • delegation: add support for infers in generics #157960
      • fixed in delegation: store child segment flag in PathSegment #158556
    • Possibly some other PRs; note that there is also some regressions in ctfe-stress that I suspect are noise.

Add rigid alias marker #156742 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)1.0%[0.3%, 2.1%]22
Regressions (secondary)1.2%[0.3%, 3.6%]13
Improvements (primary)-0.1%[-0.1%, -0.1%]3
Improvements (secondary)-6.0%[-30.9%, -0.1%]31
All (primary)0.8%[-0.1%, 2.1%]25

necessary refactor for the new trait solver and I would just eat the 1.4% diesel regression.

(see more here: https://github.com/rust-lang/rust/pull/156742#issuecomment-4807181842)

Rollup of 15 pull requests #158416 (Comparison Link)

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

Non-instruction count wins from reverting a change to how we build LLVM which broke PGO. Minor regressions/wins otherwise that are maybe within noise threshold, not worth digging deeper.

Rollup of 15 pull requests #158455 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.1%[0.1%, 0.1%]2
Regressions (secondary)0.2%[0.1%, 0.2%]6
Improvements (primary)-0.2%[-0.2%, -0.2%]1
Improvements (secondary)-0.3%[-0.5%, -0.2%]8
All (primary)0.0%[-0.2%, 0.1%]3
  • Add arg splat experiment initial tuple impl #153697 explains the regressions.
    • New feature, some poking at optimizing perf was attempted and this was best-possible so far. Previous work on this feature improved perf so this series is still a benefit overall in some sense.
  • Improvements from:
    • Various borrowck cleanups and param_env/opaque_types_defined_by query simplifications for typeck children #158360
    • perf: Make stable_crate_ids reads lock-free after crate loading #158185

Rollup of 15 pull requests #158508 (Comparison Link)

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

The change is the same as #157996, which was explicitly listed as perf. The overall improvement was deemed to be worth it.

Move std::io::Error into core #155625 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)1.0%[0.5%, 2.6%]9
Regressions (secondary)1.4%[0.2%, 7.7%]23
Improvements (primary)--0
Improvements (secondary)-4.7%[-6.0%, -3.2%]6
All (primary)1.0%[0.5%, 2.6%]9

Expected mixed results since this change shuffles a lot of code around between crates/impl blocks and as a result likely tweaking how much things are inlinable. Most of the results are probably fallout from that rather than rustc performance changes in a direct sense. I don’t think we need to dig deeper here.

Nominated Issues

T-compiler

  • No I-compiler-nominated issues this time.

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

Tip: let’s look at them one by one

T-compiler

  • “Suggest only Span without source changes when source code is unavailable” rust#144585 (last review activity: 7 months ago)
    • cc @Esteban Küber
  • “Replace jemalloc bootstrap options with override-allocatorrust#155617 (last review activity: 2 months ago)
    • rerolled, asked who should have a look there first (any suggestions?)
  • “tests/ui: use revisions for editions in several tests” rust#155498 (last review activity: 2 months ago)
    • Didn’t we have a lengthy conversation about marking UI tests with editions in compiler-team#861? Is this PR related? cc @davidtwco do you know?
  • “tests/ui/tuple: add annotations for reference rules” rust#155846 (last review activity: 2 months ago)
    • can this be reassigned? Or does it need specific context?
  • “resolve: use #[doc(alias)] to improve function resolution diagnostics” rust#154833 (last review activity: 2 months ago)
    • Unsure about this: Vadim would decline this change, Esteban is instead in favor. Can perhaps anyone give a third opinion?

Next meetings’ agenda draft: hackmd link