Try   HackMD

T-compiler Meeting Agenda 2025-06-05

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).
  • Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
    @rustbot gained the ability to handle concerns on MCPs/issues:
    • Use @rustbot {concern,resolve} my-concern-title to add or resolve a concern
    • see more details on Zulip
    • Thanks @Urgau :)

Other WG meetings

MCPs/FCPs

  • New MCPs (take a look, see if you like them!)
  • 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: about 5 days ago)
    • "Add Hotpatch flag" compiler-team#745 (Zulip) (last review activity: 7 months ago)
    • "Policy change around adding new unstable flags" compiler-team#787 (Zulip) (last review activity: 7 months ago)
    • "setup typos check in CI (for rust repo)" compiler-team#817 (Zulip) (last review activity: 2 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: 4 months ago)
    • "Add -C hint-mostly-unused option" compiler-team#829 (Zulip) (last review activity: about 2 days ago)
    • "Compile UI tests as libraries by default" compiler-team#842 (Zulip) (last review activity: 2 months ago)
    • "Basic target naming rules" compiler-team#850 (Zulip) (last review activity: 2 months ago)
    • "Add one more "late metadata"/"digest" file to rlib archives" compiler-team#853 (Zulip) (last review activity: 2 months ago)
    • "Unify ui test inline error annotation style" compiler-team#859 (Zulip) (last review activity: about 48 days ago)
    • "Run the UI test suite with multiple editions" compiler-team#861 (Zulip) (last review activity: about 2 days ago)
    • "Promote tier 3 riscv32 ESP-IDF targets to tier 2" compiler-team#864 (Zulip) (last review activity: about 2 days ago)
    • "Add support for specifying split-debuginfo=unpacked output directory" compiler-team#871 (Zulip) (last review activity: about 34 days ago)
    • "WebAssembly for procedural macros" compiler-team#876 (Zulip) (last review activity: about 6 days ago)
  • Pending FCP requests (check your boxes!)
    • "sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets" rust#123617
    • "Add target_env = "macabi" and target_env = "sim"" rust#139451
    • "Use lld by default on x86_64-unknown-linux-gnu stable" rust#140525
  • Things in FCP (make sure you're good with it)
  • Accepted MCPs
    • No new accepted proposals this time.
  • MCPs blocked on unresolved concerns
  • Finalized FCPs (disposition merge)
    • "Add --print host-tuple to print host target tuple" rust#125579
    • "make unsupported_calling_conventions a hard error" rust#129935
    • "Fix ICE when passing DefId-creating args to legacy_const_generics." rust#130443
    • "Stabilize WebAssembly multivalue, reference-types, and tail-call target features" rust#131080
    • "Lint on combining #[no_mangle] and #[export_name]" rust#131558
    • "Stabilize -Zdwarf-version as -Cdwarf-version" rust#136926
  • Other teams finalized FCPs
    • "Implement a lint for implicit autoref of raw pointer dereference - take 2" rust#123239
    • "de-stabilize bench attribute" rust#134273
    • "Remove backticks from ShouldPanic::YesWithMessage's TrFailedMsg" rust#136160
    • "Use the new solver in the impossible_predicates" rust#136988
    • "Remove i128 and u128 from improper_ctypes_definitions" rust#137306
    • "Stabilize the avx512 target features" rust#138940
    • "Check types of const param defaults" rust#139646
    • "Stabilize keylocker" rust#140766
    • "Stabilize sha512, sm3 and sm4 for x86" rust#140767
    • "terminology: allocated object → allocation" rust#141224

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: "x86 (32/64): go back to passing SIMD vectors by-ptr" rust#141309
    • Authored by @RalfJ
    • Fixes #139029 (a perf regression) by partially reverting #135408 and going back to passing SIMD vectors by-ptr on x86
    • Ralf suggests a backport to (comment):

    avoid Rust 1.88 being the only release where a "Rust" ABI function with a by-value SIMD vector on an i686 target modified to disable SSE causes a hard error
    (not a configuration we intend to support, but it wasn't really meant to hard-error quite so quickly)

  • No stable nominations for T-compiler this time.

T-types beta / T-types stable

  • No beta nominations for T-types this time.
  • No stable nominations for T-types this time.

PRs S-waiting-on-team

T-compiler

Issues of Note

Short Summary

P-critical

T-compiler

  • "Enabling LTO causes miscompilation on x86_64-apple-darwin" rust#141306
    • Fixed upstream by @dianqk llvm-project#142304
    • though specifically #141306 needs changing linker or upgrading to Xcode 15.3 in CI runners

T-types

  • No P-critical issues for T-types this time.

P-high regressions

P-high beta regressions

  • No P-high beta regressions this time.

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2025-06-03

A fairly busy week, with lots of changes to performance. Most of the changes
(at least in quantity of benchmarks) are attributable to an update of our PGO
collection to newer benchmarks as part of the 2025 refresh.

Triage done by @simulacrum.
Revision range: 2805e1dc..2fc3deed

Summary:

(instructions:u) mean range count
Regressions (primary) 0.7% [0.1%, 6.7%] 56
Regressions (secondary) 0.6% [0.1%, 1.3%] 69
Improvements (primary) -1.2% [-8.9%, -0.1%] 133
Improvements (secondary) -2.7% [-20.2%, -0.1%] 115
All (primary) -0.6% [-8.9%, 6.7%] 189

2 Regressions, 6 Improvements, 13 Mixed; 9 of them in rollups
40 artifact comparisons made in total

Regressions

Add some track_caller info to precondition panics #129658 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.0% [0.1%, 6.2%] 14
Regressions (secondary) 0.8% [0.4%, 1.2%] 4
Improvements (primary) -0.5% [-0.5%, -0.5%] 1
Improvements (secondary) - - 0
All (primary) 0.9% [-0.5%, 6.2%] 15

Expected regressions to performance for better user experience. No further follow-up warranted.

Rollup of 8 pull requests #141753 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.1%, 1.4%] 78
Regressions (secondary) 0.3% [0.1%, 0.6%] 46
Improvements (primary) - - 0
Improvements (secondary) -0.2% [-0.3%, -0.1%] 3
All (primary) 0.4% [0.1%, 1.4%] 78

#141407 seems to be the
primary cause of the impact. This is (in part) a correctness fix so marking the
regression as triaged.

Improvements

Rollup of 8 pull requests #141662 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) -1.3% [-4.3%, -0.0%] 56
All (primary) - - 0

Unclear cause. Probably not worth digging deeper as solely improvements and only in secondary benchmarks.

Rollup of 8 pull requests #141668 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.1% [0.1%, 0.1%] 2
Improvements (primary) -0.2% [-0.2%, -0.1%] 34
Improvements (secondary) -0.2% [-0.3%, -0.0%] 19
All (primary) -0.2% [-0.2%, -0.1%] 34

Unclear cause. Probably not worth digging deeper as solely improvements and only in secondary benchmarks.
Started a PR build to check one potential root cause.

rustdoc: cleanups relating to allocations #141573 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.4% [-0.6%, -0.2%] 8
Improvements (secondary) -0.6% [-0.6%, -0.6%] 1
All (primary) -0.4% [-0.6%, -0.2%] 8

Add fast path for maybe-initializedness in liveness #141667 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.5% [0.5%, 0.5%] 1
Improvements (primary) -1.0% [-10.6%, -0.2%] 67
Improvements (secondary) -0.5% [-1.2%, -0.2%] 59
All (primary) -1.0% [-10.6%, -0.2%] 67

cstore: Use IndexSet as backing store for postorder dependencies #141730 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) -2.3% [-5.2%, -0.4%] 11
All (primary) - - 0

Tweak fast path trait handling #141731 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) -1.0% [-2.4%, -0.2%] 10
All (primary) - - 0

Mixed

add additional TypeFlags fast paths #141581 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.1% [0.1%, 0.2%] 8
Regressions (secondary) 0.3% [0.2%, 0.5%] 20
Improvements (primary) -0.3% [-0.4%, -0.3%] 5
Improvements (secondary) -2.5% [-5.7%, -0.2%] 10
All (primary) -0.0% [-0.4%, 0.2%] 13

Mostly no significant delta (averaging out to 0% change) but worth it in more pathological cases, so makes sense to land the change.

Rollup of 16 pull requests #141716 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.2%, 0.2%] 3
Regressions (secondary) 0.3% [0.3%, 0.3%] 1
Improvements (primary) - - 0
Improvements (secondary) -0.1% [-0.1%, -0.1%] 1
All (primary) 0.2% [0.2%, 0.2%] 3

Correctness fix in wfcheck (#136429). No further investigation needed.

Bump rustc-perf and update PGO crates #141490 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.1%, 2.0%] 46
Regressions (secondary) 0.7% [0.1%, 3.2%] 110
Improvements (primary) -0.4% [-0.9%, -0.1%] 72
Improvements (secondary) -0.9% [-4.8%, -0.2%] 62
All (primary) -0.1% [-0.9%, 2.0%] 118

Broad changes due to many benchmark crates getting updated, no particular outcome expected.

Rollup of 11 pull requests #141739 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.1% [0.1%, 0.1%] 4
Regressions (secondary) 0.5% [0.4%, 0.6%] 2
Improvements (primary) - - 0
Improvements (secondary) -0.4% [-0.5%, -0.4%] 2
All (primary) 0.1% [0.1%, 0.1%] 4

Nothing obvious in one cachegrind diff, not worth digging deeper.

Make some assertions in solver into debug assertions #141651 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.4% [0.3%, 0.5%] 2
Improvements (primary) -0.1% [-0.1%, -0.1%] 2
Improvements (secondary) -0.8% [-1.1%, -0.2%] 11
All (primary) -0.1% [-0.1%, -0.1%] 2

Rollup of 5 pull requests #141765 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.3%, 0.3%] 6
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) -0.4% [-0.4%, -0.4%] 1
All (primary) 0.3% [0.3%, 0.3%] 6

rustc_codegen_llvm: use threadlocal.address intrinsic to access TLS #139385 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.3% [0.3%, 0.3%] 1
Improvements (primary) -0.7% [-2.0%, -0.2%] 22
Improvements (secondary) -1.4% [-1.5%, -1.4%] 3
All (primary) -0.7% [-2.0%, -0.2%] 22

Expected speed up to thread local access.

Rollup of 8 pull requests #141791 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 2.9% [2.9%, 2.9%] 1
Regressions (secondary) 0.3% [0.3%, 0.3%] 1
Improvements (primary) -1.6% [-1.6%, -1.6%] 1
Improvements (secondary) -0.4% [-0.4%, -0.3%] 2
All (primary) 0.7% [-1.6%, 2.9%] 2

https://github.com/rust-lang/rust/pull/141765#issuecomment-2930545642

Revert "increase perf of charsearcher for single ascii characters" #141678 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.9% [1.6%, 2.2%] 2
Regressions (secondary) - - 0
Improvements (primary) -1.4% [-7.3%, -0.2%] 36
Improvements (secondary) -1.6% [-4.2%, -0.3%] 25
All (primary) -1.2% [-7.3%, 2.2%] 38

This fixes a perf regression from a previous week.

PGO new solver #141453 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.2%, 0.4%] 10
Regressions (secondary) 0.2% [0.2%, 0.3%] 6
Improvements (primary) -0.2% [-0.2%, -0.2%] 1
Improvements (secondary) -8.1% [-15.0%, -3.3%] 14
All (primary) 0.3% [-0.2%, 0.4%] 11

Expected improvements primarily to new solver benchmarks as we now collect PGO
data. Some regressions are expected due to less precise PGO data for old solver
patterns.

slice.get(i) should use a slice projection in MIR, like slice[i] does #139118 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.3% [0.2%, 0.4%] 3
Improvements (primary) -1.2% [-1.3%, -1.1%] 2
Improvements (secondary) - - 0
All (primary) -1.2% [-1.3%, -1.1%] 2

Within noise threshold for (new) regressed benchmark, otherwise see #139118 (comment).

Merge coroutine obligation checking into borrowck parallel loop #141773 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.4% [0.3%, 0.5%] 2
Improvements (primary) -2.9% [-2.9%, -2.9%] 1
Improvements (secondary) - - 0
All (primary) -2.9% [-2.9%, -2.9%] 1

Not really measurable on (at least) perf, new -Zthreads=4 benchmark doesn't see
any meaningful improvement from this.

Nominated Issues

T-compiler

  • No I-compiler-nominated issues this time.

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • "Reduce special casing for the panic runtime" rust#140809 (last review activity: about 27 days ago)
    • cc @Michael (compiler-errors) Goulet
  • "Look at proc-macro attributes when encountering unknown attribute" rust#134841 (last review activity: 5 months ago)
    • anybody interested in picking this up?
  • "Detect struct construction with private field in field with default" rust#135846 (last review activity: 4 months ago)
    • anyone interested in picking this up?
  • "Fix PostBorrowckAnalysis for old solver" rust#135899 (last review activity: 2 months ago)
    • cc: @Michael (compiler-errors) Goulet / @lcnr
  • "Add #[loop_match] for improved DFA codegen" rust#138780 (last review activity: about 59 days ago)
    • cc: @Boxy

Next meetings' agenda draft: hackmd link