T Compiler Meeting Agenda 2024 10 24

T-compiler Meeting Agenda 2024-10-24

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

  • New MCPs (take a look, see if you like them!)
  • Old MCPs (stale MCP might be closed as per MCP procedure)
    • None at this time
  • Old MCPs (not seconded, take a look)
    • “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: about 34 days ago)
    • “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: about 12 days ago)
    • “Add evex512 target feature for AVX10” compiler-team#778 (Zulip) (last review activity: about 47 days ago)
    • “Make the test cfg a userspace check-cfg” compiler-team#785 (Zulip) (last review activity: about 0 days ago)
    • “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: about 5 days ago)
    • “Normalize FileCheck directives” compiler-team#789 (Zulip) (last review activity: about 5 days ago)
    • “Relink, don’t rebuild” compiler-team#790 (Zulip) (last review activity: about 5 days ago)
    • “Support for a new wasm32-linux-musl Tier-3 target” compiler-team#797 (Zulip) (last review activity: about 5 days ago)
  • Pending FCP requests (check your boxes!)
    • “sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets” rust#123617
    • “Stabilize WebAssembly multivalue, reference-types, and tail-call target features” rust#131080
    • “Lint on combining #[no_mangle] and #[export_name]rust#131558
  • Things in FCP (make sure you’re good with it)
  • Accepted MCPs
  • MCPs blocked on unresolved concerns
  • Finalized FCPs (disposition merge)
    • “make unsupported_calling_conventions a hard error” rust#129935
  • Other teams finalized FCPs
    • “Fixup Windows verbatim paths when used with the include! macro” rust#125205
    • “Allow dropping dyn Trait principal” rust#126660
    • “atomics: allow atomic and non-atomic reads to race” rust#128778
    • “Decide on name for derive(SmartPtr)rust#129104
    • “Do not consider match/let/ref of place that evaluates to ! to diverge, disallow coercions from them too” rust#129392
    • “Make deprecated_cfg_attr_crate_type_name a hard error” rust#129670
    • “Stabilize expr_2021 fragment specifier in all editions” rust#129972
    • “Check elaborated projections from dyn don’t mention unconstrained late bound lifetimes” rust#130367
    • “Finish stabilization of result_ffi_guaranteesrust#130628
    • “Stabilize const ptr::write* and mem::replacerust#130954
    • “Stabilize shorter_tail_lifetimerust#131445

WG checkins

None

Backport nominations

T-compiler beta / T-compiler stable

  • No beta nominations for T-compiler this time.
  • 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

  • “[Regression] LLVM asserts “conflicting locations for variable” since 1.82” rust#131944
    • Seems the regression happened in #128861 (comment), a tentative patch is being worked on
    • Assigned P-critical in case we want to evaluate a dot release for this (so far, @_apiraino not aware of other manifestations of this issue)

T-types

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

P-high regressions

P-high beta regressions

  • No P-high beta regressions this time.

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2024-10-21

