T-compiler Meeting Agenda 2025-08-07
Announcements
- Today release of Rust 1.89!
- 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-07T19: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: 5 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 54 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 12 days ago)
- “Experiment with replacing specialization in libcore with downcasting” compiler-team#904 (Zulip) (last review activity: about 12 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 @|426609 @_|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: lose-debuginfo-data
- concern: impl-at-mir-level
- concern: inhibit-opts
- “Policy: Empower reviewers to reject burdensome PRs” compiler-team#893 (Zulip)
- concern: resolve ai-should-still-be-mentioned-in-motivation
- concern: ai-should-still-be-mentioned-in-motivation
- concern: wording-nits
- “Tier 3 target proposal: riscv64a23-unknown-linux-gnu” compiler-team#894 (Zulip)
- “Proposal for a dedicated test suite for the parallel frontend” compiler-team#906 (Zulip)
- concern: can-we-just-enhance-ui-suite
- concern: name-a-specific-reason
- “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) - “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
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: about 49 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 33 days ago)
- concern: needs-a-sufficiently-long-deprecation-timeline
- concern: broad-change-needs-tlang-buy-in-possibly-fcp
- concern: needs-a-blog-post
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: about 21 days ago)
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: about 20 days ago)
- concern: proposal-wording
- “Promote
armv7-unknown-linux-musleabihfto tier 2 with host tools” compiler-team#888 (Zulip) (last review activity: about 21 days ago)- concern: lack-of-maintainers
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: about 49 days ago)
- Finalized FCPs (disposition merge)
- None
- Other teams finalized FCPs
- “rustdoc: add ways of collapsing all impl blocks” rust#141663
- “Remove the
#[no_sanitize]attribute in favor of#[sanitize(xyz = "on|off")]” rust#142681 - “Port the proc macro attributes to the new attribute parsing infrastructure” rust#143607
- “lower pattern bindings in the order they’re written and base drop order on primary bindings’ order” rust#143764
- “Port #[macro_export] to the new attribute parsing infrastructure” rust#143857
- “Mark all deprecation lints in name resolution as deny-by-default and report-in-deps” rust#143929
- “Stabilize const TypeId::of” rust#144133
- “Add lint against dangling pointers from local variables” rust#144322
- “Upgrade semicolon_in_expressions_from_macros from warn to deny” rust#144369
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Gate const trait syntax” rust#144956
- Authored by fmease (1.90 beta.1)
- Fixes #144958, P-high regression (but affecting 1.90 so not P-critical)
- Voting Zulip topic in favor
- 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
- “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
- 0 T-compiler P-critical issues
- 50 T-compiler P-high issues
- 0 P-critical, 0 P-high, 1 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, 24 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
Overall positive week, but most of the changes are in very small incremental scenarios.
Triage done by @panstromek. Revision range: e3514bde..07b7dc90
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.2%, 1.0%] | 28 |
| Regressions (secondary) | 0.7% | [0.0%, 2.8%] | 29 |
| Improvements (primary) | -0.5% | [-2.7%, -0.1%] | 95 |
| Improvements (secondary) | -0.9% | [-9.2%, -0.0%] | 62 |
| All (primary) | -0.3% | [-2.7%, 1.0%] | 123 |
2 Regressions, 4 Improvements, 10 Mixed; 6 of them in rollups 35 artifact comparisons made in total
Regressions
LoongArch64 LSX fast-path for str.contains(&str) #144393 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.9% | [0.9%, 1.0%] | 6 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | - | - | 0 |
match-stress noise, triaged by @lqd in PR comment
uniquify root goals during HIR typeck #144405 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 1.2% | [0.1%, 4.1%] | 14 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | - | - | 0 |
Regression is mostly in new solver, which is not yet enabled by default. The other one is small regression in secondary stress test, that should be fine. See also comment by author.
Improvements
Complete span AST lowering. #144557 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.7% | [-1.8%, -0.2%] | 9 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.7% | [-1.8%, -0.2%] | 9 |
Rollup of 6 pull requests #144718 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.5% | [-0.6%, -0.5%] | 2 |
| Improvements (secondary) | -0.3% | [-1.0%, -0.1%] | 8 |
| All (primary) | -0.5% | [-0.6%, -0.5%] | 2 |
Optimize region constraints #144446 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.1% | [-0.1%, -0.1%] | 2 |
| Improvements (secondary) | -0.5% | [-1.0%, -0.3%] | 12 |
| All (primary) | -0.1% | [-0.1%, -0.1%] | 2 |
dont assemble shadowed impl candidates #144732 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -1.3% | [-2.9%, -0.1%] | 7 |
| All (primary) | - | - | 0 |
Mixed
Rollup of 6 pull requests #144637 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.1% | [1.1%, 1.1%] | 1 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.1% | [-0.1%, -0.1%] | 1 |
| All (primary) | 1.1% | [1.1%, 1.1%] | 1 |
Looks like a spurious change in image to me. Erases gain from https://github.com/rust-lang/rust/pull/144543, which was indentified as codegen unit perturbation in https://github.com/rust-lang/rust/pull/144543#issuecomment-3124957313, but this PR goes even furhter, only to return back to previous state in https://github.com/rust-lang/rust/pull/144718
All these changes are in the backend part of the breakdown graph, so this truly seems like spurious codegen unit shuffling.
Rollup of 4 pull requests #144692 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.9% | [0.9%, 1.0%] | 6 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.1%] | 4 |
| All (primary) | - | - | 0 |
Regression in match-stress is a bimodal noise.
Remove eval_always from check_private_in_public. #116316 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.5% | [0.1%, 2.1%] | 40 |
| Regressions (secondary) | 0.3% | [0.1%, 0.5%] | 20 |
| Improvements (primary) | -0.7% | [-2.8%, -0.2%] | 41 |
| Improvements (secondary) | -0.6% | [-1.3%, -0.2%] | 26 |
| All (primary) | -0.1% | [-2.8%, 2.1%] | 81 |
Regressions outweigh improvements. Also, as per the reviewer comment, incr-patched regressions are eliminated in https://github.com/rust-lang/rust/pull/144479.
Rollup of 7 pull requests #144768 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.2%, 0.7%] | 12 |
| Regressions (secondary) | 0.2% | [0.2%, 0.2%] | 1 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.1% | [-0.1%, -0.1%] | 1 |
| All (primary) | 0.4% | [0.2%, 0.7%] | 12 |
doc regression on various benchmarks. Based on detailed results, it’s in the def_kind query, so it’s likely #143849, because it adds a callsite. Other PRs look mostly unrelated (few triagebot and config changes, confusables improvement, minor rustdoc-json change).
Remove the witness type from coroutine args (without actually removing the type) #144458 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.0% | [0.0%, 0.0%] | 1 |
| Improvements (primary) | -1.5% | [-1.5%, -1.5%] | 1 |
| Improvements (secondary) | -0.5% | [-1.5%, -0.0%] | 5 |
| All (primary) | -1.5% | [-1.5%, -1.5%] | 1 |
include-blobs regression looks like noise, just returned to previous state.
Perform check_private_in_public by module. #144479 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.4% | [0.0%, 0.5%] | 3 |
| Improvements (primary) | -0.7% | [-1.1%, -0.2%] | 27 |
| Improvements (secondary) | -0.5% | [-0.6%, -0.1%] | 4 |
| All (primary) | -0.7% | [-1.1%, -0.2%] | 27 |
Improvements outweigh regressions. Addresses some regressions from https://github.com/rust-lang/rust/pull/116316 (triaged above). include-blob regression is noise, externs is probably real, but the benchmark is very artificial.
Use less HIR to compute effective visibility. #144554 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.3%] | 6 |
| Regressions (secondary) | 0.3% | [0.1%, 0.5%] | 7 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.1% | [-0.2%, -0.1%] | 5 |
| All (primary) | 0.2% | [0.2%, 0.3%] | 6 |
Some small regressions on incr-unchanged scenarios. Looks like the post-merge results are worse then the pre-merge ones. Pinged the author to confirm if it’s ok.
expand WF obligations when checking method calls #144704 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.3%, 0.4%] | 3 |
| Regressions (secondary) | 0.6% | [0.2%, 1.1%] | 12 |
| Improvements (primary) | -0.2% | [-0.4%, -0.2%] | 19 |
| Improvements (secondary) | -1.2% | [-8.1%, -0.2%] | 32 |
| All (primary) | -0.2% | [-0.4%, 0.4%] | 22 |
Perf improvements greatly outweigh regressions. Already triaged by @nnethercote.
Rollup of 12 pull requests #144869 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 2 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.8% | [-1.0%, -0.0%] | 7 |
| All (primary) | - | - | 0 |
include-blob regression looks like noise (returning to some baseline state).
Rollup of 12 pull requests #144876 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.5% | [0.5%, 0.5%] | 1 |
| Regressions (secondary) | 0.9% | [0.9%, 1.0%] | 6 |
| Improvements (primary) | -0.7% | [-0.9%, -0.5%] | 2 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.3% | [-0.9%, 0.5%] | 3 |
match-stress is bimodal noise. image looks like a similar kind of perturbation like happened in https://github.com/rust-lang/rust/pull/144543, https://github.com/rust-lang/rust/pull/144637 and https://github.com/rust-lang/rust/pull/144718, probably caused by codegen unit scheduling change, but this time it doesn’t have as large backend wall time change. The changes are still in LLVM though, based on detailed results. We’ll see whether it comes back. I don’t think this is worth more investigation.
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Make
Rc<T>::derefandArc<T>::derefzero-cost” rust#132553 (last review activity: 2 months ago)- cc: @scottmcm
- “lint ImproperCTypes: overhaul (take 2 of “better handling of indirections”)” rust#134697 (last review activity: about 54 days ago)
- cc: @Jubilee
- “Add NonNull pattern types” rust#142339 (last review activity: about 52 days ago)
- this seems having a quitewide change surface, many people are tagged. Where to start?
- “-Zharden-sls flag (target modifier) added to enable mitigation against straight line speculation (SLS)” rust#136597 (last review activity: about 51 days ago)
- cc: @Jubilee
- “compiler: Fix “power alignment” problems on AIX” rust#142310 (last review activity: about 48 days ago)
- review from https://github.com/beetrees (not a member), auto-assigned to Wesley, left a comment asking if this waiting on llvm#144673
- “Update bundled musl to 1.2.5” rust#142682 (last review activity: about 49 days ago)
Next meetings’ agenda draft: hackmd link