T Compiler Meeting Agenda 2024 06 13

T-compiler Meeting Agenda 2024-06-13

Announcements

  • Today release of Rust stable 1.79! Blog post PR
  • 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

WG checkins

None

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Only compute specializes query if (min)specialization is enabled in the crate of the specializing impl” rust#126139
    • Authored by compiler-errors
    • Fixes #125197, a regression discovered in a crater run
    • As @lqd assesses, the regression is not yet reported by anyone and the impact in the crater run was rather small but still a “nice-to-have” as a backport
  • :beta: “Do not define opaque types when selecting impls” rust#126258
    • Authored by oli-obk
    • Fixes #126117, a P-high regression reported by a user in their project
    • (@_oli is also working on reintroducing an improved patch in #126316)
  • No stable nominations for T-compiler this time.

T-types stable / T-types beta

  • 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

Unassigned P-high nightly regressions

  • “regression: trait bound not satisfied” rust#125194
    • reverted in beta (#125629) the changes that caused the regression

Performance logs

triage logs 2024-06-13

This week saw more regressions than wins, caused mostly by code being reorganized within the compiler and a new feature being implemented. There have also been some nice improvements caused by better optimizing spans.

Triage done by @kobzol. Revision range: 1d52972d..b5b13568

Summary:

(instructions:u) mean range count
Regressions (primary) 0.6% [0.2%, 2.7%] 105
Regressions (secondary) 1.0% [0.1%, 6.9%] 74
Improvements (primary) -0.5% [-1.0%, -0.2%] 20
Improvements (secondary) -1.4% [-8.8%, -0.2%] 32
All (primary) 0.5% [-1.0%, 2.7%] 125

5 Regressions, 3 Improvements, 4 Mixed; 5 of them in rollups 59 artifact comparisons made in total

Regressions

Rollup of 8 pull requests #125976 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.9% [0.2%, 1.3%] 14
Regressions (secondary) 0.9% [0.4%, 2.8%] 5
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.9% [0.2%, 1.3%] 14
  • Looks like it was caused by #125968.
  • This PR resulted in some code being shuffled around the compiler (what we call “codegen noise”), we determined that it is not worth investigating further.

Don’t walk the bodies of free constants for reachability. #122505 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.8% [0.2%, 2.6%] 4
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 1.8% [0.2%, 2.6%] 4
  • The compiler needs to do a little bit more work after this PR, so the regression is expected.

Unsafe extern blocks #124482 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.2%, 0.4%] 32
Regressions (secondary) 0.2% [0.2%, 0.3%] 4
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.3% [0.2%, 0.4%] 32
  • This PR adds a new feature, so a small performance regression is expected.

Rollup of 7 pull requests #126108 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.2%, 0.3%] 5
Regressions (secondary) 0.9% [0.5%, 1.5%] 15
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.2% [0.2%, 0.3%] 5
  • Caused by #125724, which moves some code to a different compiler package, so that it can be used with the new trait solver.

Add Rust for Linux auto CI job #125209 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 4.3% [2.5%, 6.1%] 2
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) - - 0
  • This PR did not modify the compiler at all, so this has to be noise.

Improvements

Rollup of 11 pull requests #125989 (Comparison Link)

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

Revert: create const block bodies in typeck via query feeding #125918 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.3% [-0.5%, -0.2%] 35
Improvements (secondary) -0.4% [-0.4%, -0.3%] 9
All (primary) -0.3% [-0.5%, -0.2%] 35

Rollup of 9 pull requests #126240 (Comparison Link)

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

Mixed

Make TLS accessors closures that return pointers #125525 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.2%, 0.4%] 6
Regressions (secondary) 2.9% [2.9%, 2.9%] 1
Improvements (primary) -0.5% [-1.1%, -0.3%] 14
Improvements (secondary) - - 0
All (primary) -0.2% [-1.1%, 0.4%] 20
  • More wins than losses.

Rollup of 11 pull requests #126134 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.2%, 1.0%] 43
Regressions (secondary) 0.4% [0.1%, 0.8%] 14
Improvements (primary) - - 0
Improvements (secondary) -0.2% [-0.2%, -0.2%] 3
All (primary) 0.4% [0.2%, 1.0%] 43

rustc_span: Optimize syntax context updates in spans #125017 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.5% [0.2%, 0.6%] 6
Regressions (secondary) 0.7% [0.4%, 1.0%] 10
Improvements (primary) -0.4% [-1.5%, -0.2%] 37
Improvements (secondary) -1.5% [-9.3%, -0.2%] 33
All (primary) -0.3% [-1.5%, 0.6%] 43
  • More improvements than regressions.

Add SingleUseConsts mir-opt pass #125910 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.3%, 0.4%] 2
Regressions (secondary) - - 0
Improvements (primary) -0.3% [-0.4%, -0.2%] 4
Improvements (secondary) -2.3% [-2.9%, -1.7%] 2
All (primary) -0.1% [-0.4%, 0.4%] 6
  • Slighty more wins than losses on instructions.
  • Small binary size win.

Nominated Issues

T-compiler

  • No I-compiler-nominated issues this time.

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

  • “tidy watcher” rust#114209 (last review activity: 5 months ago)
    • This PR looks to me a bit dead in the water. It’s lacking a review and the author seems to not respond. Any taker?
  • “Remove unnecessary impl sorting in queries and metadata” rust#120812 (last review activity: 3 months ago)
    • cc @cjgillot
  • “Suggest a borrow when using dbg” rust#120990 (last review activity: 3 months ago)
    • cc @Esteban Küber
  • “Always emit native-static-libs note, even if it is empty” rust#121216 (last review activity: 3 months ago)
    • cc @Wesley Wiser

Next meetings' agenda draft: hackmd link