Some tidy improvements from switching to next generation trait solver (solely for coherence checking) and from simplifying our dataflow analysis framework. There were some binary size regressions associated with PR 126557 (adding #[track_caller] to allocating methods of Vec and VecDeque), which I have handed off to T-libs to choose whether to investigate further.

Triage done by @pnkfelix. Revision range: 5ceb623a..3e33bda0

Summary:

(instructions:u) mean range count
Regressions (primary) 0.4% [0.2%, 0.9%] 43
Regressions (secondary) 0.4% [0.2%, 0.7%] 36
Improvements (primary) -0.8% [-5.1%, -0.2%] 92
Improvements (secondary) -0.8% [-2.0%, -0.1%] 65
All (primary) -0.4% [-5.1%, 0.9%] 135

0 Regressions, 3 Improvements, 6 Mixed; 3 of them in rollups 47 artifact comparisons made in total

Regressions

This space intentionally left blank (0 regressions)

Improvements

stabilize -Znext-solver=coherence again #130654 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.9% [-4.5%, -0.2%] 17
Improvements (secondary) -0.3% [-0.3%, -0.3%] 3
All (primary) -1.9% [-4.5%, -0.2%] 17
  • improvements are to bitmaps and nalgebra
  • (presumably due to their heavy use of trait machinery; though, skimming bitmaps, I’m not sure if I see heavy use of trait machinery there)
  • what else can I say, except, amazing!

Remove GenKillAnalysis #131481 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 1.6% [1.6%, 1.6%] 1
Improvements (primary) -0.4% [-0.7%, -0.2%] 24
Improvements (secondary) -0.9% [-1.9%, -0.1%] 19
All (primary) -0.4% [-0.7%, -0.2%] 24
  • improvements are spread across html5ever, serde, cargo, libc, diesel, and bitmaps.
  • wow. I’m surprised GenKillAnalysis is a pessimization
  • (maybe this is a sign that our basic blocks tend to hold a small number of instructions…?)
  • anyway, overall amazing work.

Rollup of 8 pull requests #131792 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.2% [-0.2%, -0.2%] 5
Improvements (secondary) - - 0
All (primary) -0.2% [-0.2%, -0.2%] 5
  • improvements are to incremental scenarios for stm32f4 (and one also for libc).

Mixed

Add #[track_caller] to allocating methods of Vec & VecDeque #126557 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.0%, 0.5%] 26
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) -0.2% [-0.2%, -0.1%] 4
All (primary) 0.3% [0.0%, 0.5%] 26
  • based on a prior perf run (which predicted 16 primary regressions of roughly the same magnitude as observed here), the T-libs team had already approved this PR under the assumption that there wouldn’t be a runtime impact from this.
  • there was a note from nnethercote that it isn’t totally clear if the binary size increases were anticipated.
  • marking as triaged

Rollup of 8 pull requests #131690 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.4%, 0.4%] 1
Regressions (secondary) - - 0
Improvements (primary) -0.6% [-0.8%, -0.3%] 2
Improvements (secondary) - - 0
All (primary) -0.2% [-0.8%, 0.4%] 3
  • regression to cargo opt-full; improvements to image and html5ever opt-full
  • briefly skimmed detailed results. nothing stood out.
  • not worth digging into further; marking as triaged

Use ThinVec for PredicateObligation storage #131422 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.3% [0.3%, 0.5%] 8
Improvements (primary) -0.3% [-0.7%, -0.2%] 15
Improvements (secondary) -0.3% [-0.7%, -0.2%] 23
All (primary) -0.3% [-0.7%, -0.2%] 15
  • improvements outweigh regressions. (and reported performance matches what was anticipated via perf runs.)
  • marking as triaged

optimize str.replace #130223 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.5% [0.2%, 1.2%] 5
Regressions (secondary) - - 0
Improvements (primary) -0.8% [-0.8%, -0.8%] 1
Improvements (secondary) -0.4% [-0.4%, -0.3%] 6
All (primary) 0.3% [-0.8%, 1.2%] 6
  • primary regressions to miscellaneous cargo and clap scenarios. (single primary improvement was to cargo incr-patched::println).
  • overall seems like minor regressions, potentially “just” instrumentation bias, compared to the expected benefit for microbenchmark reported in PR description.
  • marking as triaged.

Rollup of 8 pull requests #131934 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.3%, 0.3%] 2
Regressions (secondary) 0.2% [0.2%, 0.3%] 11
Improvements (primary) -0.2% [-0.2%, -0.2%] 1
Improvements (secondary) - - 0
All (primary) 0.1% [-0.2%, 0.3%] 3
  • primary regressions to helloworld (doc) and hyper (opt); primary improvement to libc (doc).
  • all the secondary regressions are to doc benchmarks, which led lqd to hypothesize that this is due to PR 131908 which changed the hash used for filename generation to sha256 since it should be stable going forward.
  • hyper history seems really noisy.
  • marking as triaged

Update rustc-hash to version 2 but again #131949 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.1%, 0.2%] 8
Regressions (secondary) 0.3% [0.1%, 0.7%] 9
Improvements (primary) -0.3% [-0.5%, -0.2%] 10
Improvements (secondary) -0.9% [-1.4%, -0.6%] 13
All (primary) -0.1% [-0.5%, 0.2%] 18
  • primary improvements to unicode-normalization and libc
  • primary regressions to typenum and serde
  • I don’t think there’s anything interesting to investigate here. marking as triaged.

Nominated Issues

T-compiler

  • No I-compiler-nominated issues this time.

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

  • None this week

Next meetings' agenda draft: hackmd link - (is Oct, 31st a holiday in the USA?)