T Compiler Meeting Agenda 2024 01 11

T-compiler Meeting Agenda 2024-01-11

Announcements

  • Big rework of the meetings calendar, thanks @davidtwco (Zulip topic)!
  • Compiler Team Planning meeting time:2024-01-12T16:00:00+01:00 ?
  • 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

  • New MCPs (take a look, see if you like them!)
    • No new proposals this time.
  • Old MCPs (stale MCP might be closed as per MCP procedure)
    • None at this time
  • Old MCPs (not seconded, take a look)
    • “Semantics of -Cinstrument-coverage=allcompiler-team#690 (Zulip) (last review activity: about 29 days ago)
    • “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: about 29 days ago)
    • “Introduce perma-unstable wasm-c-abi flag” compiler-team#703 (Zulip) (last review activity: about 27 days ago)
    • “Support patchable-function-entry” compiler-team#704 (Zulip) (last review activity: about 27 days ago)
    • “Add -Z direct-access-external-data” compiler-team#707 (Zulip) (last review activity: about 1 days ago)
  • Pending FCP requests (check your boxes!)
  • Things in FCP (make sure you’re good with it)
  • Accepted MCPs
    • No new accepted proposals this time.
  • Finalized FCPs (disposition merge)
    • No new finished FCP (disposition merge) this time.

WG checkins

None this week

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Update LLVM submodule” rust#119802
    • Not yet merged. Fixes a number of P-highs: Fixes #118867 #119160 #119179
  • 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

  • “large_assignments: Lint on specific large args passed to functions” rust#116520
    • Seems there are some perf. regressions (in part already discussed). Maybe add a comment to help take a decision and unblock?
  • Other issues in progress or waiting on other teams

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

  • “🐛 Symbol multiply defined since nightly-2023-12-02 with custom builtins.” rust#118609
    • Discussed also last week (Zulip)
    • Wesley said

      Let’s revisit this next week. It looks like work is actively happening here so while I think a temporary revert is potentially a good idea, let’s give the author some time to propose a fix or argue why this should not be supported at all.

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2024-01-08

Not a particularly notable week. Large swings aren’t spurious but also are driven by changes in high-level behavior (diagnostics going from zero to one emission primarily), which causes a lot more work to happen. This isn’t really representative of the underlying rustc performance changing though.

Triage done by @simulacrum. Revision range: 67b6975051b83ef2bd28f06e8467470d570aceb3..76101eecbe9aa80753664bbe637ad06d1925f315

Summary:

(instructions:u) mean range count
Regressions ❌(primary) 4.9% [0.2%, 24.3%] 14
Regressions (secondary) 4.6% [0.2%, 29.9%] 55
Improvements (primary) -0.5% [-1.5%, -0.2%] 61
Improvements (secondary) -0.7% [-1.0%, -0.4%] 14
All (primary) 0.5% [-1.5%, 24.3%] 75

4 Regressions, 4 Improvements, 6 Mixed; 1 of them in rollups

33 artifact comparisons made in total

Regressions

rustc_lint: Enforce rustc::potential_query_instability lint #119251 (Comparison Link)

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

Minor change in just a few benchmarks. Not clear whether this is noise or not but the overall change is required for correctness.

Merge unused_tuple_struct_fields into dead_code #118297 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.6% [0.3%, 0.8%] 7
Regressions (secondary) 8.3% [0.2%, 30.4%] 28
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.6% [0.3%, 0.8%] 7

Regressions are related to this lint firing in a few benchmarks, which causes a good deal of lazy loading to actually happen in diagnostics infra.

Exhaustiveness: Statically enforce revealing of opaques #119329 (Comparison Link)

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

Only a match-stress regression, seems like an acceptable change for the correctness fix.

Inline a few utility functions around MIR #119459 (Comparison Link)

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

Potentially just noise. Overall impact is limited to just one benchmark and only incr-full.

Improvements

Separate immediate and in-memory ScalarPair representation #118991 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.6% [0.6%, 0.6%] 1
Regressions (secondary) - - 0
Improvements (primary) -1.0% [-1.5%, -0.6%] 13
Improvements (secondary) -0.2% [-0.2%, -0.2%] 1
All (primary) -0.9% [-1.5%, 0.6%] 14

rustc_span: Optimize syntax context comparisons #119531 (Comparison Link)

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

Exhaustiveness: remove Matrix.wildcard_row #119667 (Comparison Link)

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

macro_rules: Add an expansion-local cache to span marker #119693 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.4% [-20.5%, -0.2%] 80
Improvements (secondary) -0.8% [-1.9%, -0.3%] 16
All (primary) -1.4% [-20.5%, -0.2%] 80

Largest improvements here are recovery from a spurious regression in previous PR, but this is still a good win even aside from that.

Mixed

Reorder check_item_type diagnostics so they occur next to the corresponding check_well_formed diagnostics #117213 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.2%, 0.4%] 7
Regressions (secondary) 0.8% [0.2%, 2.3%] 5
Improvements (primary) -0.3% [-0.3%, -0.3%] 2
Improvements (secondary) - - 0
All (primary) 0.1% [-0.3%, 0.4%] 9

Stabilize THIR unsafeck #117673 (Comparison Link)

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

Improvements outweigh regressions.

Replace a number of FxHashMaps/Sets with stable-iteration-order alternatives #119192 (Comparison Link)

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

Correctness fix, acceptable regressions.

Rollup of 9 pull requests #119662 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.2%, 0.2%] 1
Regressions (secondary) 0.7% [0.2%, 1.3%] 13
Improvements (primary) -0.4% [-0.4%, -0.2%] 6
Improvements (secondary) - - 0
All (primary) -0.3% [-0.4%, 0.2%] 7

tt-muncher is the primary significant regression, and appears to be significantly beyond the noise level for that benchmark. Investigation is ongoing.

mark vec::IntoIter pointers as !nonnull #114205 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.7% [0.6%, 0.8%] 2
Regressions (secondary) - - 0
Improvements (primary) -0.4% [-0.4%, -0.4%] 1
Improvements (secondary) - - 0
All (primary) 0.4% [-0.4%, 0.8%] 3

Likely slightly more work for LLVM.

Nominated Issues

T-compiler

  • “Environment variable sandboxing” rust#118372
    • @Guillaume Gomez (imperio) asks on Zulip about the best conduct to stabilize a --env flag and its liasion with rfc#2794
    • That RFC is been worked by @_Jeremy Fitzhardinge and was already scrutinized during a T-compiler meeting (see comment)

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • “Create the previous dep graph index on a background thread” rust#116375 (last review activity: 3 months ago)
    • cc: cjgillot
  • “offset: allow zero-byte offset on arbitrary pointers” rust#117329
    • cc: @nikita Popov (maybe)
  • “Save liveness results for DestinationPropagation” rust#115291
    • cc @Jak{e,ob} Degen (can you comment if your review is final?)

Next week’s WG checkins

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

Next meetings' agenda draft: hackmd link