T-compiler Meeting Agenda 2025-07-03
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-03T19:00:00+02:00
- Stable MIR weekly meeting time:2025-07-04T17:00:00+02:00
- WG-async planning meeting time:2025-07-04T19:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- No new proposals 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)
- “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 20 days ago)
- “Add support for specifying split-debuginfo=unpacked output directory” compiler-team#871 (Zulip) (last review activity: 2 months ago)
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: about 34 days ago)
- “Upgrade
*-linux-musltargets to musl 1.2.5” compiler-team#887 (Zulip) (last review activity: about 6 days ago) - “Promote
armv7-unknown-linux-musleabihfto tier 2 with host tools” compiler-team#888 (Zulip) (last review activity: about 6 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)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- concern: inhibit-opts
- concern: impl-at-mir-level
- concern: lose-debuginfo-data
- “Make the UI test suite more amenable to multiple editions” compiler-team#861 (Zulip)
- concern: edition-directive-meaning
- “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)
- “Auto-create tracking issues for accepted MCPs” compiler-team#892 (Zulip)
- “Policy: Empower reviewers to reject burdensome PRs” compiler-team#893 (Zulip)
- concern: wait-for-some-discussions-to-settle
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- “setup typos check in CI (for rust repo)” compiler-team#817 (Zulip)
- “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)
- MCPs blocked on unresolved concerns
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: about 15 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 1 days ago)
- concern: needs-a-blog-post
- concern: broad-change-needs-tlang-buy-in-possibly-fcp
- concern: needs-a-sufficiently-long-deprecation-timeline
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: about 15 days ago)
- Finalized FCPs (disposition merge)
- “Use lld by default on
x86_64-unknown-linux-gnustable” rust#140525
- “Use lld by default on
- Other teams finalized FCPs
- “Allow
#[must_use]on associated types to warn on unused values in generic contexts” rust#142590
- “Allow
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Reduce mismatched-lifetime-syntaxes suggestions to MaybeIncorrect” rust#142980
- Authored by shepmaster
- Fixes #142998, fixes an annoying multiple lint suggestion generated from cargo fix (comment)
- Voting Zulip topic, in favor
- :beta: “Fix hang in –print=file-names in bootstrap” rust#142928
- This is a bootstrap backport, nominated by @Wesley Wiser (do we approve their backports as well?)
- Voting Zulip topic, in favor
- :stable: “Do not ICE when reassigning in GatherLocalsVisitor on the bad path” rust#140827
- Authored by compiler-errors
- Nominated by @_cyrgani in comment
- Fixes a bunch of reported ICEs (#140785 #140730 #143188 #143209) but they don’t seem critical
- Voting Zulip topic, generally not in favor
- 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, 2 P-high, 1 P-medium, 0 P-low regression-from-stable-to-nightly
- 0 P-critical, 33 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
Lots of changes this week with results dominated by the 1-5% improvements from #142941 across lots of primary benchmarks in the suite.
Triage done by @simulacrum. Revision range: 42245d34..ad3b7257
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 2.9% | [0.2%, 21.6%] | 16 |
| Regressions (secondary) | 1.5% | [0.1%, 13.5%] | 38 |
| Improvements (primary) | -0.9% | [-4.5%, -0.1%] | 99 |
| Improvements (secondary) | -6.2% | [-67.9%, -0.1%] | 100 |
| All (primary) | -0.4% | [-4.5%, 21.6%] | 115 |
3 Regressions, 6 Improvements, 5 Mixed; 4 of them in rollups 39 artifact comparisons made in total
Regressions
Rollup of 10 pull requests #143091 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 2.1% | [0.1%, 2.7%] | 7 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.1% | [-0.1%, -0.1%] | 1 |
| All (primary) | - | - | 0 |
Regressions in ctfe and match stress tests, trying to find the PR that introduced them in case there’s obvious tweaks, but not particularly noteworthy given the limited impact.
Rollup of 9 pull requests #143116 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 1.1% | [0.9%, 1.3%] | 9 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | - | - | 0 |
Regressions are in the coercions stress test, not clear which of the rolled
up PRs caused it. Started one candidate perf run.
Rollup of 11 pull requests #143173 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.5% | [0.3%, 0.7%] | 2 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.5% | [0.3%, 0.7%] | 2 |
Likely due to #142641 which added extra work to proc-macro crates, which are the benchmarks affected here.
Improvements
Encode hir attributes cross-crate properly #142777 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.4% | [-1.4%, -0.1%] | 16 |
| Improvements (secondary) | -0.6% | [-1.3%, -0.2%] | 20 |
| All (primary) | -0.4% | [-1.4%, -0.1%] | 16 |
Rollup of 8 pull requests #143057 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.4% | [-0.4%, -0.3%] | 3 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.4% | [-0.4%, -0.3%] | 3 |
Fast path for WF goals in new solver #142223 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.4%, -0.1%] | 8 |
| Improvements (secondary) | -1.5% | [-3.5%, -0.3%] | 13 |
| All (primary) | -0.2% | [-0.4%, -0.1%] | 8 |
Collapse Analysis|Borrowck|PostBorrowckAnalysis when there are no opaques #142802 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.2% | [0.1%, 0.2%] | 2 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -2.4% | [-7.5%, -0.5%] | 14 |
| All (primary) | - | - | 0 |
Shallowly bail from coerce_unsized more #142941 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.8% | [0.8%, 0.8%] | 1 |
| Improvements (primary) | -0.8% | [-4.6%, -0.2%] | 84 |
| Improvements (secondary) | -5.6% | [-21.6%, -0.1%] | 71 |
| All (primary) | -0.8% | [-4.6%, -0.2%] | 84 |
Mixed
update to literal-escaper 0.0.4 for better API without unreachable and faster string parsing #140999 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.3%] | 3 |
| Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.7% | [-1.2%, -0.4%] | 16 |
| All (primary) | 0.2% | [0.2%, 0.3%] | 3 |
Regressions limited to stm32f4, some mild improvements, doesn’t seem worth further investigation.
Stop collecting unmentioned constants #142893 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 19.2% | [17.2%, 21.2%] | 2 |
| Regressions (secondary) | 9.1% | [6.0%, 13.4%] | 5 |
| Improvements (primary) | -1.6% | [-2.3%, -0.8%] | 8 |
| Improvements (secondary) | -67.8% | [-67.9%, -67.8%] | 2 |
| All (primary) | 2.6% | [-2.3%, 21.2%] | 10 |
Regressed benchmarks are incremental scenarios which have changed codegen units – overall, this is an improvement in the typical case.
Don’t fold in Instantiate when there’s nothing to fold #142317 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.1%, 0.3%] | 9 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.3%, -0.1%] | 3 |
| Improvements (secondary) | -2.6% | [-2.9%, -2.4%] | 6 |
| All (primary) | 0.1% | [-0.3%, 0.3%] | 12 |
Some mixed results from this but improvements were deemed as outweighing the regressions (comment).
Only compute recursive callees once. #142625 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.3%, 0.6%] | 3 |
| Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 2 |
| Improvements (primary) | -1.3% | [-2.5%, -0.2%] | 2 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.3% | [-2.5%, 0.6%] | 5 |
Per the PR description makes some intentional tradeoffs between two variants of implementation and is overall an improvement or neutral.
Stop backends from needing to support nullary intrinsics #142839 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 2.7% | [2.7%, 2.7%] | 1 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.3% | [-0.4%, -0.3%] | 5 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.2% | [-0.4%, 2.7%] | 6 |
Some slight changes, no particularly significant changes.
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “[Coverage][MCDC] Do not initialize mcdc parameters for instances containing no mcdc statements” rust#129989 (last review activity: 3 months ago)
- Assigned reviewer @Zalathar last expressed concerns about the PR
- I wonder if we should discuss this, there is a tracking issue for MCDC coverage
- “Do not eagerly reject inference vars when trying to resolve method calls.” rust#126316 (last review activity: 2 months ago)
- cc @lcnr (just reminder, but it’s something to work with Oli)
- “Do not run per-module late lints if they can be all skipped” rust#139597 (last review activity: 2 months ago)
- cc: @Boxy
- “Suppress suggestions while span is in external library” rust#139316 (last review activity: 2 months ago)
- unsure about this one, seems it needs some design first (comment)
- “Don’t lint against named labels in
naked_asm!” rust#140871 (last review activity: about 53 days ago)- cc @Michael (compiler-errors) Goulet
Next meetings’ agenda draft: hackmd link