T Compiler Meeting Agenda 2024 11 07

T-compiler Meeting Agenda 2024-11-07

Announcements

  • Steering meeting: planning tomorrow at time:2024-11-08T09:00:00-06: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

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 49 days ago)
    • “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: about 27 days ago)
    • “Add evex512 target feature for AVX10” compiler-team#778 (Zulip) (last review activity: 2 months ago)
    • “Make the test cfg a userspace check-cfg” compiler-team#785 (Zulip) (last review activity: about 14 days ago)
    • “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: about 20 days ago)
    • “Normalize FileCheck directives” compiler-team#789 (Zulip) (last review activity: about 20 days ago)
    • “Relink, don’t rebuild” compiler-team#790 (Zulip) (last review activity: about 20 days ago)
    • “Support for a new wasm32-linux-musl Tier-3 target” compiler-team#797 (Zulip) (last review activity: about 20 days ago)
    • “Create an avr-unknown-unknown target” compiler-team#800 (Zulip) (last review activity: about 6 days ago)
  • Pending FCP requests (check your boxes!)
    • “sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets” rust#123617
    • “Lint on combining #[no_mangle] and #[export_name]rust#131558
  • Things in FCP (make sure you’re good with it)
    • “Promote powerpc64le-unknown-linux-musl to tier 2” compiler-team#803 (Zulip)
    • “Fix ICE when passing DefId-creating args to legacy_const_generics.” rust#130443
    • “Stabilize WebAssembly multivalue, reference-types, and tail-call target features” rust#131080
    • “Reject raw lifetime followed by ', like regular lifetimes do” rust#132341
  • Accepted MCPs
    • No new accepted proposals this time.
  • MCPs blocked on unresolved concerns
  • Finalized FCPs (disposition merge)
    • “Add --print host-tuple to print host target tuple” rust#125579
    • “make unsupported_calling_conventions a hard error” rust#129935
  • Other teams finalized FCPs
    • “Add lint against function pointer comparisons” rust#118833
    • “Fixup Windows verbatim paths when used with the include! macro” rust#125205
    • “Allow dropping dyn Trait principal” rust#126660
    • “Lint against &T to &mut T and &T to &UnsafeCell<T> transmutes” rust#128351
    • “atomics: allow atomic and non-atomic reads to race” rust#128778
    • “Lint against getting pointers from immediately dropped temporaries” rust#128985
    • “#[inline(never)] does not work for async functions” rust#129347
    • “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
    • “Decide whether blocks inside asm goto should default to safe” rust#132078

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Also treat impl definition parent as transparent regarding modules” rust#132453
    • Authored by Urgau
    • Fixes P-low #132427, when a const was generated in a proc-macro
  • :beta: “Revert “Avoid nested replacement ranges” from #129346.” rust#132587
    • Authored by nnethercote
    • Complements #129346 (which fixes some regressions found in a crater run for 1.83, see comment)
  • 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
    • Fedora Core 39 CI does not build anymore (uses LLVM 17)
    • Will be fixed by #132613, still in draft (unsure why)

T-types

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

P-high regressions

P-high stable regressions

  • “Hang after encountering overflow errors for huge types” rust#132673
    • Traits rework in #119989 seems to cause an infinite recursion in some cases (see comment)
    • On stable since 1.78. Though the repro is quite simple, seems was not yet reported
    • Is this a P-high or can be downgraded?

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-11-05

A week dominated by one large improvement and one large regression where luckily the improvement had a larger impact. The regression seems to have been caused by a newly introduced lint that might have performance issues. The improvement was in building rustc with protected visibility which reduces the number of dynamic relocations needed leading to some nice performance gains. Across a large swath of the perf suite, the compiler is on average 1% faster after this week compared to last week.

Triage done by @rylev. Revision range: c8a8c820..27e38f8f

Summary:

