T-compiler Meeting Agenda 2025-08-28
Announcements
- Project Director nominations 2025, see Zulip thread
- Announcement blog post
- What does it mean to be Project Director?
- How does the election process work?
- Scheduled for time:2025-08-29T16:00:00+02:00 a steering meeting: any request or anything we want to discuss/talk about?
- 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
- Stable MIR weekly meeting time:2025-08-29T17:00:00+02:00
- WG-async design meeting time:2025-08-28T19: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)
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 2 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: about 54 days ago)
- concern: needs-a-blog-post
- concern: broad-change-needs-tlang-buy-in-possibly-fcp
- concern: needs-a-sufficiently-long-deprecation-timeline
- “Compile UI tests as libraries by default” compiler-team#842 (Zulip) (last review activity: 5 months ago)
- cc @Waffle Lapkin in case you have feedback about the comments
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: about 43 days ago)
- “Unify ui test inline error annotation style” compiler-team#859 (Zulip) (last review activity: about 19 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)
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: about 41 days ago)
- concern: proposal-wording
- “Promote
armv7-unknown-linux-musleabihfto tier 2 with host tools” compiler-team#888 (Zulip) (last review activity: about 42 days ago)- concern: lack-of-maintainers
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: about 34 days ago)
- “Experiment with replacing specialization in libcore with downcasting” compiler-team#904 (Zulip) (last review activity: about 34 days ago)
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 2 months 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: lose-debuginfo-data
- concern: impl-at-mir-level
- cc @Wesley Wiser can you please review the latest changes (cc: @Sparrow Li @cezarbbb) against the outstanding concerns? See latest comments. Thanks.
- “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
- “Policy: Empower reviewers to reject burdensome PRs” compiler-team#893 (Zulip)
- Finalized FCPs (disposition merge)
- None
- 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
- “Make sure to treat only param where clauses as inherent” rust#145262
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “fix(debuginfo): handle false positives in overflow check” rust#145297
- Authored by adwinwhite
- Fixes #144636 (P-medium, started as a nightly regression, then landed on beta), doesn’t seem super-impacting
- Voting Zulip topic, undecided
- EDIT(jieyouxu): I’m almost inclined to suggest a revert… In that incomplete debuginfo seems better than infinite recursion
- I believe the chain was like:
- Incomplete DWARF 1.88: Incomplete DWARF debug info in Rust 1.88 #143241
- fx(debuginfo): disable overflow check for recursive non-enum types #144407 to fix #143241
- Unfortunately #144407 introduces Infinite recursion when generating debuginfo #144636
- (This PR) fix(debuginfo): handle false positives in overflow check #145297 to fix #144636
- But #144636 is already known to be insufficient: Expanding type recursion check in debug info generation has false positives #145912
- I believe the chain was like:
- :beta: “fix drop scope for
super letbindings withinif let” rust#145342- Authored by dianne
- Voting Zulip topic
- Discussed last week, we wanted to wait it to be merged and see if it solved regressions A and B (from list)
- Crater run results are out
- guess nothing changed in order to deliberate on the backport?
- :beta: “Revert suggestions for missing methods in tuples” rust#145765
- Authored by lqd
- Voting Zulip topic, in favor
- Fixes an ICE now hitting stable and being widely reported (see comment). Reverts #142034.
- :stable: “Revert suggestions for missing methods in tuples” rust#145765
- Authored by lqd
- Voting Zulip topic, seems we agree to backport only in case of a dot release (which is not mentioned for now)
- No beta nominations for
T-typesthis time. - No stable nominations for
T-typesthis time.
PRs S-waiting-on-team
- “Add new
function_casts_as_integerlint” rust#141470- cc: @_Guillaume Gomez (imperio) for current status
- EDIT(jieyouxu): T-lang wants to add a “recommended API” so users can “do the right thing” instead of only having a lint to say “don’t do this” without offering a workable alternative.
- Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 2 T-compiler P-critical issues
- 55 T-compiler P-high issues
- 0 P-critical, 0 P-high, 0 P-medium, 4 P-low regression-from-stable-to-beta
- 0 P-critical, 2 P-high, 0 P-medium, 0 P-low regression-from-stable-to-nightly
- 1 P-critical, 26 P-high, 100 P-medium, 22 P-low regression-from-stable-to-stable
P-critical
- “
pin!()has incorrect/unexpected drop order inside if-let.” rust#145328- fixed by #145342
- “SIGSEGV without
unsafewhen passing&dyn Traitto&dyn ParentTrait” rust#145752- Should be solved by #145807 (being reviewed)
- “SIGSEGV without
unsafewhen passing&dyn Traitto&dyn ParentTrait” rust#145752
P-high regressions
- No
P-highbeta regressions this time.
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
Lot of regressions this week, mostly in rustdoc benchmarks from newly added features. The rest of the suite saw mostly small regressions in small benchmarks and also some improvements, notably from token tree parsing optimization in macro code, span optimization and ongoing work on new solver, which is not fully enabled, yet.
Triage done by @panstromek. Revision range: 239e8b1b..ee361e8f
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 3.7% | [0.3%, 34.5%] | 42 |
| Regressions (secondary) | 2.3% | [0.0%, 53.3%] | 79 |
| Improvements (primary) | -0.5% | [-0.7%, -0.3%] | 9 |
| Improvements (secondary) | -0.9% | [-2.8%, -0.0%] | 30 |
| All (primary) | 3.0% | [-0.7%, 34.5%] | 51 |
5 Regressions, 1 Improvement, 7 Mixed; 6 of them in rollups 38 artifact comparisons made in total
Regressions
Rollup of 19 pull requests #145589 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 6.2% | [0.2%, 33.1%] | 18 |
| Regressions (secondary) | 3.4% | [0.3%, 50.8%] | 24 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.0% | [-0.0%, -0.0%] | 1 |
| All (primary) | 6.2% | [0.2%, 33.1%] | 18 |
doc regressions were expected, but not as big. Pinged @zalathar, who investigated some of the regressions.
Rollup of 15 pull requests #145600 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 4.6% | [4.6%, 4.6%] | 1 |
| Regressions (secondary) | 4.4% | [4.4%, 4.4%] | 1 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 4.6% | [4.6%, 4.6%] | 1 |
Looks like noise, syn is just coming back from a spike from previous rollup.
Split transmute check from HIR typeck #145469 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.6% | [0.6%, 0.6%] | 1 |
| Regressions (secondary) | 0.8% | [0.6%, 1.0%] | 6 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.6% | [0.6%, 0.6%] | 1 |
Regression looks real, but small and affect mostly secondary stress test. Asked on the PR whether that’s justified.
Rollup of 28 pull requests #145773 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.5% | [0.5%, 0.5%] | 1 |
| Regressions (secondary) | 2.1% | [0.1%, 4.2%] | 2 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.5% | [0.5%, 0.5%] | 1 |
include-blob regression looks like noise (similar bump we occasinaly see on it). Smaller doc regression was identified by @zalathar as #145731 and is somewhat expected as there’s more work to do when generating search index.
Add support for macro expansion in rustdoc source code pages #137229 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.5% | [0.4%, 6.6%] | 16 |
| Regressions (secondary) | 5.8% | [0.6%, 16.5%] | 10 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 1.5% | [0.4%, 6.6%] | 16 |
doc regression, triaged by @GuillaumeGomez: “Sadly the perf impact was to be expected since it adds more code.” Some performance improvement is likely possible by future improvements based on another commment in the thread.
Improvements
Sometimes skip over tokens in parse_token_tree. #145348 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -1.0% | [-2.1%, -0.3%] | 16 |
| All (primary) | - | - | 0 |
Mixed
Update cargo #145478 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.1% | [1.0%, 1.2%] | 2 |
| Regressions (secondary) | 1.1% | [1.1%, 1.1%] | 1 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.3% | [-0.4%, -0.3%] | 7 |
| All (primary) | 1.1% | [1.0%, 1.2%] | 2 |
Regressions in syn look like noise, returning to previous state. Cargo update should have no effect on this. Already triaged by Mark.
library: Migrate from cfg_if to cfg_select #145489 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 9 |
| Improvements (primary) | -1.2% | [-1.2%, -1.2%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -1.2% | [-1.2%, -1.2%] | 1 |
include-blob regersion is noise (bimodality, returning to the default state).
Rollup of 15 pull requests #145599 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 1 |
| Regressions (secondary) | 0.2% | [0.1%, 0.5%] | 11 |
| Improvements (primary) | -4.8% | [-4.8%, -4.8%] | 1 |
| Improvements (secondary) | -4.6% | [-4.6%, -4.6%] | 1 |
| All (primary) | -2.3% | [-4.8%, 0.2%] | 2 |
Non doc results are noise. For doc regressions, seems like https://github.com/rust-lang/rust/pull/139345 is the most likely (based on these results? It seems plausible as it changes FxHashMap to FxIndexMap, which is bigger I believe. I’m inclined to say that it’s ok, since that’s a correctness change, too and the regressions are small (also seem a bit overshooting and slightly reduced in next PR).
Tell LLVM about read-only captures #145259 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.8% | [0.8%, 0.8%] | 1 |
| Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 7 |
| Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
| Improvements (secondary) | -1.3% | [-1.7%, -0.2%] | 8 |
| All (primary) | 0.3% | [-0.2%, 0.8%] | 2 |
include-blob regressions are noise. serde_derive looks real but it’s tiny (adding a println statement). Seems like the biggest query differences are in LLVM, that seems to match the PR area.
Rollup of 16 pull requests #145728 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.2% | [0.2%, 0.2%] | 1 |
| Improvements (primary) | -0.8% | [-1.2%, -0.4%] | 5 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.8% | [-1.2%, -0.4%] | 5 |
Single regression is in new solver, which is not finished and not enabled by default.
Only unpack span data once to compute end_point and next_point. #145494 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.7% | [0.4%, 0.8%] | 6 |
| Improvements (primary) | -0.3% | [-0.3%, -0.2%] | 2 |
| Improvements (secondary) | -0.5% | [-0.6%, -0.4%] | 9 |
| All (primary) | -0.3% | [-0.3%, -0.2%] | 2 |
tt-muncher regression is noise (bimodality, returning back to previous state)
Rollup of 14 pull requests #145796 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.8% | [0.8%, 0.9%] | 2 |
| Regressions (secondary) | 1.5% | [1.5%, 1.5%] | 1 |
| Improvements (primary) | -0.4% | [-0.4%, -0.3%] | 2 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.2% | [-0.4%, 0.9%] | 4 |
tt-muncher regression is noise. The other two I’m not sure. They could also be noise because they have symetrical improvements from https://github.com/rust-lang/rust/pull/145728. All of this is in the backend, I don’t see anything related in the PR list, so I guess it might be codegen unit shuffling?
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Add FileCheck annotations to mir-opt/copy-prop” rust#135099 (last review activity: 4 months ago)
- cc @Wesley Wiser
- “error out when
repr(align)exceeds COFF limit” rust#142638 (last review activity: 2 months ago)- cc @Jubilee
- “Fix passing/returning structs with the 64-bit SPARC ABI” rust#142680 (last review activity: 2 months ago)
- cc: @Jubilee
- “Offload host2” rust#142696 (last review activity: 2 months ago)
- cc @oli
- “Fix unuseful span in type error in some format_args!() invocations” rust#140916 (last review activity: 2 months ago)
- cc @Michael Goulet (compiler-errors)
- “RDR: avoid rebuilding dependent crates after comment changes” rust#143249 (last review activity: about 58 days ago)
- cc @Vadim Petrochenkov
- “Update bundled musl to 1.2.5” rust#142682 (last review activity: about 49 days ago)
Next meetings’ agenda draft: hackmd link