T Compiler Meeting Agenda 2023 12 28

T-compiler Meeting Agenda 2023-12-28

Announcements

  • Today release of Rust 1.75.0 (blog post draft)
  • 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 (calendar link)

MCPs/FCPs

WG checkins

Backport nominations

T-compiler stable / T-compiler beta

  • :beta: [1.76.0] “Exhaustiveness: Improve complexity on some wide matches” rust#118796
    • (mentioned last week)
    • PR is now approved and merged, fixes a (P-high) exhaustiveness check rust#118437 (comment)
  • 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

  • No new beta P-high regressions

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2023-12-26

Some of the recent noise swings have been appearing again this week, but luckily less often than before. There were a few actual regressions, but most of them were localized to a single stress test. On the other hand, there were a few very nice wins across the board, especially for check and incremental builds, primarily thanks to #118824 and #119265.

Triage done by @kobzol. Revision range: bf9229a2e366b4c311f059014a4aa08af16de5d8..1ab783112ab4e4807304dbd249b39771246013ef

Summary:

(instructions:u) mean range count
Regressions (primary) 0.6% [0.6%, 0.6%] 1
Regressions (secondary) 2.5% [0.3%, 4.2%] 10
Improvements (primary) -0.8% [-3.3%, -0.1%] 180
Improvements (secondary) -1.2% [-5.5%, -0.2%] 109
All (primary) -0.8% [-3.3%, 0.6%] 181

5 Regressions, 7 Improvements, 2 Mixed; 1 of them in rollups 58 artifact comparisons made in total

Regressions

Make exhaustiveness usable outside of rustc #118842 (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.4% [-0.4%, -0.4%] 1
All (primary) - - 0
  • This PR enables the use of exhaustiveness checking e.g. in rust-analyzer, which is part of the “librarification effort”. The small regression in a single stress-test benchmark is worth it.

mark ty::Const::Error when meet unsupport ty for const generic params #117176 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.7% [0.6%, 0.7%] 4
Regressions (secondary) 0.4% [0.2%, 0.6%] 19
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.7% [0.6%, 0.7%] 4
  • This PR only added a test, so this has to be noise.
  • Already marked as triaged by @jackh726

Exhaustiveness: Improve complexity on some wide matches #118796 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 2.9% [2.6%, 3.1%] 6
Improvements (primary) - - 0
Improvements (secondary) -1.3% [-1.3%, -1.3%] 1
All (primary) - - 0
  • This PR fixed a potential hang in the compiler, the regression of the match checking stress-test is unfortunate, but it’s more important to avoid the pathological case.
  • Already marked as triaged by @apiraino

Subtree sync for rustc_codegen_cranelift #119278 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.9% [0.8%, 0.9%] 3
Regressions (secondary) 0.5% [0.3%, 0.7%] 20
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.9% [0.8%, 0.9%] 3
  • Noise

fix ICE when using raw ptr in a pattern #119274 (Comparison Link)

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

Improvements

fast path for declared_generic_bounds_from_env #119084 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.9% [-2.9%, -0.2%] 8
Improvements (secondary) - - 0
All (primary) -1.9% [-2.9%, -0.2%] 8
  • Very nice improvement to diesel.

use Vec for region constraints instead of BTreeMap #118824 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.5% [-1.3%, -0.2%] 39
Improvements (secondary) -0.7% [-1.7%, -0.2%] 29
All (primary) -0.5% [-1.3%, -0.2%] 39
  • Nice improvements to check builds across the board.

Rollup of 6 pull requests #119237 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.5% [-0.8%, -0.3%] 17
Improvements (secondary) -0.4% [-0.6%, -0.2%] 10
All (primary) -0.5% [-0.8%, -0.3%] 17
  • Nice win for type checking across several benchmarks. It’s unclear which PR from the rollup has caused the wins though.

Stabilize ip_in_core feature #119276 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.9% [-0.9%, -0.8%] 4
Improvements (secondary) -0.5% [-0.8%, -0.2%] 21
All (primary) -0.9% [-0.9%, -0.8%] 4
  • This is just noise returning back to steady state.

Unify SourceFile::name_hash and StableSourceFileId #119139 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.2% [-0.2%, -0.1%] 3
Improvements (secondary) -0.8% [-0.9%, -0.6%] 3
All (primary) -0.2% [-0.2%, -0.1%] 3
  • A few small wins for incremental benchmarks.

Fix display of warning block if it is first element of the top doc block #119283 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.7% [-0.7%, -0.7%] 2
Improvements (secondary) -0.4% [-0.6%, -0.3%] 5
All (primary) -0.7% [-0.7%, -0.7%] 2
  • This PR only modified the UI and tests of rustdoc, so this is just noise.

Make closures carry their own ClosureKind #119258 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.1% [-1.1%, -1.1%] 1
Improvements (secondary) - - 0
All (primary) -1.1% [-1.1%, -1.1%] 1
  • This is probably just noise.

Mixed

add more niches to rawvec #106790 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.1%, 0.7%] 20
Regressions (secondary) 0.6% [0.2%, 1.0%] 2
Improvements (primary) -0.4% [-2.0%, -0.1%] 27
Improvements (secondary) -0.9% [-5.3%, -0.2%] 16
All (primary) -0.1% [-2.0%, 0.7%] 47
  • This PR enabled more optimization opportunities for LLVM, which could in theory help with program optimization, but it also caused some binary size increases and compile-time regressions.
  • Not marking as triaged yet.

Remove metadata decoding DefPathHash cache #119265 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.9% [0.9%, 0.9%] 1
Regressions (secondary) - - 0
Improvements (primary) -0.6% [-2.1%, -0.2%] 101
Improvements (secondary) -1.2% [-3.2%, -0.2%] 65
All (primary) -0.6% [-2.1%, 0.9%] 102
  • Very nice check and incremental wins across the board.
  • The single regression is probably just noise returning back to steady state.

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

  • “large_assignments: Lint on specific large args passed to functions” rust#116520 (last review activity: 2 months ago)
    • cc: WG-compiler-performance? (comment)
  • “Add -Zuse-sync-unwind” rust#117744 (last review activity: about 41 days ago)
    • Do these changes need an MCP?
  • revert for benchmark rust#118436
    • cc: @vadim petrochenkov @pnkfelix seems PR author is waiting on a feedback about perf. results (comment)

Next week’s WG checkins

  • @_WG-async-foundations by @nikomatsakis and @tmandry
  • @WG-diagnostics by @Esteban Küber and @oli

Next meetings' agenda draft: hackmd link