T Compiler Meeting Agenda 2026 07 16

T-compiler Meeting Agenda 2026-07-16

Announcements

  • Today Rust 1.97.1 released, blog post draft
    • Mainly for #159035, a miscompilation introduced in 1.97.0
  • 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

  • :beta: “resolve: fix effective visibilities for items in ambiguous glob sets” rust#159039
    • Authored by calvinrp
    • Voting Zulip topic, seems everyone was against, so the backport is declined
  • :beta: “Revert extension of -1 for None-like tags” rust#159047
  • :stable: “resolve: fix effective visibilities for items in ambiguous glob sets” rust#159039
    • Authored by calvinrp
    • Voting Zulip topic, given the lack of consensus, so backport declined

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
  • “Miscompilation with FFI bool return type on AArch64” rust#159244

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-07-13 Triage Log

This week many new optimizations landed, making this a very good week for performance. The only real regression was a fix for a miscompile that will likely be re-landed in the future.

Triage done by @JonathanBrouwer. Revision range: 3659db0d..5503df87

Summary:

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.4%]3
Regressions (secondary)0.9%[0.1%, 2.5%]25
Improvements (primary)-1.2%[-9.9%, -0.2%]195
Improvements (secondary)-3.4%[-92.1%, -0.1%]174
All (primary)-1.2%[-9.9%, 0.4%]198

2 Regressions, 10 Improvements, 10 Mixed; 7 of them in rollups 36 artifact comparisons made in total

Regressions

Revert extension of -1 for None-like tags #159047 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.2%[0.0%, 0.7%]16
Improvements (primary)--0
Improvements (secondary)--0
All (primary)--0

Revert of a PR that caused a miscompile in LLVM. Likely to be re-landed in the future.

Rollup of 3 pull requests #159166 (Comparison Link)

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

Bi-modal noise in the include-blob benchmark.

Improvements

Mixed

Rollup of 12 pull requests #158864 (Comparison Link)

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

Triaged to be fully caused by [https://github.com/rust-lang/rust/pull/156976](enable eager param_env norm in new solver). Author claims the perf impact is fully fixed by the later merge of https://github.com/rust-lang/rust/pull/158643.

Rollup of 24 pull requests #158847 (Comparison Link)

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

Regressions are noise, improvements seem real to me. Not worth figuring out which PR caused the unexpected improvements.

Rollup of 23 pull requests #158991 (Comparison Link)

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

Regressions seem like noise, and are tiny. Improvements seem real to me. Not worth figuring out which PR caused the unexpected improvements.

[perf] Specialize common (1, 1) case for arg unification. #158865 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.2%[0.2%, 0.2%]1
Regressions (secondary)0.2%[0.2%, 0.3%]7
Improvements (primary)-0.5%[-0.7%, -0.2%]8
Improvements (secondary)-0.3%[-0.5%, -0.1%]6
All (primary)-0.4%[-0.7%, 0.2%]9

Improvements caused by a new fast path in type checking for two-argument tuples. Regressions are noise.

Inline some Symbol functions #158931 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.2%[0.2%, 0.3%]4
Regressions (secondary)0.1%[0.1%, 0.2%]2
Improvements (primary)-0.3%[-0.5%, -0.1%]50
Improvements (secondary)-0.4%[-0.9%, -0.1%]55
All (primary)-0.3%[-0.5%, 0.3%]54

Improvements caused by marking Symbol::intern and Symbol::as_str as inline. Regressions seem real but improvements seriously outweigh regressions.

perf: Rework read deduplication with pooled read recorders #158794 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.2%[0.2%, 0.3%]13
Regressions (secondary)0.5%[0.1%, 1.7%]29
Improvements (primary)-1.5%[-10.0%, -0.2%]89
Improvements (secondary)-1.0%[-2.8%, -0.0%]77
All (primary)-1.2%[-10.0%, 0.3%]102

Improvements by deduplicating reads in the query infrastructure. Further improvements might be possible and are being discussed in the comments of the PR.

Rollup of 24 pull requests #159046 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.1%, 0.7%]3
Regressions (secondary)0.0%[0.0%, 0.0%]1
Improvements (primary)-0.4%[-0.4%, -0.4%]1
Improvements (secondary)-0.1%[-0.1%, -0.1%]1
All (primary)0.1%[-0.4%, 0.7%]4

Some of the regressions are noise, and I’m still trying to triage which PR caused the last regressions. Regressions are relatively small and most likely will just be accepted.

Rollup of 15 pull requests #159113 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.5%[0.2%, 0.6%]5
Regressions (secondary)0.3%[0.0%, 0.6%]9
Improvements (primary)-0.6%[-0.6%, -0.6%]1
Improvements (secondary)-0.1%[-0.2%, -0.0%]6
All (primary)0.3%[-0.6%, 0.6%]6

Triaged to be caused by https://github.com/rust-lang/rust/pull/158767 and https://github.com/rust-lang/rust/pull/157690. Author of the first PR has been pinged, regressions in the second PR are tiny.

Resolver: Wrap arenas in WorkerLocal #159019 (Comparison Link)

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

Small regressions on two stress benchmarks from worker local arenas. It’s acceptable, and we’ll need to integrate resolver into the parallel compiler sooner or later anyway. The build reduced graph changes are potential micro-optimizations (that’s where the diesel improvements come from), and the worker local changes are pessimizations.

Preparatory changes for macro parsing BFS->DFS #158974 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.2%[0.2%, 0.3%]2
Regressions (secondary)--0
Improvements (primary)-0.4%[-0.4%, -0.4%]2
Improvements (secondary)-3.8%[-5.2%, -2.1%]9
All (primary)-0.1%[-0.4%, 0.3%]4

Great perf results on tt-muncher! icounts, cycles, and wall-time all agree that it got significantly faster. Improvements outweigh regressions significantly.

Nominated Issues

T-compiler

  • No I-compiler-nominated issues this time.

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

None this week