T Compiler Meeting Agenda 2025 08 07

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

MCPs/FCPs

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-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

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

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-08-04

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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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

T-compiler

  • No I-compiler-nominated issues this time.

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • “Make Rc<T>::deref and Arc<T>::deref zero-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)
  • “Update bundled musl to 1.2.5” rust#142682 (last review activity: about 49 days ago)

Next meetings’ agenda draft: hackmd link