T Compiler Meeting Agenda 2024 12 26

T-compiler Meeting Agenda 2024-12-26

Backport nominations

T-compiler beta / T-compiler stable

  • :beta:“Do not call extern_crate on current trait on crate mismatch errors” rust#133585
    • Authored by estebank
    • Fixes a recent crater run regression #133585 p-high/p-critical (and #133563, reported on nightly)
  • :beta:“Handle DropKind::ForLint in coroutines correctly” rust#134575
    • Authored by compiler-errors
    • Fixes 2 recent ICEs (#134566 and #134541)
  • No stable nominations for T-compiler this time.

Performance logs

triage logs for 2024-12-23

We missed triage last week due to some process issues, so this triage includes two weeks of data. The overall result is positive, due to parser optimizations (#133793), trait solving optimizations (#134501, #132325) and bumping the cc crate (#134505), which improved the performance of C/C++ dependencies of the compiler.

Triage done by @kobzol. Revision range: 1b3fb316..0eca4dd3

Summary:

(instructions:u)meanrangecount
https://github.com/rust-lang/rustc-perf/blob/master/triage/2024-12-23.mdRegressions (primary)0.5%[0.3%, 0.8%]
Regressions (secondary)1.0%[1.0%, 1.0%]1
Improvements (primary)-1.8%[-7.5%, -0.3%]254
Improvements (secondary)-1.3%[-5.4%, -0.3%]224
All (primary)-1.8%[-7.5%, 0.8%]257

4 Regressions, 10 Improvements, 12 Mixed; 9 of them in rollups 90 artifact comparisons made in total

Regressions

Rollup of 6 pull requests #134296 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.4%]7
Regressions (secondary)--0
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.3%[0.2%, 0.4%]7
  • The regressions were caused by #134081.
  • It was not deemed worthy to fix them, because of added maintenance burden.
  • Marked as triaged.

Remove queries from the driver interface #134302 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.1%, 0.6%]11
Regressions (secondary)0.5%[0.2%, 0.7%]18
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.3%[0.1%, 0.6%]11
  • A few tiny regressions in doc builds, caused by a cleanup of the compiler driver interface.
  • Marked as triaged.

Rollup of 8 pull requests #134582 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.2%[0.2%, 0.2%]6
Regressions (secondary)--0
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.2%[0.2%, 0.2%]6
  • Tiny regression on a single benchmark, I don’t think that it’s worthy to investigate further.
  • Marked as triaged.

Asserts the maximum value that can be returned from Vec::len #131193 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 1.2%]104
Regressions (secondary)0.3%[0.1%, 0.8%]38
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.3%[0.2%, 1.2%]104
  • The post-merge regression seems to be much larger than originally expected.
  • Asked the PR author about this.
  • Not marking as triaged yet.

Improvements

Rollup of 9 pull requests #134137 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.9%[-0.9%, -0.9%]1
Improvements (secondary)--0
All (primary)-0.9%[-0.9%, -0.9%]1

Rollup of 4 pull requests #134349 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.3%[-0.8%, -0.1%]4
Improvements (secondary)-0.2%[-0.2%, -0.2%]4
All (primary)-0.3%[-0.8%, -0.1%]4

Rollup of 9 pull requests #134395 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)--0
Improvements (secondary)-0.3%[-0.7%, -0.2%]9
All (primary)--0

rework winnowing to sensibly handle global where-bounds #132325 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.4%[-1.0%, -0.2%]64
Improvements (secondary)-1.6%[-2.1%, -0.7%]9
All (primary)-0.4%[-1.0%, -0.2%]64

Try to fix perf regression in rustdoc after hir attributes #134376 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.3%[-0.6%, -0.2%]10
Improvements (secondary)-0.4%[-0.6%, -0.2%]18
All (primary)-0.3%[-0.6%, -0.2%]10

Speed up Parser::expected_tokens #133793 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.9%[-2.5%, -0.2%]213
Improvements (secondary)-0.8%[-2.5%, -0.1%]105
All (primary)-0.9%[-2.5%, -0.2%]213

Rollup of 5 pull requests #134559 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.5%[-1.4%, -0.1%]17
Improvements (secondary)-3.1%[-4.7%, -1.5%]3
All (primary)-0.5%[-1.4%, -0.1%]17

handle member constraints directly in the mir type checker #134501 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.4%[-0.5%, -0.2%]65
Improvements (secondary)-0.3%[-0.6%, -0.0%]58
All (primary)-0.4%[-0.5%, -0.2%]65

Bump compiler cc to 1.2.5 #134505 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.7%[-7.6%, -0.1%]244
Improvements (secondary)-0.7%[-1.4%, -0.1%]196
All (primary)-0.7%[-7.6%, -0.1%]244

cleanup TypeVerifier #134465 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.3%[-0.4%, -0.2%]6
Improvements (secondary)-0.4%[-0.5%, -0.1%]16
All (primary)-0.3%[-0.4%, -0.2%]6

Mixed

Introduce MixedBitSet #133891 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.6%[0.2%, 1.0%]8
Improvements (primary)-0.6%[-1.3%, -0.2%]67
Improvements (secondary)-0.7%[-2.0%, -0.2%]28
All (primary)-0.6%[-1.3%, -0.2%]67
  • More improvements than regressions, especially on primary benchmarks.
  • Already marked as triaged.

Rollup of 10 pull requests #134108 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.8%]9
Regressions (secondary)0.3%[0.2%, 0.3%]7
Improvements (primary)--0
Improvements (secondary)-0.4%[-0.7%, -0.2%]6
All (primary)0.3%[0.2%, 0.8%]9
  • Perf. runs for the most suspect PRs in the rollup haven’t shown anything, but the regression is tiny, so it does not seem to be worthy of further investigation.
  • Marked as triaged.

We don’t need NonNull::as_ptr debuginfo #133899 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.6%[0.2%, 0.9%]2
Regressions (secondary)0.5%[0.2%, 1.1%]4
Improvements (primary)-0.9%[-2.1%, -0.3%]34
Improvements (secondary)-2.7%[-3.0%, -2.5%]2
All (primary)-0.9%[-2.1%, 0.9%]36
  • More improvements than regressions, and in particular very nice binary size wins.
  • Marked as triaged.

Switch inline(always) in core/src/fmt/rt.rs to plain inline #134047 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.5%[0.5%, 0.5%]1
Improvements (primary)-0.4%[-0.5%, -0.3%]6
Improvements (secondary)--0
All (primary)-0.4%[-0.5%, -0.3%]6
  • More improvements than regressions.
  • Marked as triaged.

Move impl constness into impl trait header #134122 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.8%[0.8%, 0.8%]1
Regressions (secondary)1.7%[1.6%, 1.9%]6
Improvements (primary)-0.3%[-1.1%, -0.1%]59
Improvements (secondary)-0.7%[-2.5%, -0.2%]41
All (primary)-0.3%[-1.1%, 0.8%]60
  • More improvements than regressions.
  • Marked as triaged.

Bounds-check with PtrMetadata instead of Len in MIR #133734 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.3%[0.2%, 0.3%]2
Improvements (primary)-1.4%[-1.4%, -1.4%]1
Improvements (secondary)-0.6%[-0.8%, -0.4%]6
All (primary)-1.4%[-1.4%, -1.4%]1
  • Single tiny regression, otherwise tiny improvements.
  • Marked as triaged.

Remove support for specializing ToString outside the standard library #134258 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.5%]3
Regressions (secondary)--0
Improvements (primary)-0.4%[-0.4%, -0.4%]1
Improvements (secondary)--0
All (primary)0.1%[-0.4%, 0.5%]4
  • Tiny regression that was deemed acceptable.
  • Marked as triaged.

Modifies the index instruction from gep [0 x %Type] to gep %Type #134117 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.1%[0.1%, 0.2%]2
Regressions (secondary)0.6%[0.2%, 1.1%]17
Improvements (primary)--0
Improvements (secondary)-1.3%[-1.4%, -1.2%]4
All (primary)0.1%[0.1%, 0.2%]2
  • The post-merge perf. is very similar to the previous perf. runs, which were deemed acceptable during review.
  • Marked as triaged.

Hir attributes #131808 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.4%[0.2%, 1.1%]9
Regressions (secondary)0.4%[0.1%, 0.6%]20
Improvements (primary)-0.2%[-0.4%, -0.2%]3
Improvements (secondary)-0.3%[-0.7%, -0.2%]5
All (primary)0.3%[-0.4%, 1.1%]12
  • The regression was fixed in #134376.
  • Marked as triaged.

Rollup of 11 pull requests #134470 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.2%[0.1%, 0.4%]7
Improvements (primary)-0.2%[-0.3%, -0.1%]3
Improvements (secondary)-0.5%[-0.5%, -0.3%]5
All (primary)-0.2%[-0.3%, -0.1%]3
  • Regressions seem to be balanced with improvements.
  • Marked as triaged.

Rollup of 8 pull requests #134492 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.4%[0.2%, 0.7%]10
Regressions (secondary)--0
Improvements (primary)--0
Improvements (secondary)-0.1%[-0.1%, -0.1%]1
All (primary)0.4%[0.2%, 0.7%]10
  • The regressions seem to have blipped back soon after
  • Marked as triaged.

Delete Rvalue::Len 🎉 #134330 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.3%, 0.4%]2
Regressions (secondary)--0
Improvements (primary)-0.3%[-0.8%, -0.2%]7
Improvements (secondary)-0.3%[-0.4%, -0.2%]2
All (primary)-0.2%[-0.8%, 0.4%]9
  • More improvements than regressions.
  • Marked as triaged.