T-compiler Meeting Agenda 2025-06-05
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).
- :loudspeaker:
@rustbotgained the ability to handle concerns on MCPs/issues:- Use
@rustbot {concern,resolve} my-concern-titleto add or resolve a concern - see more details on Zulip
- Thanks @Urgau :)
- Use
Other WG meetings
- WG-async design meeting time:2025-06-06T19:00:00+02:00
- Stable MIR weekly meeting time:2025-06-06T17:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “
#[export_visibility = ...]attribute” compiler-team#881 (Zulip)
- “
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: about 5 days ago)
- “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: 7 months ago)
- “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: 7 months ago)
- “setup typos check in CI (for rust repo)” compiler-team#817 (Zulip) (last review activity: 2 months ago)
- “Rename “dylib” crate type to “rdylib” (keep old name but deprecate it), and maybe do the same for “staticlib” → “cstaticlib”” compiler-team#825 (Zulip) (last review activity: 4 months ago)
- “Add
-C hint-mostly-unusedoption” compiler-team#829 (Zulip) (last review activity: about 2 days ago) - “Compile UI tests as libraries by default” compiler-team#842 (Zulip) (last review activity: 2 months ago)
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: 2 months ago)
- “Add one more “late metadata”/“digest” file to rlib archives” compiler-team#853 (Zulip) (last review activity: 2 months ago)
- “Unify ui test inline error annotation style” compiler-team#859 (Zulip) (last review activity: about 48 days ago)
- “Run the UI test suite with multiple editions” compiler-team#861 (Zulip) (last review activity: about 2 days ago)
- “Promote tier 3 riscv32 ESP-IDF targets to tier 2” compiler-team#864 (Zulip) (last review activity: about 2 days ago)
- “Add support for specifying split-debuginfo=unpacked output directory” compiler-team#871 (Zulip) (last review activity: about 34 days ago)
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: about 6 days ago)
- Pending FCP requests (check your boxes!)
- “sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets” rust#123617
- “Add
target_env = "macabi"andtarget_env = "sim"” rust#139451 - “Use lld by default on
x86_64-unknown-linux-gnustable” rust#140525
- Things in FCP (make sure you’re good with it)
- “Introduce debug information to statements in MIR” compiler-team#867 (Zulip)
- “Retroactive MCP for the Rust for Linux Ecosystem Test Job” compiler-team#874 (Zulip)
- “Promote 64-bit windows-gnullvm Targets to Tier 2 with Host Tools” compiler-team#877 (Zulip)
- “Eliminate
ast::ptr::P” compiler-team#878 (Zulip) - “Split up the
unknown_or_malformed_diagnostic_attributeslint” rust#140717
- Accepted MCPs
- No new accepted proposals this time.
- MCPs blocked on unresolved concerns
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Finalized FCPs (disposition merge)
- “Add
--print host-tupleto print host target tuple” rust#125579 - “make unsupported_calling_conventions a hard error” rust#129935
- “Fix ICE when passing DefId-creating args to legacy_const_generics.” rust#130443
- “Stabilize WebAssembly
multivalue,reference-types, andtail-calltarget features” rust#131080 - “Lint on combining
#[no_mangle]and#[export_name]” rust#131558 - “Stabilize
-Zdwarf-versionas-Cdwarf-version” rust#136926
- “Add
- Other teams finalized FCPs
- “Implement a lint for implicit autoref of raw pointer dereference - take 2” rust#123239
- “de-stabilize bench attribute” rust#134273
- “Remove backticks from
ShouldPanic::YesWithMessage’sTrFailedMsg” rust#136160 - “Use the new solver in the
impossible_predicates” rust#136988 - “Remove
i128andu128fromimproper_ctypes_definitions” rust#137306 - “Stabilize the avx512 target features” rust#138940
- “Check types of const param defaults” rust#139646
- “Stabilize keylocker” rust#140766
- “Stabilize
sha512,sm3andsm4for x86” rust#140767 - “terminology: allocated object → allocation” rust#141224
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “x86 (32/64): go back to passing SIMD vectors by-ptr” rust#141309
- Authored by @RalfJ
- Fixes #139029 (a perf regression) by partially reverting #135408 and going back to passing SIMD vectors by-ptr on x86
- Ralf suggests a backport to (comment):
… avoid Rust 1.88 being the only release where a “Rust” ABI function with a by-value SIMD vector on an i686 target modified to disable SSE causes a hard error (not a configuration we intend to support, but it wasn’t really meant to hard-error quite so quickly)
- Zulip voting (in favor)
- No stable nominations for
T-compilerthis time.
- No beta nominations for
T-typesthis time. - No stable nominations for
T-typesthis time.
PRs S-waiting-on-team
- “Use lld by default on
x86_64-unknown-linux-gnustable” rust#140525- It’s making progress :tada:
- Pending comments for @simulacrum (link)
- Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 57 T-compiler P-high issues
- 0 P-critical, 0 P-high, 0 P-medium, 2 P-low regression-from-stable-to-beta
- 0 P-critical, 1 P-high, 1 P-medium, 0 P-low regression-from-stable-to-nightly
- 0 P-critical, 32 P-high, 100 P-medium, 21 P-low regression-from-stable-to-stable
P-critical
- “Enabling LTO causes miscompilation on x86_64-apple-darwin” rust#141306
- Fixed upstream by @dianqk llvm-project#142304
- though specifically #141306 needs changing linker or upgrading to Xcode 15.3 in CI runners
- No
P-criticalissues forT-typesthis time.
P-high regressions
- No
P-highbeta regressions this time.
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
A fairly busy week, with lots of changes to performance. Most of the changes (at least in quantity of benchmarks) are attributable to an update of our PGO collection to newer benchmarks as part of the 2025 refresh.
Triage done by @simulacrum. Revision range: 2805e1dc..2fc3deed
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.7% | [0.1%, 6.7%] | 56 |
| Regressions (secondary) | 0.6% | [0.1%, 1.3%] | 69 |
| Improvements (primary) | -1.2% | [-8.9%, -0.1%] | 133 |
| Improvements (secondary) | -2.7% | [-20.2%, -0.1%] | 115 |
| All (primary) | -0.6% | [-8.9%, 6.7%] | 189 |
2 Regressions, 6 Improvements, 13 Mixed; 9 of them in rollups 40 artifact comparisons made in total
Regressions
Add some track_caller info to precondition panics #129658 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.0% | [0.1%, 6.2%] | 14 |
| Regressions (secondary) | 0.8% | [0.4%, 1.2%] | 4 |
| Improvements (primary) | -0.5% | [-0.5%, -0.5%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.9% | [-0.5%, 6.2%] | 15 |
Expected regressions to performance for better user experience. No further follow-up warranted.
Rollup of 8 pull requests #141753 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.1%, 1.4%] | 78 |
| Regressions (secondary) | 0.3% | [0.1%, 0.6%] | 46 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.3%, -0.1%] | 3 |
| All (primary) | 0.4% | [0.1%, 1.4%] | 78 |
#141407 seems to be the primary cause of the impact. This is (in part) a correctness fix so marking the regression as triaged.
Improvements
Rollup of 8 pull requests #141662 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -1.3% | [-4.3%, -0.0%] | 56 |
| All (primary) | - | - | 0 |
Unclear cause. Probably not worth digging deeper as solely improvements and only in secondary benchmarks.
Rollup of 8 pull requests #141668 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 2 |
| Improvements (primary) | -0.2% | [-0.2%, -0.1%] | 34 |
| Improvements (secondary) | -0.2% | [-0.3%, -0.0%] | 19 |
| All (primary) | -0.2% | [-0.2%, -0.1%] | 34 |
Unclear cause. Probably not worth digging deeper as solely improvements and only in secondary benchmarks. Started a PR build to check one potential root cause.
rustdoc: cleanups relating to allocations #141573 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.4% | [-0.6%, -0.2%] | 8 |
| Improvements (secondary) | -0.6% | [-0.6%, -0.6%] | 1 |
| All (primary) | -0.4% | [-0.6%, -0.2%] | 8 |
Add fast path for maybe-initializedness in liveness #141667 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.5% | [0.5%, 0.5%] | 1 |
| Improvements (primary) | -1.0% | [-10.6%, -0.2%] | 67 |
| Improvements (secondary) | -0.5% | [-1.2%, -0.2%] | 59 |
| All (primary) | -1.0% | [-10.6%, -0.2%] | 67 |
cstore: Use IndexSet as backing store for postorder dependencies #141730 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -2.3% | [-5.2%, -0.4%] | 11 |
| All (primary) | - | - | 0 |
Tweak fast path trait handling #141731 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -1.0% | [-2.4%, -0.2%] | 10 |
| All (primary) | - | - | 0 |
Mixed
add additional TypeFlags fast paths #141581 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.1% | [0.1%, 0.2%] | 8 |
| Regressions (secondary) | 0.3% | [0.2%, 0.5%] | 20 |
| Improvements (primary) | -0.3% | [-0.4%, -0.3%] | 5 |
| Improvements (secondary) | -2.5% | [-5.7%, -0.2%] | 10 |
| All (primary) | -0.0% | [-0.4%, 0.2%] | 13 |
Mostly no significant delta (averaging out to 0% change) but worth it in more pathological cases, so makes sense to land the change.
Rollup of 16 pull requests #141716 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 3 |
| Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.1% | [-0.1%, -0.1%] | 1 |
| All (primary) | 0.2% | [0.2%, 0.2%] | 3 |
Correctness fix in wfcheck (#136429). No further investigation needed.
Bump rustc-perf and update PGO crates #141490 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.1%, 2.0%] | 46 |
| Regressions (secondary) | 0.7% | [0.1%, 3.2%] | 110 |
| Improvements (primary) | -0.4% | [-0.9%, -0.1%] | 72 |
| Improvements (secondary) | -0.9% | [-4.8%, -0.2%] | 62 |
| All (primary) | -0.1% | [-0.9%, 2.0%] | 118 |
Broad changes due to many benchmark crates getting updated, no particular outcome expected.
Rollup of 11 pull requests #141739 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.1% | [0.1%, 0.1%] | 4 |
| Regressions (secondary) | 0.5% | [0.4%, 0.6%] | 2 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.4% | [-0.5%, -0.4%] | 2 |
| All (primary) | 0.1% | [0.1%, 0.1%] | 4 |
Nothing obvious in one cachegrind diff, not worth digging deeper.
Make some assertions in solver into debug assertions #141651 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.4% | [0.3%, 0.5%] | 2 |
| Improvements (primary) | -0.1% | [-0.1%, -0.1%] | 2 |
| Improvements (secondary) | -0.8% | [-1.1%, -0.2%] | 11 |
| All (primary) | -0.1% | [-0.1%, -0.1%] | 2 |
Rollup of 5 pull requests #141765 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.3%, 0.3%] | 6 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.4% | [-0.4%, -0.4%] | 1 |
| All (primary) | 0.3% | [0.3%, 0.3%] | 6 |
rustc_codegen_llvm: use threadlocal.address intrinsic to access TLS #139385 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
| Improvements (primary) | -0.7% | [-2.0%, -0.2%] | 22 |
| Improvements (secondary) | -1.4% | [-1.5%, -1.4%] | 3 |
| All (primary) | -0.7% | [-2.0%, -0.2%] | 22 |
Expected speed up to thread local access.
Rollup of 8 pull requests #141791 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 2.9% | [2.9%, 2.9%] | 1 |
| Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
| Improvements (primary) | -1.6% | [-1.6%, -1.6%] | 1 |
| Improvements (secondary) | -0.4% | [-0.4%, -0.3%] | 2 |
| All (primary) | 0.7% | [-1.6%, 2.9%] | 2 |
https://github.com/rust-lang/rust/pull/141765#issuecomment-2930545642
Revert “increase perf of charsearcher for single ascii characters” #141678 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.9% | [1.6%, 2.2%] | 2 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -1.4% | [-7.3%, -0.2%] | 36 |
| Improvements (secondary) | -1.6% | [-4.2%, -0.3%] | 25 |
| All (primary) | -1.2% | [-7.3%, 2.2%] | 38 |
This fixes a perf regression from a previous week.
PGO new solver #141453 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.4%] | 10 |
| Regressions (secondary) | 0.2% | [0.2%, 0.3%] | 6 |
| Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
| Improvements (secondary) | -8.1% | [-15.0%, -3.3%] | 14 |
| All (primary) | 0.3% | [-0.2%, 0.4%] | 11 |
Expected improvements primarily to new solver benchmarks as we now collect PGO data. Some regressions are expected due to less precise PGO data for old solver patterns.
slice.get(i) should use a slice projection in MIR, like slice[i] does #139118 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 3 |
| Improvements (primary) | -1.2% | [-1.3%, -1.1%] | 2 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -1.2% | [-1.3%, -1.1%] | 2 |
Within noise threshold for (new) regressed benchmark, otherwise see #139118 (comment).
Merge coroutine obligation checking into borrowck parallel loop #141773 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.4% | [0.3%, 0.5%] | 2 |
| Improvements (primary) | -2.9% | [-2.9%, -2.9%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -2.9% | [-2.9%, -2.9%] | 1 |
Not really measurable on (at least) perf, new -Zthreads=4 benchmark doesn’t see any meaningful improvement from this.
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Reduce special casing for the panic runtime” rust#140809 (last review activity: about 27 days ago)
- cc @Michael (compiler-errors) Goulet
- “Look at proc-macro attributes when encountering unknown attribute” rust#134841 (last review activity: 5 months ago)
- anybody interested in picking this up?
- “Detect struct construction with private field in field with default” rust#135846 (last review activity: 4 months ago)
- anyone interested in picking this up?
- “Fix
PostBorrowckAnalysisfor old solver” rust#135899 (last review activity: 2 months ago)- cc: @Michael (compiler-errors) Goulet / @lcnr
- “Add
#[loop_match]for improved DFA codegen” rust#138780 (last review activity: about 59 days ago)- cc: @Boxy
Next meetings’ agenda draft: hackmd link