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