Try   HackMD

T-compiler Meeting Agenda 2025-05-22

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-05-22T19:00:00:00+02

  • Stable MIR Weekly Meeting time:2025-05-23T17:00:00:00+02[## 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

MCPs/FCPs

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: "Revert "Fix linking statics on Arm64EC #140176"" rust#141024
    • Authored by jieyouxu
    • Reverts #140176
    • Nomination Zulip topic (in favor)
    • if approved, we break target arm64ec-pc-windows-msvc. If declined, people see a linker warning
  • :beta: "[win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and instead disable problematic test" rust#141045
    • Authored by dpaoliello
    • Zulip topic (in favor)
    • Merged 3 days ago. Seems good to backport, a undocumented MSVC linker flag caused issues with LLD for aarch64-pc-windows-msvc (Tier 2)
  • :beta: "Do not call name() on rpitit assoc_item" rust#141308
    • Authored by spastorino
    • Zulip topic (in favor)
    • Low risk backport, the ICE was reported by a user. Merged yesterday.
  • 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

  • "When LTO is enabled, miscompiles (x86_64-apple-darwin, at least) and failures to link due to unknown relocation type in switch tables (AArch64 Linux/Android, at least)" rust#141306
    • newly opened regression where setting LTO=true breaks linking on a number of platforms (aarch64-unknown-linux-gnu, aarch64-linux-android, x86_64-apple-darwin), unfortunately on stable 1.87
    • reported by 2 projects (for now), CI fails, need to pin previous rust version
    • a bisection on these platform would be mostly welcome, no MCVE yet

T-types

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

P-high regressions

P-high beta regressions

  • "Performance regression in nightly with target-cpu=native on znver4" rust#139370
    • it's being investigated. it's reached beta (I think)

Unassigned P-high nightly regressions

  • None

Performance logs

triage logs 2025-05-21

A relatively quiet week, likely caused by not that many PRs being merged as many contributors
were at RustWeek and the All Hands event. There were several nice wins in trait solving;
the benchmark suite now contains benchmarks that use the new trait solver, so we can now
focus on optimizing its performance in the near future.

Triage done by @kobzol.
Revision range: 718ddf66..59372f2c

Summary:

(instructions:u) mean range count
Regressions (primary) 0.6% [0.1%, 1.8%] 25
Regressions (secondary) 0.9% [0.1%, 3.1%] 23
Improvements (primary) -0.3% [-0.6%, -0.1%] 33
Improvements (secondary) -2.2% [-9.2%, -0.1%] 26
All (primary) 0.1% [-0.6%, 1.8%] 58

2 Regressions, 5 Improvements, 3 Mixed; 3 of them in rollups
41 artifact comparisons made in total

Regressions

Remove manual WF hack #140557 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.1%, 0.6%] 34
Regressions (secondary) 0.2% [0.1%, 0.2%] 5
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.3% [0.1%, 0.6%] 34
  • Small genuine regression, but the PR removed hack from the type system code, which is worth it.
  • Marked as triaged.

Add std::io::Seek instance for std::io::Take #138023 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 2.0% [1.0%, 3.0%] 2
Regressions (secondary) 1.0% [1.0%, 1.0%] 1
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 2.0% [1.0%, 3.0%] 2
  • Noise produced by newly added benchmarks.
  • Marked as triaged.

Improvements

Rollup of 7 pull requests #141011 (Comparison Link)

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

trait_sel: deep reject match_normalize_trait_ref #140978 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) -5.7% [-9.3%, -0.1%] 9
All (primary) - - 0

Rollup of 8 pull requests #141113 (Comparison Link)

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

move expensive layout sanity check to debug assertions #141039 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.2% [-0.3%, -0.1%] 22
Improvements (secondary) -0.7% [-1.6%, -0.4%] 8
All (primary) -0.2% [-0.3%, -0.1%] 22

Fast path for register_region_obligation #141129 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.2% [-0.3%, -0.1%] 30
Improvements (secondary) -0.5% [-1.0%, -0.0%] 12
All (primary) -0.2% [-0.3%, -0.1%] 30

Mixed

Use the new solver in the impossible_predicates #136988 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.9% [0.4%, 1.1%] 5
Regressions (secondary) 0.5% [0.3%, 1.0%] 27
Improvements (primary) -0.1% [-0.1%, -0.1%] 1
Improvements (secondary) -0.1% [-0.2%, -0.1%] 6
All (primary) 0.8% [-0.1%, 1.1%] 6
  • The regressions are mostly in helloworld and tiny benchmarks, and they are relatively small.
  • We generally expect the perf. of the new solver to improve over time.
  • Marked as triaged.

Optimize ToString implementation for integers #136264 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.7% [0.3%, 1.1%] 2
Regressions (secondary) - - 0
Improvements (primary) -0.2% [-0.2%, -0.2%] 2
Improvements (secondary) - - 0
All (primary) 0.3% [-0.2%, 1.1%] 4
  • Regression on a single benchmark that is new and doesn't have proper noise bounds yet.
  • Also a nice win on the fmt-write-str runtime benchmark, which should be expected here!
  • Marked as triaged.

Rollup of 8 pull requests #141232 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.8% [0.4%, 1.2%] 8
Regressions (secondary) 0.9% [0.2%, 3.2%] 15
Improvements (primary) - - 0
Improvements (secondary) -0.7% [-1.0%, -0.0%] 4
All (primary) 0.8% [0.4%, 1.2%] 8
  • The binary size and the biggest icount regressions come from #140628.
  • Marked as triaged, following up on #140628.

Nominated Issues

T-compiler

  • "Should -Cforce-frame-pointers favor the target or CLI?" rust#140774
    • nominated by @Jubilee
    • The proposal is to document a de-facto incidental decision taken 3 years ago in #86652. The flag -Cforce-frame-pointers=false in most cases is overriden (set to true) by the ABI of the target, removing all frame pointers in the current session.
    • which is actually an optimization in terms of register allocation and the like, thus one that depends on the compiler to implement
    • @Jubilee asks if there should be an FCP or, else, what we prefer to do

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • document reqd. approvals for target changes by davidtwco · Pull Request #834 · rust-lang/rust-forge
    • cc @Wesley Wiser when you have a sec for a quick check
  • "Implement asymmetrical precedence for closures and jumps" rust#134847 (last review activity: 4 months ago)
    • cc @fmease
  • "Tweak VecCache to improve performance" rust#138405 (last review activity: 2 months ago)
    • cc @nora (Noratrieb) (but feel free to re-assign)
  • "feat: add succinct-zkvm os and target" rust#138463
    • cc @Wesley Wiser
  • "Move coercion hack from coerce_unsized to check_cast" rust#138542 (last review activity: 2 months ago)
    • cc @lcnr
  • "Fix PostBorrowckAnalysis for old solver" rust#135899 (last review activity: about 35 days ago)
    • cc: @Michael (compiler-errors) Goulet / @lcnr
  • "Add regression test for nested replacement ranges in cfg_eval" rust#139286 (last review activity: about 49 days ago)
    • cc @fmease

Next meetings' agenda draft: hackmd link