T Compiler Meeting Agenda 2023 11 02

T-compiler Meeting Agenda 2023-11-02

Announcements

Other WG meetings (calendar link)

MCPs/FCPs

WG checkins

  • Impl Trait initiative by @oli:

    at the T-types meetup we came up with a type-alias-impl-trait stabilization plan, which does not match the latest T-lang plan, but a change necessitated by implementation concerns. Most notably, we’re restricting the defining scope even further (see rust#113169 for an implementation of this). The full proposal can be found at this HackMD link. As usual, the work is tracked in: https://github.com/orgs/rust-lang/projects/22/views/1

  • @_WG-llvm by @nagisa and @Nikita Popov

    Checkin text

Backport nominations

T-compiler stable / T-compiler beta

  • :beta: “Update to LLVM 17.0.4” rust#117436
    • Fixes a number of P-highs: #116668, #116941, #116976
    • (tangential: @apiraino wonders if there’s a way to see a clearer changelog of LLVM merges…)

PRs S-waiting-on-team

T-compiler

Issues of Note

Short Summary

P-critical

T-compiler

  • “Code no longer compiles after -Zdrop-tracking-mir was enabled by default” rust#116242
    • Mentioned last week, postponed to this meeting
    • Probably solved by rust#117134, authored by @lcnr, RFC reviewed, no crater regressions (link)
    • anything to add? can remove I-compiler-nominated?

T-types

  • No P-critical issues for T-types this time.

P-high regressions

Notes:

P-high beta regressions

  • “regression: parameter type may not live long enough” rust#117055
    • Crate that regressed was fixed
  • “regression: new resolution failures in 1.74” rust#117056
    • discussed last week, seems there might be multiple sources for this regression
    • @lqd bisected some of the crates, possibly #115834 (comment)
    • @Michael (compiler-errors) Goulet, @pnkfelix @wesley wiser would split bisecting the other crates
  • “regression: change in async capture rules?” rust#117059
    • comments from last week

      Ok, so this is the actual crater fallout from -Zdrop-tracking-mir that we were waiting for. It’s good to see that it’s relatively small and being addressed.

    • Duplicate of rust#116242, under T-types scrutiny (I-types-nominated)

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2023-10-31

Short triage this week, as last week’s was done later in the week than usual. As a result, a pretty quiet set of results.

Triage done by @simulacrum. Revision range: 698db856de0b67313ddcb96b6599598058489ea9..650991d62c3a2c80ba27009d06839adbb038bf5e

Summary:

(instructions:u) mean range count
Regressions (primary) 0.7% [0.2%, 5.0%] 48
Regressions (secondary) 0.7% [0.1%, 1.9%] 18
Improvements (primary) -0.9% [-3.3%, -0.2%] 11
Improvements (secondary) -0.5% [-0.8%, -0.4%] 4
All (primary) 0.4% [-3.3%, 5.0%] 59

2 Regressions, 1 Improvements, 1 Mixed; 0 of them in rollups 43 artifact comparisons made in total

Regressions

Lint overlapping ranges as a separate pass #116751 (Comparison Link)

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

Slight regressions across multiple benchmarks. This is expected impact with no planned mitigation, likely small enough to be acceptable for the functionality here.

Eat close paren if capture_cfg to avoid unbalanced parens #116889 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.1%, 0.2%] 6
Regressions (secondary) 0.6% [0.4%, 0.9%] 9
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.2% [0.1%, 0.2%] 6

This is indeed a slight perf regression for benchmarks with large number of function parameters, like externs with 3000 function definitions.

(https://github.com/rust-lang/rust/pull/116889#issuecomment-1784115059)

However a possibly faster version will be worked on by the author. In the meantime the regression is limited to just a few benchmarks, mostly stress tests.

Improvements

Only call mir_const_qualif if absolutely necessary #117166 (Comparison Link)

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

Mixed

rustdoc: use JS to inline target type impl docs into alias #116471 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.8% [0.3%, 5.0%] 10
Regressions (secondary) 1.0% [0.2%, 1.9%] 4
Improvements (primary) -2.7% [-3.4%, -1.5%] 3
Improvements (secondary) - - 0
All (primary) 0.7% [-3.4%, 5.0%] 13

The perf regression was explained above; it’s very small, rustdoc-only, and is more than balanced by the large reductions in generated doc size.

https://github.com/rust-lang/rust/pull/116471#issuecomment-1784228010

Nominated Issues

T-compiler

  • “Code no longer compiles after -Zdrop-tracking-mir was enabled by default” rust#116242
    • (already discussed)

RFC

  • “RFC: Packages as (optional) namespaces” rfcs#3243
    • FIY also for T-compiler to make sure all voices are heard

Oldest PRs waiting for review

T-compiler

  • “Save liveness results for DestinationPropagation” rust#115291
    • cc @Jak{e,ob} Degen (can you comment if your review is final?)
  • “Add $message_type field to distinguish json diagnostic outputs” rust#115691 (last review activity: about 51 days ago)
    • FCP in progress, missing a few checkboxes (cc: @michael goulet (compiler-errors) @nagisa)
  • “Stabilize target_feature_11” rust#116114 (last review activity: about 31 days ago)
    • RFC#2396
    • Unsure if the review at this stage is more for T-libs or T-compiler
  • “Stabilize extended_varargs_abi_supportrust#116161
    • cc @wesley wiser (autoassigned) (author has a small comment to check)

Next week’s WG checkins

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

Next meetings' agenda draft: hackmd link