(instructions:u) mean range count
Regressions (primary) 0.8% [0.1%, 2.0%] 80
Regressions (secondary) 1.9% [0.2%, 3.4%] 45
Improvements (primary) -1.9% [-31.6%, -0.1%] 148
Improvements (secondary) -5.1% [-27.8%, -0.1%] 180
All (primary) -1.0% [-31.6%, 2.0%] 228

1 Regression, 1 Improvement, 5 Mixed; 3 of them in rollups 46 artifact comparisons made in total

Regressions

Rollup of 6 pull requests #132326 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.7% [0.2%, 1.9%] 104
Regressions (secondary) 1.5% [0.1%, 4.4%] 68
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.7% [0.2%, 1.9%] 104

Improvements

Use protected visibility when building rustc with LLD #131634 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.8% [-31.3%, -0.1%] 174
Improvements (secondary) -4.2% [-27.5%, -0.2%] 224
All (primary) -1.8% [-31.3%, -0.1%] 174

Mixed

Rollup of 12 pull requests #132317 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.2%, 0.4%] 4
Regressions (secondary) 0.2% [0.2%, 0.2%] 1
Improvements (primary) -0.2% [-0.4%, -0.1%] 6
Improvements (secondary) -0.3% [-0.3%, -0.3%] 1
All (primary) -0.0% [-0.4%, 0.4%] 10
  • Looks like a bit more time spent in LLVM? Might have been caused by a few PRs in this rollup, but the total result is a wash, so I don’t think it’s needed to dig deeper into this.

Rc/Arc: don’t leak the allocation if drop panics #132231 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.6% [0.6%, 0.6%] 1
Regressions (secondary) 2.3% [1.1%, 3.5%] 6
Improvements (primary) -0.9% [-1.4%, -0.3%] 3
Improvements (secondary) -0.4% [-0.6%, -0.2%] 5
All (primary) -0.5% [-1.4%, 0.6%] 4
  • There probably isn’t too much to be done regarding perf, all of the major regressions come from one small stress test crate.

Mark simplify_aggregate_to_copy mir-opt as unsound #132356 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.7% [0.3%, 1.9%] 14
Regressions (secondary) 0.7% [0.2%, 2.3%] 16
Improvements (primary) -0.3% [-0.3%, -0.3%] 1
Improvements (secondary) -0.3% [-0.4%, -0.3%] 5
All (primary) 0.7% [-0.3%, 1.9%] 15
  • This deactivated an unsound MIR optimization until it is fixed.

add const_panic macro to make it easier to fall back to non-formatting panic in const #132542 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.8% [0.2%, 1.8%] 6
Regressions (secondary) - - 0
Improvements (primary) -0.5% [-0.9%, -0.1%] 5
Improvements (secondary) - - 0
All (primary) 0.2% [-0.9%, 1.8%] 11
  • Looks like most of the regressions are taking longer in LLVM related queries (e.g., LLVM_module_codegen_emit_obj) which doesn’t make a ton of sense to me.

Rollup of 11 pull requests #132626 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.6% [0.5%, 0.9%] 7
Improvements (primary) - - 0
Improvements (secondary) -0.3% [-0.3%, -0.3%] 2
All (primary) - - 0
  • It’s not obvious to me which PR might be the culprit here and the regression is small and contained enough that I don’t think it’s worth investigating.

Nominated Issues

T-compiler

  • No I-compiler-nominated issues this time.

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • “sess: stabilize -C stack-protector=allrust#121742
    • Unsure about current status? cc @Wesley Wiser do you have some context here?
  • “Do not eagerly reject inference vars when trying to resolve method calls.” rust#126316
    • Any news cc @lcnr (re: talk with @_oli, see comment)
  • “Initial support for auto traits with default bounds” rust#120706 (last review activity: 3 months ago)
    • perhaps cc @Michael Goulet (compiler-errors) @Vadim Petrochenkov since commented (modulo a rebase)
  • “Fix crate name validation” rust#127581 (last review activity: 3 months ago)
    • cc @Wesley Wiser
  • “Remove -Zfuel.” rust#115293
    • cc @Wesley Wiser another one for you

Next meetings' agenda draft: hackmd link