T-compiler Meeting Agenda 2026-09-03
Announcements
- Today releasing rust 1.98.1
- Fixes
P-critical“rustc: fix miscompilation in generating vtables” rust#161441
- Fixes
- 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).
MCPs/FCPs
New MCPs (take a look, see if you like them!)
- “Introduce new -C flag for cross-target control of stack walking features” compiler-team#1027 (Zulip)
- “LLVM AllocToken and Heap Partitioning Support for Rust” compiler-team#1032 (Zulip)
- “Expose
target_abi = "pauthtest"” compiler-team#1033 (Zulip)
Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
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: 2 months ago)
- “More strongly point people to link to Tracking Issues in the PR template” compiler-team#1009 (Zulip) (last review activity: about 55 days ago)
- “Add -Z stack-protector-guard” compiler-team#1013 (Zulip) (last review activity: about 36 days ago)
- “MCP: Add -Zasync-panic for binary size” compiler-team#1016 (Zulip) (last review activity: about 41 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)
- 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: move implied bounds computation out of borrowck (rust#160491)
- @|116266 @|124288 @|326176 @|232957
- no pending concerns
- merge: rustc: Stabilize the WebAssembly
wide-arithmeticfeature (rust#160877)- @|116266 @|119031 @|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: lose-debuginfo-data
- concern: inhibit-opts
- 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
- “Add
codeview_annotationintrinsic” compiler-team#1026 (Zulip) - “x86: on targets that requires SSE, use those registers for ABI” rust#161583
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
Accepted MCPs
- “Wasm proc macro support” compiler-team#1017 (Zulip)
- “Encode OpenBSD
-currentversion in targets’target_env” compiler-team#1018 (Zulip) - “Implement a naming convention for lint/diagnostic-only
rustc_attrs” compiler-team#1021 (Zulip) - “Expose
target_abi = "v8plus"on sparc-unknown-linux-gnu” compiler-team#1028 (Zulip) - “Stop using dlltool for generating import libraries on MinGW” compiler-team#1029 (Zulip)
MCPs blocked on unresolved concerns
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: 3 months ago)
- concern: needs-champion
- “Publish
rustc_publiccrate v0.1 to crates.io” compiler-team#949 (Zulip) (last review activity: about 15 days ago) - “Query
gitstate to get information on a currently ongoing rebase when encountering conflict markers” compiler-team#955 (Zulip) (last review activity: 7 months ago)- concern: not worth the complexity
- “Single-byte counter support in coverage instrumentation” compiler-team#1002 (Zulip) (last review activity: about 57 days ago)
- concern: question-boolean-valued-counters
- concern: state-of-the-impl
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: 3 months ago)
Finalized FCPs (disposition merge)
- [T-compiler] “Error on projection of dyn noncompat type in old trait solver” rust#154992
- [T-compiler] “Stabilize
-Zprofile-sample-use” rust#155942 - [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
- [T-compiler] “PowerPC inline ASM: Fix scalar floats being in the wrong vector lane on little endian” rust#160441
- [T-compiler] “enable next solver by default in orphanck” rust#160668
- [T-types] “Remove
From<!> for Treservation impl” rust#160705
Backport nominations
Note: All approved but one
T-compiler beta / T-compiler stable
- :beta: “Check to ensure we’re running against the correct LLVM version” rust#161788
- Authored by jnkel
- Voting Zulip topic, approved
- :beta: “Revert “Add rustc_test_entrypoint_marker”” rust#161931
- Authored by JonathanBrouwer
- Voting Zulip topic
- :beta: “Make the LLVM version mismatch ICE a fatal error” rust#162034
- Authored by saethlin
- Voting Zulip topic, approved
- :beta: “Update LLVM submodule” rust#162133
- Authored by nikic
- Voting Zulip topic, approved
- :beta: “Revert “Implement Debug for C-like enums with a concatenated string”” rust#162164
- Authored by nnethercote
- Voting Zulip topic
- :beta: “Fix ICE of getting item name from RPITIT” rust#162071
- Authored by chenyukang
- Fixes #161915 a P-medium beta regression, seems safe to backport
- Voting Zulip topic
- No stable nominations for
T-compilerthis time.
PRs S-waiting-on-t-compiler
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 69 T-compiler P-high issues
- 0 P-critical, 3 P-high, 1 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 4 P-medium, 1 P-low regression-from-stable-to-nightly
- 1 P-critical, 33 P-high, 100 P-medium, 29 P-low regression-from-stable-to-stable
P-critical
- No
P-criticalissues forT-compilerthis time.
- No
P-criticalissues forT-typesthis time.
P-high regressions
- “1.99 beta crater regression: “type annotations needed”” rust#161913
- “1.99 beta crater regression: overflow evaluating the requirement” rust#161916
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
This week continues a steady stream of compile time improvements. Most of the impact this week comes from type system
micro-optimization in #160473 and dead_code lint propagation
fix in #161571. We’ve also hit unexpected regression in a standard library
refactor, but we expect that to be addressed soon.
Triage done by @panstromek. Revision range: 9a4ad59a..5321a4f4
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.6% | [0.2%, 1.8%] | 27 |
| Regressions (secondary) | 0.6% | [0.2%, 1.8%] | 27 |
| Improvements (primary) | -0.7% | [-2.4%, -0.1%] | 135 |
| Improvements (secondary) | -0.7% | [-2.2%, -0.1%] | 120 |
| All (primary) | -0.5% | [-2.4%, 1.8%] | 162 |
5 Regressions, 4 Improvements, 4 Mixed; 9 of them in rollups 39 artifact comparisons made in total
Regressions
Rollup of 9 pull requests #161706 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.5% | [0.5%, 0.6%] | 2 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.5% | [0.5%, 0.6%] | 2 |
Caused by https://github.com/rust-lang/rust/pull/159583, already triaged by @JonathanBrouwer: “Caused the perf regression in the rollup. This does more work because it’s a new lint, and the regression is quite minor, so we probably just have to accept this”
Rollup of 5 pull requests #161731 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 10 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | - | - | 0 |
Noise, already triaged by @JonathanBrouwer
Rollup of 5 pull requests #161783 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.3%, 0.3%] | 1 |
| Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 10 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.3% | [0.3%, 0.3%] | 1 |
Caused by https://github.com/rust-lang/rust/pull/161684, somehow rustdoc is sensitive to this trait bound. This is arguably a problem in rustdoc and not in the PR, marked as triaged and opened a thread in T-rustdoc. I think it’s also ok to ignore this, the regression is quite minor.
Rollup of 7 pull requests #161801 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.3%] | 3 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.3% | [0.2%, 0.3%] | 3 |
Caused by https://github.com/rust-lang/rust/pull/161718, we couldn’t figure out why, seems spurious.
Investigated further by @nnethercote (author):
“I think the regression isn’t real.
This PR did some very minor rearrangement of startup code that only runs once.
- It’s a 0.2% regression on three of the libc runs, i.e. very small.
- I can’t reproduce it on my machine with a local build.
- I can’t even reproduce it on my machine using the downloaded artifacts. (I got a 0.007% icount increase, not a 0.2% increase.) I don’t remember ever seeing that before.
I’m out of ideas! I don’t think it’s worth investigating any further.”
Rollup of 11 pull requests #162028 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.5% | [0.1%, 1.9%] | 53 |
| Regressions (secondary) | 0.6% | [0.2%, 1.9%] | 30 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.5% | [0.1%, 1.9%] | 53 |
Caused by https://github.com/rust-lang/rust/pull/161702, regression mostly in debug/opt builds, mostly in codegen related queries. Binary size also regressed, so this is probably from more code in the standard library. Investigations in progress, it will probably be addressed in a followup (or revert).
Improvements
- perf: Push nominal obligations instead of returning them #160473 (Comparison Link)
- Refactor the
#[allow(dead_code)]propagation for impl items of traits #161571 (Comparison Link) - Rollup of 7 pull requests #161990 (Comparison Link)
- Rollup of 4 pull requests #162009 (Comparison Link)
Mixed
Rollup of 7 pull requests #161672 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.1%, 0.4%] | 10 |
| Improvements (primary) | -0.2% | [-0.3%, -0.2%] | 7 |
| Improvements (secondary) | -0.2% | [-0.4%, -0.1%] | 13 |
| All (primary) | -0.2% | [-0.3%, -0.2%] | 7 |
Already triaged by @JonathanBrouwer: “Improvements caused by #160705, regressions are noise”
stabilize never type #155499 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 2 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.3% | [-0.4%, -0.1%] | 10 |
| All (primary) | - | - | 0 |
include-blob regressions are noise, tt-muncher regression looks real, but it’s small,
so this is probably fine for a PR like this.
Rollup of 21 pull requests #161906 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.1% | [0.1%, 0.1%] | 1 |
| Regressions (secondary) | 0.5% | [0.5%, 0.5%] | 1 |
| Improvements (primary) | -0.4% | [-0.5%, -0.4%] | 6 |
| Improvements (secondary) | -0.5% | [-0.6%, -0.3%] | 2 |
| All (primary) | -0.4% | [-0.5%, 0.1%] | 7 |
The improvement is from https://github.com/rust-lang/rust/pull/161456, which addresses previously triaged regression. include-blob regression is noise. html5ever doc regression looks like it might be real, but it’s tiny, so I don’t think it’s worth investigating further.
Add intrinsics for integer minimum and maximum #161081 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.1% | [0.1%, 0.2%] | 4 |
| Regressions (secondary) | 0.2% | [0.2%, 0.2%] | 1 |
| Improvements (primary) | -0.9% | [-0.9%, -0.9%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.1% | [-0.9%, 0.2%] | 5 |
Some compile time impact was expected and justified in https://github.com/rust-lang/rust/pull/161081#issuecomment-5319412891 by the author (@scottmcm): “Perf changes look mostly like the kind of thing that makes sense from better inlining: reduced is_mir_available calls, and permuted codegen schedules from different CGU partitioning that sometimes is better, sometimes worse.
Overall perf seems perhaps slightly better, and the bootstrap being green in both runs is also promising.”
The post-merge result doesn’t match the pre-merge run, but I assume that’s also somewhat expected based on that comment justification.
Nominated Issues
- “make target feature ABI check a hard error on ARM” rust#161280
- nominated by Ralf (https://github.com/rust-lang/rust/pull/161280#issuecomment-5331351235)
- David (ARM maintainer) approved, T-lang as well
- anything else to discuss for T-compiler?
- “Deny partial
-Z stack-protectorby default in all editions” rust#157941
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- Skipping
Next meeting’s agenda draft: hackmd link