T Compiler Meeting Agenda 2024 04 18

T-compiler Meeting Agenda 2024-04-18

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

  • @_WG-llvm by @Nikita Popov (previous checkin):

    There were some LLVM patch version updates, some ABI fixes, and some changes to reduce our reliance on LLVM types (and thus LLVM layout calculations)

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: [1.78] “Silence unused_imports for redundant imports” rust#123744
    • Authored by @_Michael Goulet (compiler-errors) (thanks!)
    • Addresses this comment from #121708, fixes a regression in #117772
  • :beta: [1.78] “Stop using HirId for fn-like parents since closures are not OwnerNodes” rust#123804
    • Authored by @_Michael Goulet (compiler-errors) (thanks!)
    • Fixes #123273, a diag. regression causing an ICE (from latest beta run)
  • :beta: [1.78] “Call the panic hook for non-unwind panics in proc-macros” rustc#123825
    • Authored by @_Ben Kimock (Saethlin) (thanks!)
    • Implements this suggestion (comment)

      If a proc macro causes a non-unwinding panic, proc_macro isn’t able to catch the unwind and report the panic as a compile error by passing control back to the compiler. Our only chance to produce any diagnostic is the panic hook, so we should call it.

  • 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

  • None new

Unassigned P-high nightly regressions

  • “nightly-2024-04-05 regression: error[E0275]: overflow evaluating the requirement” rust#123573

Performance logs

triage logs for 2024-05-16

A quiet week, with slightly more improvements than regressions. There were a few noise spikes, but other than that nothing too interesting.

Triage done by @Kobzol. Revision range: 86b603cd..ccfcd950b

Summary:

(instructions:u) mean range count
Regressions (primary) 0.5% [0.3%, 1.4%] 9
Regressions (secondary) 0.4% [0.2%, 1.1%] 20
Improvements (primary) -0.6% [-2.5%, -0.2%] 41
Improvements (secondary) -0.8% [-1.4%, -0.2%] 4
All (primary) -0.4% [-2.5%, 1.4%] 50

1 Regression, 3 Improvements, 6 Mixed; 5 of them in rollups 62 artifact comparisons made in total

Regressions

Implement syntax for impl Trait to specify its captures explicitly (feature(precise_capturing)) #123468 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.2%, 0.2%] 5
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.2% [0.2%, 0.2%] 5
  • A tiny regression on a stress test, introduced by a new feature.
  • Marked as triaged.

Improvements

Remove my scalar_copy_backend_type optimization attempt #123185 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.7% [-0.7%, -0.7%] 4
Improvements (secondary) -2.0% [-2.7%, -1.2%] 2
All (primary) -0.7% [-0.7%, -0.7%] 4

Rollup of 8 pull requests #123823 (Comparison Link)

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

Rollup of 4 pull requests #123982 (Comparison Link)

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

Mixed

Only collect mono items from reachable blocks #123272 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.2%, 1.5%] 8
Regressions (secondary) - - 0
Improvements (primary) -0.8% [-1.5%, -0.3%] 6
Improvements (secondary) - - 0
All (primary) -0.1% [-1.5%, 1.5%] 14
  • Fixed an important bug, and results were mixed anyway.

Rollup of 7 pull requests #123725 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.2%, 0.2%] 2
Regressions (secondary) 0.9% [0.2%, 2.6%] 7
Improvements (primary) -0.4% [-0.6%, -0.2%] 2
Improvements (secondary) -0.6% [-0.6%, -0.6%] 1
All (primary) -0.1% [-0.6%, 0.2%] 4
  • The largest regressions were noise, the rest was mixed.
  • Marked as triaged.

Rollup of 8 pull requests #123762 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.2%, 0.5%] 2
Regressions (secondary) 0.5% [0.3%, 1.7%] 9
Improvements (primary) - - 0
Improvements (secondary) -2.8% [-4.2%, -1.4%] 2
All (primary) 0.4% [0.2%, 0.5%] 2
  • The largest regression on the coercions benchmark is noise.
  • The rest were small regressions on doc benchmarks.
  • Marked as triaged.

Rollup of 4 pull requests #123884 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.4%, 0.4%] 1
Regressions (secondary) - - 0
Improvements (primary) -1.0% [-1.0%, -1.0%] 1
Improvements (secondary) -0.3% [-0.3%, -0.3%] 6
All (primary) -0.3% [-1.0%, 0.4%] 2
  • The single regression was immediately reverted, the rest were small improvements.
  • Marked as triaged.

Re-enable has_thread_local for i686-msvc #123257 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.3% [0.3%, 0.4%] 6
Improvements (primary) -0.3% [-0.3%, -0.3%] 1
Improvements (secondary) - - 0
All (primary) -0.3% [-0.3%, -0.3%] 1
  • This has to be noise, since the PR did not modify x64 Linux.

Get rid of USIZE_MARKER in formatting infrastructure #123819 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.6% [0.4%, 0.9%] 2
Regressions (secondary) 1.5% [1.5%, 1.5%] 1
Improvements (primary) -0.4% [-0.6%, -0.3%] 5
Improvements (secondary) - - 0
All (primary) -0.1% [-0.6%, 0.9%] 7
  • More improvements than regressions.

Nominated Issues

T-compiler

  • “Relocate coroutine upvars into Unresumed state” rust#120168
    • Nominated by Felix (comment)
    • Context of this PR (comment):

      This PR is an attempt to address the async/coroutine size issue by allowing independent def-use/liveness analysis on individual upvars in coroutines. It has appeared to address partially the size doubling issue introduced by the use of upvars.

    • Reason for nomination:

      Are we okay with the upvars: Option<(Local, usize)> this change is adding to various dataflow analyses, at least in the short term so that we can make forward progress on the problem of generator size explosion? Or wait to land this PR until after we have a discussion in any of {dataflow, MIR representation, generator representation} to try to figure out the “right answer”.

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • “Introduce perma-unstable wasm-c-abi flag” rust#117919
    • Does anybody know how to reach out for the PR reviewer (GH user b-naber)? Seems this PR is languishing a bit and has good potential
  • “tidy watcher” rust#114209
    • cc @Wesley Wiser
  • “Fix gce ICE when encountering ill-formed consts” rust#119060
    • cc @Michael Goulet (compiler-errors) (PR author also needs some input)
  • “Issue 83060 fix” rust#119798 (last review activity: 3 months ago)
    • cc @Wesley Wiser

Next week’s WG checkins

  • @_WG-mir-opt by @oli
  • @_T-rust-analyzer by @Lukas Wirth

Next meetings' agenda draft: hackmd link