T-compiler Meeting Agenda 2025-07-31
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-07-31T19:00:00+02:00
- Stable MIR weekly meeting time:2025-08-01T17: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)
- “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: 9 months ago)
- “Compile UI tests as libraries by default” compiler-team#842 (Zulip) (last review activity: 4 months ago)
- “Unify ui test inline error annotation style” compiler-team#859 (Zulip) (last review activity: 3 months ago)
- “Promote tier 3 riscv32 ESP-IDF targets to tier 2” compiler-team#864 (Zulip) (last review activity: about 48 days ago)
- “Add support for specifying split-debuginfo=unpacked output directory” compiler-team#871 (Zulip) (last review activity: 3 months ago)
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: about 6 days ago)
- “Experiment with replacing specialization in libcore with downcasting” compiler-team#904 (Zulip) (last review activity: about 6 days ago)
- Pending FCP requests (check your boxes!)
- merge: Begin enforcing Tier 2 target maintainer requirements (compiler-team#896)
- @|116266 @|119031 @|248906 @|426609 @_|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: Fix backtraces with
-C panic=aborton linux; emit unwind tables by default (rust#143613)- @|116266 @|248906 @|426609 @|116122 @|444933 @|353056
- no pending concerns
- merge: const-eval: full support for pointer fragments (rust#144081)
- @_|116883
- concerns: spec-complexity-implication (by scottmcm)
- merge: Begin enforcing Tier 2 target maintainer requirements (compiler-team#896)
- 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: inhibit-opts
- concern: lose-debuginfo-data
- “Policy: Empower reviewers to reject burdensome PRs” compiler-team#893 (Zulip)
- concern: resolve ai-should-still-be-mentioned-in-motivation
- concern: wording-nits
- concern: ai-should-still-be-mentioned-in-motivation
- “Tier 3 target proposal: riscv64a23-unknown-linux-gnu” compiler-team#894 (Zulip)
- “Flag
-Zindirect-branch-cs-prefix(retpoline mitigation)” compiler-team#899 (Zulip) - “Add JSON schema for target spec JSON” compiler-team#905 (Zulip)
- “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
- “stabilize c-style varargs for system, sysv64, win64, efiapi, aapcs” rust#144066
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- “Add Hotpatch flag” compiler-team#745 (Zulip)
- “Make the UI test suite more amenable to multiple editions” compiler-team#861 (Zulip)
- “Upgrade
*-linux-musltargets to musl 1.2.5” compiler-team#887 (Zulip) - “Add a tidy check to prevent adding new test files directly under
tests/ui/” compiler-team#902 (Zulip)
- MCPs blocked on unresolved concerns
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: about 15 days ago)
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: about 14 days ago)
- concern: proposal-wording
- “Promote
armv7-unknown-linux-musleabihfto tier 2 with host tools” compiler-team#888 (Zulip) (last review activity: about 14 days ago)- concern: lack-of-maintainers
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: about 43 days 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: about 26 days ago)
- concern: needs-a-blog-post
- concern: broad-change-needs-tlang-buy-in-possibly-fcp
- concern: needs-a-sufficiently-long-deprecation-timeline
- Finalized FCPs (disposition merge)
- “rustdoc: add ways of collapsing all impl blocks” rust#141663
- Other teams finalized FCPs
- “rustdoc: add ways of collapsing all impl blocks” rust#141663
- “Port the proc macro attributes to the new attribute parsing infrastructure” rust#143607
- “Port #[macro_export] to the new attribute parsing infrastructure” rust#143857
Backport nominations
T-compiler beta / T-compiler stable
- No beta nominations for
T-compilerthis time. - 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
- “Fix backtraces with
-C panic=aborton linux; emit unwind tables by default” rust#143613- A few missing checkboxes. From T-compiler any feedback? See comment) cc @Michael (compiler-errors) Goulet @nora (Noratrieb)
- Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 49 T-compiler P-high issues
- 0 P-critical, 0 P-high, 0 P-medium, 3 P-low regression-from-stable-to-beta
- 0 P-critical, 2 P-high, 1 P-medium, 1 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
- No unassigned
P-highnightly regressions this time.
Performance logs
A week with lots of mixed results, including a few benchmarks that appear to be newly bimodal, which made some of the results look closer to noise than signal. Overall, however, the week ended as a slight improvement.
Triage done by @simulacrum. Revision range: 3f9f20f7..e3514bde
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.5% | [0.2%, 0.9%] | 7 |
| Regressions (secondary) | 0.4% | [0.0%, 0.7%] | 26 |
| Improvements (primary) | -0.4% | [-1.1%, -0.2%] | 69 |
| Improvements (secondary) | -1.8% | [-10.3%, -0.0%] | 96 |
| All (primary) | -0.3% | [-1.1%, 0.9%] | 76 |
1 Regressions, 2 Improvements, 9 Mixed; 2 of them in rollups 38 artifact comparisons made in total
Regressions
resolve: Make disambiguators for underscore bindings module-local (take 2) #144272 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.1%, 0.7%] | 17 |
| Regressions (secondary) | 0.3% | [0.0%, 0.6%] | 21 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.4% | [0.1%, 0.7%] | 17 |
Unclear root cause; cachegrind diffs point at the regression ocurring in an unrelated function. It may also be bimodality as the regression temporarily self-resolves in a subsequent commmit.
Improvements
Various refactors to the LTO handling code (part 2) #144062 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -3.4% | [-6.7%, -1.1%] | 6 |
| All (primary) | - | - | 0 |
Avoids doing some work unless LTO is actually requested, which seems to lead to a nice improvement in the large workspace benchmark.
Do not run per-module late lints if they can be all skipped #139597 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 4 |
| Improvements (primary) | -0.4% | [-0.5%, -0.2%] | 17 |
| Improvements (secondary) | -0.5% | [-1.5%, -0.1%] | 24 |
| All (primary) | -0.4% | [-0.5%, -0.2%] | 17 |
Mixed
Ports #[macro_use] and #[macro_escape] to the new attribute parsing infrastructure #143843 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.2% | [0.2%, 0.2%] | 7 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.6% | [-0.9%, -0.0%] | 4 |
| All (primary) | - | - | 0 |
Not particularly worried about the regressions here, they affect unused-warnings and deep-vector only (and not too high in magnitude) and this is part of larger changes throughout the compiler.
Create an AllocId for ConstValue::Slice. #116707 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.7% | [0.2%, 1.0%] | 6 |
| Regressions (secondary) | 0.3% | [0.0%, 0.9%] | 38 |
| Improvements (primary) | -0.3% | [-0.6%, -0.1%] | 17 |
| Improvements (secondary) | -1.9% | [-10.2%, -0.0%] | 56 |
| All (primary) | -0.1% | [-0.6%, 1.0%] | 23 |
Overall an improvement and potentially will allow for further simplifications (https://github.com/rust-lang/rust/pull/116707#issuecomment-3069572150).
Rollup of 15 pull requests #144398 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.4%] | 3 |
| Regressions (secondary) | 0.2% | [0.0%, 0.2%] | 3 |
| Improvements (primary) | -0.4% | [-0.8%, -0.1%] | 14 |
| Improvements (secondary) | -0.3% | [-0.6%, -0.1%] | 21 |
| All (primary) | -0.3% | [-0.8%, 0.4%] | 17 |
Regressions appear limited to incr-println-like scenarios most likely from https://github.com/rust-lang/rust/pull/143374#issuecomment-3037244091. Not worth further investigation given limited impact and the change looks fairly benign.
MIR-build: No longer emit assumes in enum-as casting #144389 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.5% | [0.2%, 0.7%] | 13 |
| Regressions (secondary) | 0.3% | [0.1%, 0.6%] | 17 |
| Improvements (primary) | -0.4% | [-0.9%, -0.1%] | 8 |
| Improvements (secondary) | -0.3% | [-0.3%, -0.3%] | 1 |
| All (primary) | 0.1% | [-0.9%, 0.7%] | 21 |
looks like html5ever has gone bimodal
(https://github.com/rust-lang/rust/pull/144389#issuecomment-3116885962)
Resolve: refactor define into define_local and define_extern #143884 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.1% | [0.1%, 0.1%] | 3 |
| Regressions (secondary) | 0.5% | [0.3%, 0.7%] | 5 |
| Improvements (primary) | -0.5% | [-0.8%, -0.2%] | 15 |
| Improvements (secondary) | -0.3% | [-0.5%, -0.2%] | 27 |
| All (primary) | -0.4% | [-0.8%, 0.1%] | 18 |
Overall positive, few regressions look like they might be within bimodality thresholds.
Avoid unnecessary new_adt/new_fn_def calls. #144425 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.4%, 0.5%] | 6 |
| Regressions (secondary) | 0.5% | [0.3%, 0.7%] | 9 |
| Improvements (primary) | -0.3% | [-0.5%, -0.1%] | 46 |
| Improvements (secondary) | -0.7% | [-1.6%, -0.1%] | 44 |
| All (primary) | -0.2% | [-0.5%, 0.5%] | 52 |
Overall positive, few regressions look like they might be within bimodality thresholds.
Preintern some TyKind::Bound values #144434 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.1% | [0.1%, 0.1%] | 1 |
| Regressions (secondary) | 0.8% | [0.3%, 1.0%] | 8 |
| Improvements (primary) | -0.3% | [-0.4%, -0.1%] | 4 |
| Improvements (secondary) | -0.9% | [-1.7%, -0.2%] | 23 |
| All (primary) | -0.2% | [-0.4%, 0.1%] | 5 |
match-stress regression looks plausibly like bimodality to me. ucd and unicode-normalization look more real but are small in magnitude and limited in which scenarios are affected; overall the change remains positive, so marking as triaged.
Rollup of 6 pull requests #144556 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.6% | [0.2%, 1.2%] | 6 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.7% | [-1.0%, -0.0%] | 8 |
| All (primary) | - | - | 0 |
So that’s probably #143607. One secondary proc-macro benchmark with regressions, another one with gains. I guess the magnitude evens out…
I haven’t dived into the regression yet but it’s probably caused by #143940 (attributes are parsed twice).
Marked as triaged.
Allow more MIR SROA #144543 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.5% | [0.2%, 0.8%] | 3 |
| Regressions (secondary) | 0.3% | [0.2%, 0.3%] | 6 |
| Improvements (primary) | -0.4% | [-0.6%, -0.2%] | 3 |
| Improvements (secondary) | -0.9% | [-1.0%, -0.9%] | 6 |
| All (primary) | 0.0% | [-0.6%, 0.8%] | 6 |
Changes look possibly like longer-term bimodality? But this is also a MIR optimization, so mixed results are somewhat expected.
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Extend
QueryStabilityto handleIntoIteratorimplementations” rust#139345 (last review activity: 2 months ago)- cc @fmease
- “diagnostics: hide expansion of builtin-like macros” rust#141314 (last review activity: about 57 days ago)
- unsure how to proceed on this one, pinged Vadim (which was against this change)
- “add first HelenOS compilation targets” rust#139310 (last review activity: about 54 days ago)
- can this be merged? was approved by Wesley. Does T-bootstrap need to chime in?
Next meetings’ agenda draft: hackmd link