T-compiler Meeting Agenda 2025-09-25
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
- Stable MIR weekly meeting time:2025-09-26T17:00:00+02:00
- WG-async design meeting time:2025-09-25T19:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Adding cargo::no-new-rust-code to speed up compilation” compiler-team#915 (Zulip)
- “Split the
-openbsd*targets by version” compiler-team#916 (Zulip)- concern: why-not-ports-rustc
- concern: version-churn
- concern: nonsystematic-breakage
- “Add Wild linker as a preview component for x86_64 and AArch64 Linux GNU” compiler-team#917 (Zulip)
- concern: unofficial project
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- “Compile UI tests as libraries by default” compiler-team#842 (Zulip) (last review activity: 6 months ago)
- “Unify ui test inline error annotation style” compiler-team#859 (Zulip) (last review activity: about 47 days ago)
- “Promote tier 3 riscv32 ESP-IDF targets to tier 2” compiler-team#864 (Zulip) (last review activity: 3 months ago)
- “Add support for specifying split-debuginfo=unpacked output directory” compiler-team#871 (Zulip) (last review activity: 4 months ago)
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: 2 months ago)
- “Experiment with replacing specialization in libcore with downcasting” compiler-team#904 (Zulip) (last review activity: 2 months ago)
- 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 @|123856 @|116118 @|259697 @|444933 @|353056
- concerns: no-hardware-available (by davidtwco) unclear-justification (by jieyouxu)
- merge: Promote armv7a-none-eabihf to Tier 2 (compiler-team#913)
- @|124288 @|125250 @|116122 @|353056
- no pending concerns
- merge: Promote armv8r-none-eabihf to Tier 2 (compiler-team#914)
- @|124288 @|125250 @_|116122
- no pending concerns
- merge: sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets (rust#123617)
- no pending checkboxes
- concerns: stabilization-scope (by wesleywiser)
- merge: Stabilize stack-protector (rust#146369)
- @|116266 @|119031 @|426609 @|116122 @|123856 @|444933
- concerns: mitigation-enforcement (by Noratrieb)
- 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: name-a-specific-reason
- concern: can-we-just-enhance-ui-suite
- “Demote both armebv7r-none-* targets” compiler-team#912 (Zulip)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- No new accepted proposals this time.
- MCPs blocked on unresolved concerns
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: 2 months ago)
- concern: proposal-wording
- “Promote
armv7-unknown-linux-musleabihfto tier 2 with host tools” compiler-team#888 (Zulip) (last review activity: 2 months ago)- concern: lack-of-maintainers
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: 2 months ago)
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 3 months ago)
- concern: path-to-stabilization
- “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: 2 months ago)
- concern: broad-change-needs-tlang-buy-in-possibly-fcp
- concern: needs-a-sufficiently-long-deprecation-timeline
- concern: needs-a-blog-post
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: 2 months ago)
- 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
- “Allow
&raw [mut | const]for union field in safe code” rust#141469 - “Do not materialise X in [X; 0] when X is unsizing a const” rust#145277
- “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 - “Stabilize
std::panic::Location::file_as_c_str” rust#145664 - “Deny-by-default never type lints” rust#146167
- “Allow
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Add attributes for #[global_allocator] functions” rust#146766
- Authored by nikic
- Should help with #145995 (P-high nightly regression)
- Merge was blocked because …
- … voting Zulip topic prefers to revert #144086 in beta
- :beta: “remove incorrect fast path” rust#146919
- Authored by lcnr
- Fixes #146813 (a P-high stable regression) and perf. run is neutral
- Approved but not yet merged (so probably that’s for the next week)
- Voting Zulip topic, in favor
- :beta: “Update LLVM to 21.1.2” rust#146953
- Authored by dianqk
- Fixes a number of LLVM-related issues (comment, almost fully mitigate a perf. regression #146512)
- Voting Zulip topic, in favor
- :stable: “remove incorrect fast path” rust#146919
- Authored by lcnr
- Fixes #146813 (a P-high stable regression) and perf. run is neutral
- Approved but not yet merged (so probably that’s for the next week)
- Voting Zulip topic, “approve but does not justify a dot release”
- No beta nominations for
T-typesthis time. - No stable nominations for
T-typesthis time.
PRs S-waiting-on-team
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 56 T-compiler P-high issues
- 0 P-critical, 0 P-high, 0 P-medium, 2 P-low regression-from-stable-to-beta
- 2 P-critical, 2 P-high, 1 P-medium, 1 P-low regression-from-stable-to-nightly
- 0 P-critical, 26 P-high, 100 P-medium, 23 P-low regression-from-stable-to-stable
P-critical
- “Rustc failed to locate rc.exe on VS2022 Command Prompt, causing panic” rust#146693
- Resolved by #146784
- reverted in beta with #146687, so nightly-only) for now
- No
P-criticalissues forT-typesthis time.
P-high regressions
- No
P-highbeta regressions this time.
Unassigned P-high nightly regressions
- “
alloc-variant-zeroedcausing issues with LTO” rust#145995- handled by #146766 (thanks @Nikita Popov)
Performance logs
Moving command-line argument quoting from C++ to Rust (#146700) resulted in a nice performance win when dealing with many dependencies and large workspaces. A somewhat costly destination propagation compiler pass was enabled by default (#142915), which resulted in some build time regressions, but should result in improved runtime performance. The rest of changes were small.
Triage done by @kobzol. Revision range: 52618eb3..ce4beebe
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.1%, 1.9%] | 61 |
| Regressions (secondary) | 0.6% | [0.1%, 3.4%] | 90 |
| Improvements (primary) | -0.5% | [-1.9%, -0.2%] | 29 |
| Improvements (secondary) | -1.3% | [-22.8%, -0.1%] | 71 |
| All (primary) | 0.0% | [-1.9%, 1.9%] | 90 |
1 Regression, 4 Improvements, 4 Mixed; 4 of them in rollups 37 artifact comparisons made in total
Regressions
Rollup of 5 pull requests #146698 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 2 |
| Regressions (secondary) | 0.2% | [0.1%, 0.2%] | 16 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.2% | [0.2%, 0.2%] | 2 |
- From the perf. runs it looks like the tiny regressions are distributed amongst multiple PRs. Given that most of them are in secondary benchmarks, and those benchmarks were going a bit up and down recently, I don’t think it’s worth to dig deeper here.
- Marked as triaged.
Improvements
Prevent ABI changes affect EnzymeAD #142544 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.2% | [0.0%, 0.3%] | 2 |
| Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.1%] | 18 |
| All (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
Clippy subtree update #146728 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -2.9% | [-2.9%, -2.9%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -2.9% | [-2.9%, -2.9%] | 1 |
GVN: stop hashing opaque values #145737 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -1.7% | [-1.9%, -1.5%] | 2 |
| Improvements (secondary) | -1.4% | [-1.4%, -1.4%] | 1 |
| All (primary) | -1.7% | [-1.9%, -1.5%] | 2 |
cg_llvm: Move target machine command-line quoting from C++ to Rust #146700 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.4% | [-0.6%, -0.2%] | 4 |
| Improvements (secondary) | -3.0% | [-23.4%, -0.2%] | 16 |
| All (primary) | -0.4% | [-0.6%, -0.2%] | 4 |
Mixed
Rollup of 9 pull requests #146614 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 2 |
| Regressions (secondary) | 3.7% | [3.0%, 4.2%] | 6 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.3%, -0.0%] | 6 |
| All (primary) | 0.2% | [0.2%, 0.2%] | 2 |
- The regression in compile-time function evaluation was caused by #146402, which is a fix.
- Marked as triaged.
Enable DestinationPropagation by default #142915 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.1%, 1.1%] | 62 |
| Regressions (secondary) | 0.4% | [0.1%, 1.6%] | 98 |
| Improvements (primary) | -0.4% | [-1.7%, -0.1%] | 31 |
| Improvements (secondary) | -0.7% | [-2.5%, -0.1%] | 60 |
| All (primary) | 0.0% | [-1.7%, 1.1%] | 93 |
- The compile-time effects seem to be a wash, while this nicely reduced the binary size of the compiler itself, and is expected to improve runtime performance.
- Marked as triaged.
Rollup of 8 pull requests #146830 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 1 |
| Regressions (secondary) | 0.2% | [0.1%, 0.2%] | 4 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.3%, -0.1%] | 2 |
| All (primary) | 0.2% | [0.2%, 0.2%] | 1 |
- There’s one tiny regression on a primary check benchmark, it doesn’t seem worth it to investigate further.
- Marked as triaged.
Rollup of 9 pull requests #146879 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.1%, 0.5%] | 2 |
| Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.2%] | 7 |
| All (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
- Seems like noise returning back, similar results to other rollups, just in the other direction.
- Marked as triaged.
Nominated Issues
- “Regression: geoarrow crate does not compile in release mode on 1.82” rust#131960
- Two questions:
- What do you think about tweaking the hack in #129714 to make the crate
geoarrowcompile?
- issue is caused by the old trait solver (details at this comment)
- A few months ago,
geoarrow-rsworked around this bug (they removed-Zinline-mir=no(geoarrow-rs#956)) - The next trait solver is coming (it’s in the project goals 2H2025) but not exactly behind the corner
- It probably makes sense to fix the
geoarrowissue as best as we can, even if with “hacks”
- What do you think about tweaking the hack in #129714 to make the crate
- Should we be devoting similar attention to the other crates encountering this issue?
- At the time of #128887 the crater run reported 4 crates (one pinned Rust 1.89). The only active project affected (that we know of) seems to be
geoarrow-rs - I (@_apiraino) could not find any other; seems the impact is quite low, see comment
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “[Debug Info] Generate typedef nodes for ptr/ref types (and msvc arrays)” rust#144394 (last review activity: 2 months ago)
- cc @Wesley Wiser (was suggested by Michael) or reassign. maybe cc: @Nikita Popov since it’s LLVM
- “Provide additional context to errors involving const traits” rust#144194 (last review activity: 2 months ago)
- probably cc @oli or reassign (Michael is not reviewing AFAIK)
- “Impls and impl items inherit lint levels of the corresponding traits and trait items” rust#144113 (last review activity: 2 months ago)
- cc @cjgillot (unsure if they’re reviewing rn)
- “Impls and impl items inherit lint levels of the corresponding traits and trait items” rust#144113 (last review activity: 2 months ago)
- cc @cjgillot
- “Make named asm_labels lint not trigger on hexagon register spans” rust#143037 (last review activity: 2 months ago)
- maybe @Amanieu d’Antras (have you LLVM review rights now?) or @Nikita Popov ?
Next meetings’ agenda draft: hackmd link