T-compiler Meeting Agenda 2026-08-13
Announcements
- :speaker: P-high review triage (2nd run) tomorrow time:2026-07-31T16:00:00+02:00
- Issue list at https://hackmd.io/CQmx-X5iTO6nf23Ng5uHtA
- Next week release of Rust 1.98 (crater beta triage in progress, see regressions). Changelog for 1.98.
- 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
- @_Jana office hours time:2026-08-16T11:00:00+02:00 and time:2026-08-20T11:00:00+02:00
MCPs/FCPs
New MCPs (take a look, see if you like them!)
- “Add
codeview_annotationintrinsic” compiler-team#1026 (Zulip) - “Introduce new -C flag for cross-target control of stack walking features” compiler-team#1027 (Zulip)
- “Expose
target_abi = "v8plus"on sparc-unknown-linux-gnu” compiler-team#1028 (Zulip)
- “Add
Old MCPs (not seconded, take a look)
- “
{cwd}placeholder in –remap-path-prefix” compiler-team#998 ([Zulip](@rustbot label +major-change +T-compiler)) (last review activity: 2 months ago) - “Add testing for lint machinery at runtime” compiler-team#1004 (Zulip) (last review activity: about 46 days ago)
- “More strongly point people to link to Tracking Issues in the PR template” compiler-team#1009 (Zulip) (last review activity: about 33 days ago)
- “Add -Z stack-protector-guard” compiler-team#1013 (Zulip) (last review activity: about 14 days ago)
- “MCP: Add -Zasync-panic for binary size” compiler-team#1016 (Zulip) (last review activity: about 19 days ago)
- “
Pending FCP requests (check your boxes!)
- merge: WF checks on closure arguments and improved type-test promotion. (rust#151510)
- @|326176 @|232957
- concerns: jobsteal crater regression fix (by lcnr)
I-types-nominated
- merge: Stabilize
optimizeattribute (rust#157273)- @|116009 @|125270 @|370197 @|343125
- concerns: should-apply-to-closures (by tmandry) make-optimize-none-be-c-opt-level-0 (by scottmcm)
- merge: rustc: Stabilize the WebAssembly
wide-arithmeticfeature (rust#160877)- @|116266 @|124288 @|116107 @|119031 @|123856 @|370197 @_|343125
- no pending concerns
- merge: WF checks on closure arguments and improved type-test promotion. (rust#151510)
Things in FCP (make sure you’re good with it)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- concern: inhibit-opts
- concern: lose-debuginfo-data
- concern: impl-at-mir-level
- “Optimize
repr(Rust)enums by omitting tags in more cases involving uninhabited variants.” compiler-team#922 (Zulip) - “Add
target_feature_available_at_call_site” compiler-team#1010 (Zulip)- concern: debugging-the-llvmir
- “Encode OpenBSD
-currentversion in targets’target_env” compiler-team#1018 (Zulip) - “Drop tier 2
i686-pc-windows-gnuhost tools” compiler-team#1020 (Zulip) - “Promote riscv64a23-unknown-linux-gnu to Tier 2 with host tools” compiler-team#1022 (Zulip)
- “Stop using dlltool for generating import libraries on MinGW” compiler-team#1029 (Zulip)
- concern: flag
- “Error on projection of dyn noncompat type in old trait solver” rust#154992
- “Stabilize
-Zprofile-sample-use” rust#155942 - “enable next solver by default in orphanck” rust#160668
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
Accepted MCPs
- “group target modifier options under
-T” compiler-team#980 (Zulip) - “Let the OS handle stack growth” compiler-team#1011 (Zulip)
- “Wasm proc macro support” compiler-team#1017 (Zulip)
- “Emit
notewhen callingrustcwithout specifying an edition” compiler-team#1019 (Zulip) - “Implement a naming convention for lint/diagnostic-only
rustc_attrs” compiler-team#1021 (Zulip)
- “group target modifier options under
MCPs blocked on unresolved concerns
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: 2 months ago)
- concern: needs-champion
- “Publish
rustc_publiccrate v0.1 to crates.io” compiler-team#949 (Zulip) (last review activity: 4 months ago) - “Query
gitstate to get information on a currently ongoing rebase when encountering conflict markers” compiler-team#955 (Zulip) (last review activity: 6 months ago)- concern: not worth the complexity
- “Single-byte counter support in coverage instrumentation” compiler-team#1002 (Zulip) (last review activity: about 35 days ago)
- concern: question-boolean-valued-counters
- concern: state-of-the-impl
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: 2 months ago)
Finalized FCPs (disposition merge)
- [T-compiler] “Ensure inferred let pattern types are well-formed” rust#157841
- [T-compiler] “Shallow resolve ty and const vars to their root vars, attempt 2” rust#158447
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-compilerthis time.
PRs S-waiting-on-t-compiler
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 66 T-compiler P-high issues
- 0 P-critical, 2 P-high, 0 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 0 P-medium, 0 P-low regression-from-stable-to-nightly
- 0 P-critical, 32 P-high, 100 P-medium, 30 P-low regression-from-stable-to-stable
P-critical
- “dist-i686-msvc hang on lint-docs” rust#158378
- Waiting for the RFC to demote the target, discussion on Zulip
- No
P-criticalissues forT-typesthis time.
P-high regressions
Mostly for awareness, since we are a week before the release.
- “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-highnightly regressions this time.
Performance logs
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) | mean | range | count |
|---|---|---|---|
| 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) | mean | range | count |
|---|---|---|---|
| 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
- perf: Lock-free root fast paths for hygiene queries #160494 (Comparison Link)
- Optimize handling of solver errors #160160 (Comparison Link)
- Optimize
try_evaluate_obligations#160479 (Comparison Link) - [perf] Reuse existing trait reference instead of recreating it. #160539 (Comparison Link)
Mixed
Rollup of 10 perf-sensitive pull requests #160506 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| 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)
perf: skip irrelevant foreign impls when building the specialization graph - #157281
-1.5% [-6.1%, -0.2%] 209
Next steps for FnDef binder changes
0.3% [-0.2%, 0.4%] 19
This change is a part of the ongoing effort to clean up binder/turbofishing behavior in the compiler. While the perf regression was known before merging, it wasn’t explained by the author. Author has been pinged.
Optimize crate resolution for large workspace
-7.5% [-15.3%, -1.7%] 11 (secondary, no effect on primaries)
Speed up EverInitializedPlaces
-0.4% [-0.6%, -0.2%] 10
store the fulfillment engine inline in ObligationCtxt
-0.5% [-1.4%, -0.2%] 71
Cache already-checked types in the privacy visitor
-0.5% [-1.1%, -0.2%] 57
interpret: skip deref-projection validity checks when they are not needed
-12.8% [-13.9%, -11.9%] 6 (secondary, no effect on primaries)
Deduplicate target and host filesearch
-0.7% [-1.4%, -0.3%] 11 (secondary, no effect on primaries)
Add fast path to escape_string_symbol
-19.2% [-34.8%, -4.4%] 14 (secondary, no effect on primaries)
Add offload guard flags to typeck to prevent perf regressions
-0.4% [-0.5%, -0.2%] 10 (secondary, no effect on primaries)
Update to LLVM 23 #158734 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| 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) | mean | range | count |
|---|---|---|---|
| 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) | mean | range | count |
|---|---|---|---|
| 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) | mean | range | count |
|---|---|---|---|
| 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) | mean | range | count |
|---|---|---|---|
| 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) | mean | range | count |
|---|---|---|---|
| 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
- “30% cargo target directory size regression between rust 1.96(.1) and 1.97(.1)” rust#160659
- Similar to what we discussed last week about #151994 (v0 mangling has some side-effects on binary size): #t-compiler/meetings > [weekly] 2026-07-30 @ đź’¬
- Tuning the
strip‘ing can help but I am not sure we can recover everything. - Opinions?
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “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 letin 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