T-compiler Meeting Agenda 2025-10-09
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).
- Mentioning MCP#919. Discussion on Zulip, from this message
- Proponent contacted Qualcomm legal team (comment and following) with the quesiton in the thread
Other WG meetings
- WG-async design meeting time:2025-10-0925T19:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Turn emscripten-wasm-eh unwinding ABI on by default” compiler-team#920 (Zulip)
- “Rename
hexagon-unknown-{none-elf,linux-musl}targets” compiler-team#921 (Zulip) - “Optimize
repr(Rust)enums by omitting tags in more cases involving uninhabited variants.” compiler-team#922 (Zulip) - “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
- Old MCPs (not seconded, take a look)
- “Compile UI tests as libraries by default” compiler-team#842 (Zulip) (last review activity: 7 months ago)
- “Unify ui test inline error annotation style” compiler-team#859 (Zulip) (last review activity: 2 months 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: 5 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 @|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: Impls and impl items inherit
dead_codelint level of the corresponding traits and trait items (rust#144113)- @|116009 @|614535 @_|125270
- 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: Promote
- 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
- “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
- “Promote armv7a-none-eabihf to Tier 2” compiler-team#913 (Zulip)
- “Promote armv8r-none-eabihf to Tier 2” compiler-team#914 (Zulip)
- “target tier 3 support for hexagon-unknown-qurt” compiler-team#919 (Zulip)
- “Remove current code for embedding command-line args in PDB” rust#147022
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- “Demote both armebv7r-none-* targets” compiler-team#912 (Zulip)
- 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: about 2 days 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: 3 months ago)
- concern: needs-a-blog-post
- concern: needs-a-sufficiently-long-deprecation-timeline
- concern: broad-change-needs-tlang-buy-in-possibly-fcp
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: 2 months ago)
- Finalized FCPs (disposition merge)
- “Fix accidental type inference in array coercion” rust#140283
- “Fix backtraces with
-C panic=aborton linux; emit unwind tables by default” rust#143613
- Other teams finalized FCPs
- “Fix accidental type inference in array coercion” rust#140283
- “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
- “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
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Don’t normalize higher-ranked assumptions if they’re not used” rust#147299
- Authored by compiler-errors
- No voting Zulip topics :shrug:, backports need to be decided here
- Fixes #147244 and #147285 (2 P-high stable regressions)
- :beta: “Fix target list of
link_section” rust#147418- Authored by JonathanBrouwer
- Fixes an annoying and confusing warning from #147411
- Voting Zulip topic, in favor
- :stable: “Don’t normalize higher-ranked assumptions if they’re not used” rust#147299
- Authored by compiler-errors
- :beta: and :stable: “Don’t normalize higher-ranked assumptions if they’re not used” rust#147299
- Discussed above
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 P-critical, 4 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
“Coverage behavioral changes on #[derive] lines” rust#147434
- Question: what are our guarantees about code
llvm-cov? - See previous discussion about
llvm-tools(from last year, though)
- Question: what are our guarantees about code
P-critical
- No
P-criticalissues forT-compilerthis time.
- No
P-criticalissues forT-typesthis time.
P-high regressions
- “
alloc-variant-zeroedcausing issues with LTO” rust#145995 - “Duplicate warning on some attributes with wrong targets” rust#147417
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
Largely a positive week. Big win coming from avoiding unnecessary work for debug log in #147293, and another one for rustdoc from optimized span representation for highlighter #147189. Lots of noisy results otherwise.
Triage done by @panstromek. Revision range: 8d72d3e1..1a3cdd34
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.5% | [0.2%, 2.0%] | 10 |
| Regressions (secondary) | 0.4% | [0.0%, 0.8%] | 50 |
| Improvements (primary) | -1.3% | [-5.3%, -0.2%] | 147 |
| Improvements (secondary) | -1.3% | [-12.7%, -0.1%] | 111 |
| All (primary) | -1.2% | [-5.3%, 2.0%] | 157 |
6 Regressions, 3 Improvements, 6 Mixed; 8 of them in rollups 40 artifact comparisons made in total
Regressions
Rollup of 7 pull requests #147140 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.1%, 0.3%] | 6 |
| Regressions (secondary) | 0.2% | [0.0%, 0.4%] | 2 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.2% | [0.1%, 0.3%] | 6 |
Based on perf runs on respective PRs, this seems to be https://github.com/rust-lang/rust/pull/133477. https://github.com/rust-lang/rust/pull/147092 was tested but regressions on that are noise and don’t match this PR. Other PR’s don’t touch benchmarked code.
This could also be noise, since the results somewhat fit a bimodal pattern and changes are tiny, but detailed results show increases in number of executed visibility related queries.
Rollup of 5 pull requests #147186 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 3.0% | [3.0%, 3.0%] | 1 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 3.0% | [3.0%, 3.0%] | 1 |
clap_derive bimodal noise
Turn ProjectionElem::Subtype into CastKind::Subtype #147055 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 3.0% | [3.0%, 3.0%] | 1 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 3.0% | [3.0%, 3.0%] | 1 |
clap_derive bimodal noise
Rollup of 9 pull requests #147261 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 2.8% | [2.8%, 2.8%] | 1 |
| Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 1 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 2.8% | [2.8%, 2.8%] | 1 |
clap_derive bimodal noise and something that looks like optimization shuffling in coercions (most of the changes are in the backend). This is a small change in secondary benchmark, so I don’t think this is worth more investigation.
Extending #[rustc_force_inline] to be applicable to inherent methods #147231 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 3.1% | [3.1%, 3.1%] | 1 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 3.1% | [3.1%, 3.1%] | 1 |
clap_derive bimodal noise
don’t make empty ident when printing ' ident from extern "'" #147377 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.9% | [0.8%, 1.0%] | 6 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | - | - | 0 |
Perf results are noise. Looks like wg-grammar became bimodal recently.
Improvements
Rollup of 11 pull requests #147220 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 1 |
| Improvements (primary) | -1.3% | [-5.4%, -0.2%] | 19 |
| Improvements (secondary) | -3.8% | [-12.6%, -0.2%] | 13 |
| All (primary) | -1.3% | [-5.4%, -0.2%] | 19 |
Test: Ambigious bindings in same namespace with the same res #147196 (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 |
Rollup of 6 pull requests #147282 (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 |
Mixed
Rollup of 6 pull requests #147197 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
| Improvements (primary) | -1.5% | [-2.9%, -0.4%] | 3 |
| Improvements (secondary) | -0.6% | [-1.2%, -0.3%] | 5 |
| All (primary) | -1.5% | [-2.9%, -0.4%] | 3 |
Improvements outweigh regressions. coercions regression also looks like noise.
Split Bound index into Canonical and Bound #147138 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.1%, 0.4%] | 7 |
| Regressions (secondary) | 0.1% | [0.1%, 0.2%] | 11 |
| Improvements (primary) | -1.0% | [-2.8%, -0.1%] | 4 |
| Improvements (secondary) | -0.3% | [-1.1%, -0.0%] | 11 |
| All (primary) | -0.3% | [-2.8%, 0.4%] | 11 |
Improvements outweigh regressions, but some of those improvements are noise (clap-derive and syn). Main regressions match pre-merge results, so I assume this was deemed acceptable as a part of work on new solver, but I don’t see any explicit justification.
Introduce debuginfo to statements in MIR #142771 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.5% | [0.1%, 2.0%] | 9 |
| Regressions (secondary) | 0.5% | [0.1%, 0.9%] | 43 |
| Improvements (primary) | -0.3% | [-1.2%, -0.1%] | 101 |
| Improvements (secondary) | -0.3% | [-1.0%, -0.1%] | 102 |
| All (primary) | -0.3% | [-1.2%, 2.0%] | 110 |
Improvements outweigh regressions. Some secondary regressions are just noise (wg-grammar), the biggest meaningful change seems to be diesel opt, as mentioned in https://github.com/rust-lang/rust/pull/142771#issuecomment-3367798805, due to more inlining, syn seems to be a similar case.
Rollup of 10 pull requests #147340 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.1% | [0.1%, 0.1%] | 2 |
| Regressions (secondary) | 0.2% | [0.1%, 0.3%] | 12 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.9% | [-1.0%, -0.8%] | 6 |
| All (primary) | 0.1% | [0.1%, 0.1%] | 2 |
Non-doc changes are mostly noise. Doc changes are not super clear to me. Even hello-world changed a tiny bit, so maybe this is just caused by the number of std changes? Some of those changes also mirror https://github.com/rust-lang/rust/pull/142771 dip, so it could also be noise.
Either way, all doc changes are small and mostly secondary, I think we don’t need to look more deeply into it.
Avoid getting dep_dep_node unnecessarily. #147293 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.9% | [0.8%, 1.0%] | 6 |
| Improvements (primary) | -1.3% | [-3.5%, -0.2%] | 115 |
| Improvements (secondary) | -1.1% | [-2.6%, -0.2%] | 61 |
| All (primary) | -1.3% | [-3.5%, -0.2%] | 115 |
wg-grammar regressions are noise, this is clearly a win otherwise.
Rollup of 7 pull requests #147363 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 1 |
| Improvements (primary) | -0.5% | [-1.6%, -0.2%] | 6 |
| Improvements (secondary) | -0.5% | [-1.6%, -0.0%] | 4 |
| All (primary) | -0.5% | [-1.6%, -0.2%] | 6 |
Improvements outweigh a small regression in secondary stress test.
Nominated Issues
- “Gate tests with the right edition” rust#147498
- Nominated by @Jieyou Xu, asks to check if it looks good
- This PR implements what was discussed in mcp#861 (i.e. add capability to run tests, splitting by edition)
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Revert “Change prefetch to avoid deadlock”” rust#121910 (last review activity: 19 months ago)
- cc @cjgillot (just unblocked)
- “feat: add
succinct-zkvmos and target” rust#138463 (last review activity: 6 months ago)- cc @Wesley Wiser (here the last discussion)
- “diagnostics: hide expansion of builtin-like macros” rust#141314 (last review activity: 4 months ago)
- cc @Vadim Petrochenkov does your last comment mean that that PR can be closed?
Next meetings’ agenda draft: hackmd link