T-compiler Meeting Agenda 2025-09-18
Announcements
- Today release of Rust 1.90.0, blog post
- 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-09-18T19:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- No new proposals this time.
- 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 39 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: about 54 days ago)
- “Experiment with replacing specialization in libcore with downcasting” compiler-team#904 (Zulip) (last review activity: about 54 days ago)
- Pending FCP requests (check your boxes!)
- merge: Promote
riscv64a23-unknown-linux-gnuto Tier 2 with host tools (compiler-team#910)- @|116266 @|124288 @|123586 @|125250 @|119031 @|426609 @|116122 @|123856 @|116118 @|259697 @|444933 @|353056
- concerns: no-hardware-available (by davidtwco)
- merge: Promote armv7a-none-eabihf to Tier 2 (compiler-team#913)
- @|116266 @|124288 @|123586 @|125250 @|119031 @|426609 @|116122 @|123856 @|116118 @|444933 @_|353056
- no pending concerns
- merge: Promote armv8r-none-eabihf to Tier 2 (compiler-team#914)
- @|116266 @|124288 @|123586 @|125250 @|119031 @|426609 @|116122 @|123856 @|116118 @|444933 @_|353056
- 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: can-we-just-enhance-ui-suite
- concern: name-a-specific-reason
- “Demote both armebv7r-none-* targets” compiler-team#912 (Zulip)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- “Unstably add -Cpanic=immediate-abort” compiler-team#909 (Zulip)
- “ship clang and llvm-ar in rustup” compiler-team#907 (Zulip)
- “Move LTO from the codegen coordinator thread to link_binary” compiler-team#908 (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: 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-blog-post
- concern: needs-a-sufficiently-long-deprecation-timeline
- “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
- “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
- “Stabilize
std::panic::Location::file_as_c_str” rust#145664
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “don’t apply temporary lifetime extension rules to non-extended
super let” rust#145838- Authored by dianne, nominated again by @_theemathas (due to T-lang approving this)
- Beta channel is intended for the next 1.91 (IIUC)
- Breaking change, just merged
- Voting Zulip topic. preference is to decline (noting @_TC opposite opinion in the discussion)
- :beta: “[beta] Revert “compiler: Add Windows resources to rustc-main and rustc_driver”” rust#146687
- Authored by lambdageek
- Reverts #146018 (also authored by lambdageek) which breaks compiling rustc on Windows (#146693)
- Voting Zulip topic, in favor.
- Note: for the master branch, seems the plan is to work on a different patch (#146689, see comment)
- 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
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 55 T-compiler P-high issues
- 0 P-critical, 0 P-high, 0 P-medium, 2 P-low regression-from-stable-to-beta
- 1 P-critical, 2 P-high, 1 P-medium, 0 P-low regression-from-stable-to-nightly
- 0 P-critical, 25 P-high, 100 P-medium, 23 P-low regression-from-stable-to-stable
P-critical
- No
P-criticalissues forT-compilerthis time.
- 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- this is slowly entering beta and has no assignee yet. Though @Nikita Popov is aware of it (comments from here)
Difficult week to interpret, because a positive change in #145910 performs a bit worse in our benchmarks than it would in the real world. Overall result is probably still slightly negative, because there’s more work from added features. On the other hand, we also have a nice improvement in reducing the number of query dependencies in compiler’s incremental system in #145186.
Triage done by @panstromek. Revision range: f13ef0d7..52618eb3
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.5% | [0.2%, 2.7%] | 72 |
| Regressions (secondary) | 0.7% | [0.0%, 3.5%] | 96 |
| Improvements (primary) | -0.5% | [-0.9%, -0.1%] | 10 |
| Improvements (secondary) | -0.8% | [-2.9%, -0.1%] | 41 |
| All (primary) | 0.4% | [-0.9%, 2.7%] | 82 |
1 Regression, 1 Improvement, 6 Mixed; 3 of them in rollups 36 artifact comparisons made in total
Regressions
consider item bounds for non-yet-defined opaque types #146329 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.5% | [0.2%, 0.8%] | 11 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.4% | [-0.4%, -0.4%] | 1 |
| All (primary) | - | - | 0 |
tt-muncher, ucd and tuple-stress all look like noise to me. The rest is in new-solver, which is still WIP and not enabled by default.
Improvements
Make AssocItem aware of its impl kind #145186 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.3%, -0.1%] | 15 |
| Improvements (secondary) | -0.4% | [-1.2%, -0.1%] | 25 |
| All (primary) | -0.2% | [-0.3%, -0.1%] | 15 |
Mixed
Rollup of 4 pull requests #146304 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.1%, 0.4%] | 8 |
| Regressions (secondary) | 0.4% | [0.1%, 0.9%] | 13 |
| Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
| Improvements (secondary) | -2.7% | [-2.9%, -2.5%] | 6 |
| All (primary) | 0.2% | [-0.2%, 0.4%] | 9 |
Seems to be caused by https://github.com/rust-lang/rust/pull/146297, pinged the author and continuing the discussion there.
Ignore intrinsic calls in cross-crate-inlining cost model #145910 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.0% | [0.3%, 2.4%] | 10 |
| Regressions (secondary) | 1.9% | [0.2%, 3.0%] | 9 |
| Improvements (primary) | -0.5% | [-0.7%, -0.4%] | 5 |
| Improvements (secondary) | -0.4% | [-0.6%, -0.1%] | 14 |
| All (primary) | 0.5% | [-0.7%, 2.4%] | 15 |
Already triaged by reviewer. Justified in PR description. Should be an improvement overall, but causes a lot of CGU perturbation in our benchmark suite.
eagerly compute sub_unification_table again #140375 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.1%, 1.4%] | 61 |
| Regressions (secondary) | 0.6% | [0.1%, 2.7%] | 71 |
| Improvements (primary) | -0.4% | [-0.8%, -0.1%] | 3 |
| Improvements (secondary) | -0.9% | [-2.9%, -0.2%] | 21 |
| All (primary) | 0.3% | [-0.8%, 1.4%] | 64 |
Expected regression, triaged by author and @Kobzol
Rollup of 11 pull requests #146360 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.2% | [0.1%, 0.4%] | 10 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.6% | [-1.1%, -0.1%] | 9 |
| All (primary) | - | - | 0 |
Tiny changes mostly in artificial stress tests, overall slightly positive. Probably not worth more investigation.
Rollup of 5 pull requests #146409 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.4%] | 3 |
| Regressions (secondary) | 0.1% | [0.1%, 0.2%] | 3 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.1% | [-0.1%, -0.1%] | 1 |
| All (primary) | 0.3% | [0.2%, 0.4%] | 3 |
Some small regressions. I suspect the primary regressions in unicode-normalization come from https://github.com/rust-lang/rust/pull/144765, because it contains a few giant tables with a lot of range patterns. The other candidate would be https://github.com/rust-lang/rust/pull/146178 but I don’t see anything that would be related in that benchmark.
Either way, together with the secondary benchmarks, all of those are tiny changes (0.002s) on tiny benchmarks, so I don’t think this is worth more investigation.
Constify Eq, Ord, PartialOrd #144847 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.1% | [0.1%, 0.1%] | 1 |
| Regressions (secondary) | 0.1% | [0.1%, 0.3%] | 8 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.1% | [-0.2%, -0.1%] | 2 |
| All (primary) | 0.1% | [0.1%, 0.1%] | 1 |
Slight regression in doc benchmarks, similar to pre-merge results. Expected because of more const handling (looks like more time is spent in const related queries from a brief look at the detailed results of hello-world: https://perf.rust-lang.org/detailed-query.html?commit=5c11fb842afc9876e985886c30292a227caee632&benchmark=helloworld-doc&scenario=full&base_commit=a171994070dc18c3a32fc1aa2d98cf03ae96b63e)
Justified by https://github.com/rust-lang/rust/pull/144847#issuecomment-3193410781, if I understand correctly.
Nominated Issues
- “Stabilize -Zno-jump-tables into -Cjump-tables=bool” rust#145974
- Nominated by @Trevor Gross
- Opinion from Ojeda (RfL)
- Seems reaady for a discussion (or start FCP)
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Tweak output of missing lifetime on associated type” rust#135602 (last review activity: 5 months ago)
- cc: @Nadrieril (probably review of #145314 comes first, see comment)
- “Add FileCheck annotations to mir-opt/copy-prop” rust#135099 (last review activity: 5 months ago)
- cc @Wesley Wiser
- “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 or @Michael Goulet (compiler-errors) (both have been guiding and mentoring the author)
- “diagnostics: hide expansion of builtin-like macros” rust#141314 (last review activity: about 57 days ago)
- cc @Vadim Petrochenkov
- “Update bundled musl to 1.2.5” rust#142682 (last review activity: about 49 days ago)
- @Wesley Wiser (recent crater run returned a lot of spurious breakages)
- “[lib] In-place initialization infrastructure” rust#142518 (last review activity: 3 months ago)
- seems more for T-libs but @Michael Goulet (compiler-errors) was mentioned
- “Remove fewer Storage calls in CopyProp and GVN” rust#142531 (last review activity: 2 months ago)
- was partially approved (comment). Status? Need a review from someone familiar with LLVM? cc @tm|352985 ?
- “sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets” rust#123617 (last review activity: 2 months ago)
- status? Besides a rebase, does it need also a T-lang review? See comment
Next meeting’s agenda draft: hackmd link