T-compiler Meeting Agenda 2025-08-21
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-08-21T19: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: 5 months ago)
- “Unify ui test inline error annotation style” compiler-team#859 (Zulip) (last review activity: about 12 days ago)
- “Promote tier 3 riscv32 ESP-IDF targets to tier 2” compiler-team#864 (Zulip) (last review activity: 2 months 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 27 days ago)
- “Experiment with replacing specialization in libcore with downcasting” compiler-team#904 (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: Fix backtraces with
-C panic=aborton linux; emit unwind tables by default (rust#143613)- @|116266 @|426609 @_|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
- “Policy: Empower reviewers to reject burdensome PRs” compiler-team#893 (Zulip)
- “Begin enforcing Tier 2 target maintainer requirements” compiler-team#896 (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
- “fix drop scope for
super letbindings withinif let” rust#145342
- “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) - “Tier 3 target proposal: riscv64a23-unknown-linux-gnu” compiler-team#894 (Zulip)
- “Flag
-Zindirect-branch-cs-prefix(retpoline mitigation)” compiler-team#899 (Zulip) - “Add a tidy check to prevent adding new test files directly under
tests/ui/” compiler-team#902 (Zulip) - “Add JSON schema for target spec JSON” compiler-team#905 (Zulip)
- MCPs blocked on unresolved concerns
- “Promote
armv7-unknown-linux-musleabihfto tier 2 with host tools” compiler-team#888 (Zulip) (last review activity: about 36 days ago)- concern: lack-of-maintainers
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: about 35 days ago)
- concern: proposal-wording
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: about 36 days ago)
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 2 months ago)
- concern: path-to-stabilization
- “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: 10 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: about 47 days ago)
- concern: needs-a-sufficiently-long-deprecation-timeline
- concern: needs-a-blog-post
- concern: broad-change-needs-tlang-buy-in-possibly-fcp
- “Promote
- Finalized FCPs (disposition merge)
- “
apply_member_constraints: fix placeholder check” rust#142071 - “Check coroutine upvars in dtorck constraint” rust#144156
- “Require approval from t-infra instead of t-release on tier bumps” rust#144906
- “
- Other teams finalized FCPs
- “Reject relaxed bounds inside associated type bounds (ATB)” rust#135331
- “
apply_member_constraints: fix placeholder check” rust#142071 - “Remove the
#[no_sanitize]attribute in favor of#[sanitize(xyz = "on|off")]” rust#142681 - “Port
#[link]to the new attribute parsing infrastructure " rust#143193 - “
c_variadic: Add future-incompatibility warning for...arguments without a pattern outside ofexternblocks” rust#143619 - “Stabilize const TypeId::of” rust#144133
- “Check coroutine upvars in dtorck constraint” rust#144156
- “Add lint against dangling pointers from local variables” rust#144322
- “Upgrade semicolon_in_expressions_from_macros from warn to deny” rust#144369
- “Extract TraitImplHeader in AST/HIR” rust#144386
- “Stabilize loongarch32 inline asm” rust#144402
- “Stabilize
sse4aandtbmtarget features” rust#144542 - “Rewrite the new attribute argument parser” rust#144689
- “Don’t warn on never to any
ascasts as unreachable” rust#144804 - “Require approval from t-infra instead of t-release on tier bumps” rust#144906
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “fix(debuginfo): handle false positives in overflow check” rust#145297
- Authored by adwinwhite
- Nominated by @_apiraino Fixes #144636, looks like a P-medium regression (unsure, see Zulip thread)
- Voting Zulip topic (just opened)
- :beta: “fix drop scope for
super letbindings withinif let” rust#145342- Authored by dianne
- Voting Zulip topic
- Discussed last week, decided to postpone (see https://rust-lang.zulipchat.com/#narrow/channel/238009-t-compiler.2Fmeetings/topic/.5Bweekly.5D.202025-08-14/near/534495133 and comment), other teams seem undecided as well (see comment and comment)
- T-lang seems to lean in favor (see comment)
- :beta: “Do not use effective_visibilities query for Adt types of a local trait while proving a where-clause” rust#145642
- Authored by xizheyin
- Fixes #145611, discussed on Zulip
- Voting Zulip topic, in favor. Low risk, great reward backport
- :stable: “fix drop scope for
super letbindings withinif let” rust#145342- Authored by dianne
- Voting Zulip topic
- We weren’t so keen on stable backporting this (comment)
- Here a useful summary
- #145328 deemed “unlikely to affect real code”
- No beta nominations for
T-typesthis time. - No stable nominations for
T-typesthis time.
PRs S-waiting-on-team
- “Tracking Issue for
bare_link_kind” rust#132061 - “Stabilize
fn_align:#[align(N)]on functions” rust#140261 - “Add new
function_casts_as_integerlint” rust#141470 - “Stabilize
-Cmin-function-alignment” rust#142824 - “Fix backtraces with
-C panic=aborton linux; emit unwind tables by default” rust#143613 - Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 2 T-compiler P-critical issues
- 56 T-compiler P-high issues
- 0 P-critical, 1 P-high, 1 P-medium, 4 P-low regression-from-stable-to-beta
- 1 P-critical, 1 P-high, 1 P-medium, 0 P-low regression-from-stable-to-nightly
- 1 P-critical, 25 P-high, 100 P-medium, 23 P-low regression-from-stable-to-stable
P-critical
- “
pin!()has incorrect/unexpected drop order inside if-let.” rust#145328- See backports
- “ICE (nightly): panicked at compiler/rustc_const_eval/src/util/type_name.rs:145:18: entered unreachable code” rust#145696
- just opened, a fix in being authored by @nnethercote in #145700 (thanks!)
- No
P-criticalissues forT-typesthis time.
P-high regressions
- “E0275 is occuring in beta 1.90.0-beta.1 but not in stable 1.89.0” rust#145151
- being taken care in #145395 by @lcnr (thanks!)
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
Lots of noise/bimodality this week. Overall though no major performance impacting changes landed.
Triage done by @simulacrum. Revision range: 6355cd39..239e8b1b
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 1.2%] | 94 |
| Regressions (secondary) | 0.4% | [0.1%, 1.1%] | 48 |
| Improvements (primary) | -1.2% | [-3.2%, -0.2%] | 16 |
| Improvements (secondary) | -0.3% | [-0.5%, -0.2%] | 5 |
| All (primary) | 0.1% | [-3.2%, 1.2%] | 110 |
1 Regressions, 3 Improvements, 7 Mixed; 4 of them in rollups 27 artifact comparisons made in total
Regressions
Make no_mangle on foreign items explicit instead of implicit #144678 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.6%] | 8 |
| Regressions (secondary) | 0.2% | [0.1%, 0.5%] | 8 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.3% | [0.2%, 0.6%] | 8 |
One extra query introduced, possibly to be removed at a future date with additional validation on attributes in an earlier stage of the compiler.
Improvements
Rollup of 13 pull requests #145388 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.7% | [0.7%, 0.7%] | 1 |
| Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 3 |
| Improvements (primary) | -0.2% | [-0.4%, -0.2%] | 68 |
| Improvements (secondary) | -0.4% | [-1.8%, -0.2%] | 24 |
| All (primary) | -0.2% | [-0.4%, 0.7%] | 69 |
Rework target checking for built-in attributes #145085 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.4% | [-0.9%, -0.1%] | 13 |
| All (primary) | - | - | 0 |
Rollup of 10 pull requests #145551 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -1.2% | [-1.5%, -0.8%] | 2 |
| Improvements (secondary) | -0.6% | [-1.5%, -0.1%] | 3 |
| All (primary) | -1.2% | [-1.5%, -0.8%] | 2 |
Mixed
Fix parallel rustc not being reproducible due to unstable sorts of items #144722 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.5%] | 5 |
| Regressions (secondary) | 0.2% | [0.2%, 0.3%] | 7 |
| Improvements (primary) | -0.2% | [-0.6%, -0.1%] | 12 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.1% | [-0.6%, 0.5%] | 17 |
#145358 claws back some of the performance impact from this PR.
Update to LLVM 21.1.0 rc3 #145298 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.1%, 0.2%] | 8 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
| Improvements (secondary) | -0.7% | [-1.8%, -0.2%] | 3 |
| All (primary) | 0.1% | [-0.2%, 0.2%] | 9 |
I’m not convinced the changes are real here, but they’re certainly not significant enough to investigate deeply for an LLVM upgrade.
Rollup of 9 pull requests #145366 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.1%, 0.7%] | 43 |
| Regressions (secondary) | 0.3% | [0.1%, 0.6%] | 20 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.5% | [-0.5%, -0.5%] | 1 |
| All (primary) | 0.2% | [0.1%, 0.7%] | 43 |
Caused by #145153. In general regressions across the board aren’t great, but this is headed towards introduction of new functionality, so perhaps required. Some profiling of the PR may yield interesting results given how wide spread the regression is for some micro-opt work.
resolve: Split extern prelude into two scopes #144793 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 2 |
| Regressions (secondary) | 0.7% | [0.3%, 1.9%] | 4 |
| Improvements (primary) | -0.4% | [-0.7%, -0.2%] | 5 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.2% | [-0.7%, 0.2%] | 7 |
Looks like it’s only a real regression for the secondary externs scenario, and even there only significant in incr-unchanged. I’m not worried enough to merit further poking, especially as it seems plausible this is a natural (if slight) regression from tracking at finer granularity.
Rollup of 11 pull requests #145407 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.4%] | 39 |
| Regressions (secondary) | 0.4% | [0.2%, 0.9%] | 18 |
| Improvements (primary) | -1.4% | [-3.7%, -0.2%] | 3 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.1% | [-3.7%, 0.4%] | 42 |
Regression caused by #145233, based on granular perf run, but there’s some suspicion that it might still be just noise. Further investigation seems unwarranted at this time.
Patterns: represent constants as valtrees #144591 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 5.3% | [5.3%, 5.3%] | 1 |
| Regressions (secondary) | 0.7% | [0.2%, 1.0%] | 9 |
| Improvements (primary) | -2.7% | [-3.2%, -2.2%] | 6 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -1.5% | [-3.2%, 5.3%] | 7 |
The match-stress regression seems real, but probably not important to look into given the context of this PR. Other regressions look like noise.
Rollup of 21 pull requests #145423 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.2% | [0.2%, 3.2%] | 4 |
| Regressions (secondary) | 0.4% | [0.0%, 0.5%] | 3 |
| Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
| Improvements (secondary) | -1.5% | [-2.0%, -0.9%] | 2 |
| All (primary) | 0.9% | [-0.2%, 3.2%] | 5 |
Most regressions are noise but ripgrep regression looks real, seems to be caused by #122661. See writeup for some brief investigation.
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “-Zharden-sls flag (target modifier) added to enable mitigation against straight line speculation (SLS)” rust#136597 (last review activity: 2 months ago)
- cc: @Jubilee
- “Improve type parameter suggestion heuristic for missing types” rust#140073 (last review activity: 3 months ago)
- cc @León Orell Liehr (fmease)
- “Tweak output of missing lifetime on associated type” rust#135602 (last review activity: 5 months ago)
- cc: @Nadrieril
- “Provide more context on
Fnclosure modifying binding” rust#133149 (last review activity: 9 months ago)- 2025-08-21 cc @Sparrow Li (autoassigned after review reroll)
- “aarch64-nintendo-switch-freestanding - Enable CPU features that are always available in a live system (crypto instructions, plus explicit NEON).” rust#144613
- maybe not a top prio but this seems an easy one, it’s approved but (for some reason?) not merged
Next meetings’ agenda draft: hackmd link