T-compiler Meeting Agenda 2025-10-16
Announcements
- 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 @Wesley Wiser so we can pass it along).
Other WG meetings
- WG-async design meeting time:2025-10-1625T19:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Run main rust-analyzer tests in rust-lang/rust CI” compiler-team#923 (Zulip)
- “Remove diagnostic translation infrastructure” compiler-team#924 (Zulip)
- concern: people-like-structs
- “Stop bumping the bootstrap version on every rustc release” compiler-team#925 (Zulip)
- “Remove diagnostic translation infrastructure” compiler-team#924 (Zulip)
- Pending FCP requests (check your boxes!)
- merge: Promote
riscv64a23-unknown-linux-gnuto Tier 2 with host tools (compiler-team#910)- @|124288 @|125250 @|119031 @|426609 @|116122 @|116118 @|259697 @|444933
- concerns: no-hardware-available (by davidtwco) unclear-justification (by jieyouxu)
- merge: sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets (rust#123617)
- no pending checkboxes
- concerns: stabilization-scope (by wesleywiser)
- merge: Update bundled musl to 1.2.5 (rust#142682)
- @|123586 @|119031 @|259697 @|353056
- no pending concerns
- merge: Stabilize -Zno-jump-tables into -Cjump-tables=bool (rust#145974)
- @|124288 @|119031 @_|426609
- no pending concerns
- merge: Stabilize stack-protector (rust#146369)
- @|116266 @|119031 @|426609 @|116122 @_|444933
- concerns: mitigation-enforcement (by Noratrieb)
- merge: Stabilize
-Zremap-path-scope(rust#147611)- @|123586 @|119031 @|248906 @|116122 @|123856 @|259697 @|444933 @|353056
- no pending concerns
- merge: Promote
- Things in FCP (make sure you’re good with it)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- concern: impl-at-mir-level
- concern: lose-debuginfo-data
- concern: inhibit-opts
- “Proposal for a dedicated test suite for the parallel frontend” compiler-team#906 (Zulip)
- concern: can-we-just-enhance-ui-suite
- concern: name-a-specific-reason
- “target tier 3 support for hexagon-unknown-qurt” compiler-team#919 (Zulip)
- concern: legal-review
- “Replace
rustc_target::specTarget::archstring with enum” compiler-team#926 (Zulip)- concern: rust-gpu-use-case
- “Use
llvm-bitcode-linkeras the default linker fornvptx64-nvidia-cuda” compiler-team#927 (Zulip) - “Impls and impl items inherit
dead_codelint level of the corresponding traits and trait items” rust#144113 - “Remove current code for embedding command-line args in PDB” rust#147022
- “repr(transparent): do not consider repr(C) types to be 1-ZST” rust#147185
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- No new accepted proposals this time.
- Finalized FCPs (disposition merge)
- “Fix backtraces with
-C panic=aborton linux; emit unwind tables by default” rust#143613
- “Fix backtraces with
- Other teams finalized FCPs
- “Forbid freely casting lifetime bounds of dyn-types” rust#136776
- “Fix accidental type inference in array coercion” rust#140283
- “Allow
&raw [mut | const]for union field in safe code” rust#141469 - “prefer alias candidates for sizedness + auto trait goals " rust#144064
- “Do not materialise X in [X; 0] when X is unsizing a const” rust#145277
- “Allow borrowing array elements from packed structs with ABI align <= packed align” rust#145419
- “Reject invalid literal suffixes in tuple indexing, tuple struct indexing, and struct field name position” rust#145463
- “Opportunistically split
!=to successfully parse never type” rust#145536 - “docs(style): Specify the frontmatter style” rust#145617
- “Stabilize
std::panic::Location::file_as_c_str” rust#145664 - “the
#[track_caller]shim should not inherit#[no_mangle]” rust#145724 - “Deny-by-default never type lints” rust#146167
- “Allow specifying multiple bounds for same associated item, except in trait objects” rust#146593
- “[beta-1.91] Warn on future errors from temporary lifetimes shortening in Rust 1.92” rust#147056
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Fix double warnings on
#[no_mangle]” rust#147467- Authored by JonathanBrouwer
- Fixes 2 out of 3 cases in #147417 (P-high, confusing diagnostic)
- Voting Zulip topic, mostly declined. Low impact issue but also small, low risk PR, as per comment
- :beta: “Change int-to-ptr transmute lowering back to inttoptr” rust#147541
- Authored by saethlin
- Fixes P-high rust#147265, LLVM wrong optimization causing a miscmpile
- Voting Zulip topic, in favor
- :beta: “rewrite outlives placeholder constraints to outlives static when handling opaque types” rust#147566
- Authored by BoxyUwU
- Fixes #147529, P-critical
- Voting Zulip topic, few votes, in favor. Reverting the original PR is not easy
- :beta: “GVN: Invalidate derefs at loop headers” rust#147607
- Authored and nominated by dianqk
- Fixes P-high miscompile introduced in #132527 (no issue reported, AFAIK)
- Voting Zulip topic, mixed opinions: on one hand this is broken since 1.88, original LLVM issue is very old, on the other this is a miscompile and in general for optimizations bugs are less visible so it is good if this patch runs in crater runs sooner. Backport would produce conflicts but not insurmountable.
- :stable: “Change int-to-ptr transmute lowering back to inttoptr” rust#147541
- Authored by saethlin
- Voting Zulip topic, vibe here is ok to backport but - alone - does not justifies a dot release. Though there is a report of this affecting servo (so at least one visible project in the ecosystem)
- No beta nominations for
T-typesthis time. - No stable nominations for
T-typesthis time.
PRs S-waiting-on-t-compiler
- No PRs waiting on
T-compilerthis time. - Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 58 T-compiler P-high issues
- 2 P-critical, 3 P-high, 3 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 1 P-medium, 1 P-low regression-from-stable-to-nightly
- 0 P-critical, 30 P-high, 100 P-medium, 25 P-low regression-from-stable-to-stable
P-critical
- “hidden type for
impl ...captures lifetime that does not appear in bounds” rust#147529- solved by #147566 (in backports)
- No
P-criticalissues forT-typesthis time.
P-high regressions
- “Duplicate warning on some attributes with wrong targets” rust#147417
- solved by #147467 (in backports)
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
This week saw small wins across the board from some microoptimizations of the incremental query
system (#147423). There have also been a couple of
regressions. #142390 introduced regressions of check
builds across the board. The largest regression (18%) is from an incremental opt build of a secondary
artificial stress test, so we deemed it acceptable.
Triage done by @kobzol. Revision range: 1a3cdd34..956f47c3
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.7% | [0.1%, 2.0%] | 65 |
| Regressions (secondary) | 0.8% | [0.1%, 18.6%] | 65 |
| Improvements (primary) | -0.6% | [-1.6%, -0.1%] | 119 |
| Improvements (secondary) | -0.4% | [-1.6%, -0.1%] | 76 |
| All (primary) | -0.1% | [-1.6%, 2.0%] | 184 |
2 Regressions, 7 Improvements, 3 Mixed; 3 of them in rollups 35 artifact comparisons made in total
Regressions
Rollup of 12 pull requests #147512 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.4% | [0.0%, 0.8%] | 10 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | - | - | 0 |
- Noise, the secondary benchmarks have rebounded in #147519.
- Marked as triaged.
Fix normalization overflow ICEs in monomorphization #146096 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.2%, 0.6%] | 5 |
| Regressions (secondary) | 9.7% | [0.7%, 18.7%] | 2 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.4% | [0.2%, 0.6%] | 5 |
- The perf. hit was expected and deemed worth it, as this PR fixes a couple of issues.
- Apart from some tiny regressions, the single large regression is in a secondary stress test, and also in full incremental opt build.
- Marked as triaged.
Improvements
Rollup of 7 pull requests #147449 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.3%, -0.1%] | 8 |
| Improvements (secondary) | -0.5% | [-0.5%, -0.5%] | 1 |
| All (primary) | -0.2% | [-0.3%, -0.1%] | 8 |
DepNodeColor tweaks #147423 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.6% | [-1.5%, -0.2%] | 98 |
| Improvements (secondary) | -0.6% | [-1.2%, -0.1%] | 47 |
| All (primary) | -0.6% | [-1.5%, -0.2%] | 98 |
[rustdoc] a small performance improvement: only allocate new string if there are DOS backlines in highlight.rs #147443 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.3%, -0.1%] | 4 |
| Improvements (secondary) | -0.2% | [-0.5%, -0.0%] | 5 |
| All (primary) | -0.2% | [-0.3%, -0.1%] | 4 |
Refactor AddCallGuards in two loops. #147477 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.3%, -0.1%] | 8 |
| Improvements (secondary) | -0.3% | [-0.6%, -0.1%] | 9 |
| All (primary) | -0.2% | [-0.3%, -0.1%] | 8 |
Move more code to RawVec::finish_grow #147124 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.4%, -0.1%] | 5 |
| Improvements (secondary) | -0.1% | [-0.2%, -0.0%] | 7 |
| All (primary) | -0.2% | [-0.4%, -0.1%] | 5 |
Rollup of 8 pull requests #147603 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.0% | [0.0%, 0.0%] | 1 |
| Improvements (primary) | -0.2% | [-0.2%, -0.1%] | 3 |
| Improvements (secondary) | -0.1% | [-0.1%, -0.0%] | 13 |
| All (primary) | -0.2% | [-0.2%, -0.1%] | 3 |
Split overlapping_{inherent,trait}_impls #147502 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.4%, -0.1%] | 15 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.1%] | 4 |
| All (primary) | -0.2% | [-0.4%, -0.1%] | 15 |
Mixed
Prevent downstream impl DerefMut for Pin<LocalType> #145608 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.3%, 0.3%] | 2 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.0% | [-0.0%, -0.0%] | 1 |
| All (primary) | 0.3% | [0.3%, 0.3%] | 2 |
- Tiny regression on hyper, otherwise netural. This PR fixes soundness anyway.
- Marked as triaged.
Perform InstSimplify before ReferencePropagation. #147483 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.2% | [0.1%, 0.7%] | 6 |
| Improvements (primary) | -0.3% | [-0.5%, -0.1%] | 6 |
| Improvements (secondary) | -0.3% | [-0.6%, -0.1%] | 6 |
| All (primary) | -0.3% | [-0.5%, -0.1%] | 6 |
- Some tiny wins on primary benchmarks, but overall it’s a wash.
- Marked as triaged.
Perform unused assignment and unused variables lints on MIR. #142390 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.6% | [0.1%, 2.0%] | 75 |
| Regressions (secondary) | 0.7% | [0.0%, 3.7%] | 76 |
| Improvements (primary) | -0.3% | [-0.3%, -0.3%] | 1 |
| Improvements (secondary) | -0.4% | [-0.5%, -0.4%] | 6 |
| All (primary) | 0.6% | [-0.3%, 2.0%] | 76 |
- The regressions on the check builds are real, but they mostly didn’t carry over to debug and opt builds. This is a big compiler change that took years to land, so I think that we just eat the cost.
- Marked as triaged.
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Add
overflow_checksintrinsic” rust#128666 (last review activity: 10 months ago)- There’s a conversation happening, unsure if the review is on someone else cc @Boxy (feel free to reassign to one of the commenters)
- “Add FileCheck annotations to mir-opt/copy-prop” rust#135099 (last review activity: 6 months ago)
- cc @Wesley Wiser (feel free to re-assign)
- “Issue-125323: ICE non-ADT in struct pattern when long time constant evaluation is in for loop” rust#138679 (last review activity: 4 months ago)
- cc @oli (if you have bandwidth, or maybe reassign?)
- “hir_analysis: add missing sizedness bounds” rust#142712 (last review activity: 3 months ago)
- cc: @lcnr
Next meetings’ agenda draft: hackmd link