T-compiler Meeting Agenda 2025-06-26
Announcements
- Today rust 1.88 is out (the “if-let-chains edition”, 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-06-26T19:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Upgrade
*-linux-musltargets to musl 1.2.5” compiler-team#887 (Zulip) - “Promote
armv7-unknown-linux-musleabihfto tier 2 with host tools” compiler-team#888 (Zulip)
- “Upgrade
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: 8 months ago)
- “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: 8 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: 5 months ago)
- “Compile UI tests as libraries by default” compiler-team#842 (Zulip) (last review activity: 3 months ago)
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: 3 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: about 13 days ago)
- “Add support for specifying split-debuginfo=unpacked output directory” compiler-team#871 (Zulip) (last review activity: about 55 days ago)
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: about 27 days ago)
- Pending FCP requests (check your boxes!)
- merge: sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets (rust#123617)
- no pending checkboxes
- concerns: stabilization-scope (by wesleywiser)
- merge: Add
target_env = "macabi"andtarget_env = "sim"(rust#139451)- @|116266 @|119031 @_|353056
- no pending concerns
- merge: sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets (rust#123617)
- Things in FCP (make sure you’re good with it)
- “setup typos check in CI (for rust repo)” compiler-team#817 (Zulip)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- concern: inhibit-opts
- concern: impl-at-mir-level
- concern: lose-debuginfo-data
- “Add one more “late metadata”/“digest” file to rlib archives” compiler-team#853 (Zulip)
- “Constrain process required for some user-facing changes to lower support tier targets” compiler-team#884 (Zulip)
- “Expose
target_abi = "elfv{1,2}"onpowerpc64-any-unixy-elfytargets” compiler-team#885 (Zulip) - “use separate build directory for rust-analyzer to use” compiler-team#889 (Zulip)
- “Create
rustc_target::spec::Targetfrom a Builder” compiler-team#890 (Zulip) - “Run more tests for rustc_codegen_gcc in the CI” compiler-team#891 (Zulip)
- concern: docs-and-contributor-experience
- “Use lld by default on
x86_64-unknown-linux-gnustable” rust#140525
- Accepted MCPs
- “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) - “Add
-Z hint-mostly-unusedoption to hint that most of a crate’s API surface will be unused” compiler-team#883 (Zulip)
- MCPs blocked on unresolved concerns
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: about 8 days ago)
- concern: path-to-stabilization
- “Run the UI test suite with multiple editions” compiler-team#861 (Zulip) (last review activity: about 23 days ago)
- concern: edition-directive-meaning
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: about 8 days ago)
- Finalized FCPs (disposition merge)
- “Fix ICE when passing DefId-creating args to legacy_const_generics.” rust#130443
- “Stabilize WebAssembly
multivalue,reference-types, andtail-calltarget features” rust#131080 - “Stabilize
-Zdwarf-versionas-Cdwarf-version” rust#136926 - “Split up the
unknown_or_malformed_diagnostic_attributeslint” rust#140717
- Other teams finalized FCPs
- “Stabilize
derive(CoercePointee)” rust#133820 - “Specify the behavior of
file!” rust#134442 - “Lint on fn pointers comparisons in external macros” rust#134536
- “Remove backticks from
ShouldPanic::YesWithMessage’sTrFailedMsg” rust#136160 - “Sized Hierarchy: Part I” rust#137944
- “const-eval: allow constants to refer to mutable/external memory, but reject such constants as patterns” rust#140942
- “Allow volatile access to non-Rust memory, including address 0” rust#141260
- “builtin dyn impl no guide inference” rust#141352
- “Add (back)
unsupported_calling_conventionslint to reject more invalid calling conventions” rust#141435 - “Document representation of
Option<unsafe fn()>” rust#141447 - “Stabilize
feature(generic_arg_infer)” rust#141610 - “Make the
dangerous_implicit_autorefslint deny-by-default” rust#141661 - “Report never type lints in dependencies” rust#141937
- “Reject unsupported
extern "{abi}"s consistently in all positions” rust#142134
- “Stabilize
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
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 58 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, 1 P-high, 1 P-medium, 0 P-low regression-from-stable-to-nightly
- 0 P-critical, 33 P-high, 100 P-medium, 21 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 dominated by the landing of a large patch implementing RFC#3729 which unfortunately introduced rather sizeable performance regressions (avg of ~1% instruction count on 111 primary benchmarks). This was deemed worth it so that the patch could land and performance could be won back in follow up PRs.
Triage done by @rylev. Revision range: 45acf54e..42245d34
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.1% | [0.2%, 9.1%] | 123 |
| Regressions (secondary) | 1.0% | [0.1%, 4.6%] | 86 |
| Improvements (primary) | -3.8% | [-7.3%, -0.3%] | 2 |
| Improvements (secondary) | -2.3% | [-18.5%, -0.2%] | 44 |
| All (primary) | 1.0% | [-7.3%, 9.1%] | 125 |
2 Regressions, 4 Improvements, 10 Mixed; 7 of them in rollups 40 artifact comparisons made in total
Regressions
Sized Hierarchy: Part I #137944 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.3% | [0.1%, 9.9%] | 111 |
| Regressions (secondary) | 0.9% | [0.2%, 2.9%] | 101 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.7% | [-0.7%, -0.7%] | 1 |
| All (primary) | 1.3% | [0.1%, 9.9%] | 111 |
- As noted in this summary comment, the performance regression is expected and will be addressed in follow ups.
Rewrite inline attribute parser to use new infrastructure and improve diagnostics for all parsed attributes #138165 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.8%] | 12 |
| Regressions (secondary) | 0.5% | [0.2%, 0.8%] | 21 |
| Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 2 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.2%] | 1 |
| All (primary) | 0.3% | [-0.2%, 0.8%] | 14 |
- Perf addressed in a follow up: https://github.com/rust-lang/rust/pull/142777
Improvements
[perf] Cache the canonical instantiation of param-envs #142316 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.7% | [0.7%, 0.7%] | 1 |
| Improvements (primary) | -0.7% | [-0.9%, -0.6%] | 12 |
| Improvements (secondary) | -5.0% | [-20.3%, -0.6%] | 15 |
| All (primary) | -0.7% | [-0.9%, -0.6%] | 12 |
forward the bootstrap runner to run-make #141856 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -2.8% | [-2.8%, -2.8%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -2.8% | [-2.8%, -2.8%] | 1 |
Rollup of 10 pull requests #142878 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.1% | [1.1%, 1.1%] | 1 |
| Regressions (secondary) | 1.1% | [1.1%, 1.1%] | 1 |
| Improvements (primary) | -0.3% | [-0.5%, -0.2%] | 11 |
| Improvements (secondary) | -0.5% | [-0.7%, -0.3%] | 13 |
| All (primary) | -0.1% | [-0.5%, 1.1%] | 12 |
Let String pass #[track_caller] to its Vec calls #142728 (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
Change __rust_no_alloc_shim_is_unstable to be a function #141061 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.3%, 0.5%] | 3 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.5% | [-0.5%, -0.5%] | 1 |
| Improvements (secondary) | -1.8% | [-3.1%, -0.3%] | 7 |
| All (primary) | 0.1% | [-0.5%, 0.5%] | 4 |
- The performance changes are more or less a wash so I don’t think it necessitates any investigation.
Rollup of 6 pull requests #142689 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.4%] | 4 |
| Regressions (secondary) | 0.2% | [0.2%, 0.2%] | 11 |
| Improvements (primary) | -0.4% | [-0.4%, -0.4%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.2% | [-0.4%, 0.4%] | 5 |
- Primary regressions seem to be blips returning back to their previous state on the next perf run.
Rollup of 7 pull requests #142697 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
| Improvements (primary) | -0.4% | [-0.4%, -0.2%] | 3 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.4% | [-0.4%, -0.2%] | 3 |
- Too small of a perf regression (in only secondary benchmarks) to warrant an investigation
Allow storing format_args!() in variable #140748 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.2%, 1.0%] | 24 |
| Regressions (secondary) | 1.6% | [0.3%, 4.7%] | 12 |
| Improvements (primary) | -3.7% | [-7.1%, -0.3%] | 2 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.1% | [-7.1%, 1.0%] | 26 |
- Asked the author for ideas on causes after failing to find them in my own investigation.
Rollup of 9 pull requests #142794 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 2.9% | [2.9%, 2.9%] | 1 |
| Regressions (secondary) | 0.8% | [0.2%, 1.2%] | 10 |
| Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 4 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.4% | [-0.2%, 2.9%] | 5 |
- Caused by https://github.com/rust-lang/rust/pull/142713
- Author is looking into possible fixes.
Rollup of 8 pull requests #142814 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.5% | [0.4%, 1.0%] | 7 |
| Improvements (primary) | -1.4% | [-2.8%, -0.1%] | 2 |
| Improvements (secondary) | -0.8% | [-1.4%, -0.3%] | 24 |
| All (primary) | -1.4% | [-2.8%, -0.1%] | 2 |
- The regressions all seem to be noise.
Rollup of 3 pull requests #142826 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.3%, 0.3%] | 2 |
| Regressions (secondary) | 0.2% | [0.2%, 0.2%] | 1 |
| Improvements (primary) | -0.4% | [-0.4%, -0.4%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.1% | [-0.4%, 0.3%] | 3 |
- Change overall is near a wash, and the regressions are small enough that I don’t think it’s worth investigating the performance change here deeply.
Only traverse reachable blocks in JumpThreading. #142546 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.6% | [0.3%, 2.9%] | 2 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.3% | [-0.3%, -0.3%] | 2 |
| All (primary) | 1.6% | [0.3%, 2.9%] | 2 |
- The regression in Clap is just noise and the other regression was seen before in a perf run and deemed acceptable by @compiler-errors.
Skip no-op drop glue #142508 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.7% | [0.4%, 3.0%] | 2 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.3% | [-0.4%, -0.3%] | 4 |
| Improvements (secondary) | -1.8% | [-3.1%, -0.4%] | 6 |
| All (primary) | 0.3% | [-0.4%, 3.0%] | 6 |
- Regression in clap is noise and the rest of the changes balance out.
Rollup of 5 pull requests #142906 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 1 |
| Regressions (secondary) | 0.2% | [0.2%, 0.3%] | 3 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.1% | [-0.1%, -0.1%] | 4 |
| All (primary) | 0.2% | [0.2%, 0.2%] | 1 |
- Regression is small enough that it’s not worth investigating IMO
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: about 29 days ago)- cc @fmease
- “Add FileCheck annotations to mir-opt/copy-prop” rust#135099
- cc: @Wesley Wiser (pending question?) Otherwise mostly reviewed by @_cjgillot
- “Allow
&raw [mut | const]for union field in safe” rust#141469 (last review activity: about 30 days ago)- cc @Michael (compiler-errors) Goulet can the FCP be triggered here or are there other pending questions? See comment
Next meetings’ agenda draft: hackmd link