tags: weekly, rustc
type: docs
note_id: PfNc4XsWTbmI-XxbcooiGw

T-compiler Meeting Agenda 2024-06-27

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

WG checkins

None

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: "Properly gate safe keyword in pre-expansion" rust#126757
    • Authored by compiler-errors
    • Gates safe keyword that leaked in beta channel by mistake, should mitigate #126755
    • slight perf. regression, triaged as less important than this merging this change
  • 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

  • "Regression in nightly-2024-05-27" rust#126117
  • "safe keyword is not feature-gated" rust#126755
    • fixed by beta backport of #126757

Unassigned P-high nightly regressions

  • "regression: trait bound not satisfied" rust#125194
    • @lcnr does it need a new backport? @_apiraino slightly confused by the timeline of the backport of #119820 and #126006
  • "Varargs are completely unchecked if passed as generics" rust-lang/61275
    • Very old issue, possibly not even a regression
    • Marked P-high now after @Jubilee did some minimization and analysis
    • More thoughts from @Jubilee on Zulip

Performance logs

triage logs

Mostly a number of improvements driven by MIR inliner improvements, with a small number
benchmarks having a significant regression due to improvements in
sort algorithms, which are runtime improvements at the cost of usually slight or
neutral compile time regressions, with outliers in a few cases.

Triage done by @simulacrum.
Revision range: c2932aaf..c3d7fb39

Summary:

(instructions:u) mean range count
Regressions (primary) 2.6% [0.2%, 16.4%] 36
Regressions (secondary) 1.4% [0.1%, 5.0%] 31
Improvements (primary) -0.8% [-1.6%, -0.2%] 184
Improvements (secondary) -0.9% [-3.4%, -0.3%] 138
All (primary) -0.2% [-1.6%, 16.4%] 220

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

Regressions

Rollup of 10 pull requests #126655 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.2%, 0.3%] 6
Regressions (secondary) 0.5% [0.2%, 0.9%] 8
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.3% [0.2%, 0.3%] 6

Slight instruction count regressions, but mostly in somewhat noisy benchmarks.
It looks like performance went back to previous levels in the next few commits.

Replace sort implementations #124032 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 2.1% [0.2%, 18.0%] 51
Regressions (secondary) 1.6% [0.4%, 3.9%] 8
Improvements (primary) -0.3% [-0.3%, -0.3%] 1
Improvements (secondary) - - 0
All (primary) 2.0% [-0.3%, 18.0%] 52

This change was extensively benchmarked, and the regressions were known ahead
of time. Runtime improvements are considered worth the regressions, which are
limited to just a few benchmarks. (Extensive effort was also put in to minimize
the compile time and binary size costs).

Properly gate safe keyword in pre-expansion #126757 (Comparison Link)

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

Looks like a minimal regression (maybe spurious/bimodality) and the change is
clearly needed. Marking as triaged.

Generalize {Rc,Arc}::make_mut() to unsized types. #116113 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.8% [0.3%, 2.2%] 13
Regressions (secondary) 0.9% [0.9%, 0.9%] 1
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.8% [0.3%, 2.2%] 13

Regressions are mostly in doc benchmarks, seem likely to be just new docs due
to extra stuff in the standard library.

Improvements

Migrate extern-flag-fun, incremental-debugger-visualiser and incremental-session-fail run-make tests to rmake.rs #126490 (Comparison Link)

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

Rework feature(precise_capturing) to represent use<...> as a syntactical bound #126049 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.2% [-0.2%, -0.2%] 7
Improvements (secondary) -0.4% [-0.6%, -0.2%] 12
All (primary) -0.2% [-0.2%, -0.2%] 7

Fix duplicated attributes on nonterminal expressions #126678 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.4% [-0.5%, -0.2%] 7
Improvements (secondary) -0.7% [-0.7%, -0.6%] 3
All (primary) -0.4% [-0.5%, -0.2%] 7

Trying to address an incremental compilation issues #126409 (Comparison Link)

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

Rollup of 3 pull requests #126838 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.4% [-0.9%, -0.2%] 50
Improvements (secondary) -0.4% [-0.9%, -0.2%] 19
All (primary) -0.4% [-0.9%, -0.2%] 50

Mixed

[perf] More span update benchmarking #126591 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.3%, 0.4%] 5
Regressions (secondary) 2.3% [1.4%, 3.6%] 6
Improvements (primary) -0.3% [-0.3%, -0.3%] 1
Improvements (secondary) -0.3% [-0.4%, -0.2%] 14
All (primary) 0.2% [-0.3%, 0.4%] 6

Triaged to be mostly just inlining noise:
https://github.com/rust-lang/rust/pull/126591#issuecomment-2175875210

Account for things that optimize out in inlining costs #126578 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.4% [0.4%, 2.0%] 6
Regressions (secondary) 1.4% [0.3%, 4.1%] 16
Improvements (primary) -0.6% [-1.5%, -0.2%] 183
Improvements (secondary) -0.9% [-4.6%, -0.2%] 121
All (primary) -0.5% [-1.5%, 2.0%] 189

Mostly an improvement for the majority of benchmarks, including some slight runtime improvements.

More ptr metadata gvn #126541 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.2%, 0.2%] 1
Regressions (secondary) - - 0
Improvements (primary) -1.0% [-1.4%, -0.6%] 2
Improvements (secondary) - - 0
All (primary) -0.6% [-1.4%, 0.2%] 3

Slight improvements on full builds, slight regression in incremental for
cargo. In general fairly neutral, only a few benchmarks affected.

Nominated Issues

T-compiler

  • "in asm!() using a local numeric label made of all 0's and 1's gives a confusing error" rust#94426
    • nominated by @Josh Triplett
    • Quite old issue (2022), recently owned by @asquared31415 and will be fixed in #126922
    • Comment:

      Documenting something that isn't explicitly stated here: this is an issue specifically related to the use of Intel syntax, because (AFAICT) LLVM doesn't have this issue for AT&T syntax.
      This seems like something that, eventually, we could try to get a fix for into LLVM. We would need an assembly dialect option that either handles binary numbers differently or handles backwards labels differently.

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

  • "Remove -Zfuel" rust-lang115293
    • cc @cjgillot for when you have time to bring this to completion
  • "Various rustc_codegen_ssa cleanups" rust#123237 (last review activity: 2 months ago)
    • cc @matthiaskrgr
  • "Add test for fn pointer duplication." rust#123714 (last review activity: 2 months ago)
    • cc: @RalfJ
  • "Silence unnecessary "missing dyn" errors and tweak E0746 suggestions" rust#122957 (last review activity: 2 months ago)
    • cc: @oli
  • "Give RPITITs variances, so they can (not) capture lifetimes" rust#124029 (last review activity: 2 months ago)
    • cc @Michael Goulet (compiler-errors) self-assigned, unsure about current status
  • "Update AST validation module docs" rust#124091 (last review activity: 2 months ago)
    • cc @Esteban Küber
  • "Move alignment checks to codegen" rust#117473 (last review activity: about 42 days ago)
    • cc @oli, I think
  • "Suggest borrowing on fn argument that is impl AsRef" rust#124599 (last review activity: about 55 days ago)
    • cc: @Wesley Wiser

Next week's WG checkins

Next meetings' agenda draft: hackmd link

Select a repo