T Compiler Meeting Agenda 2024 11 14

T-compiler Meeting Agenda 2024-11-14

Announcements

  • Rustc Dev Guide reading club session, chapters 40 to 42 on time:2024-11-20T14:30:00-03:00. More information #t-compiler/wg-rustc-dev-guide>Rustc dev guide reading club.
  • 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 55 days ago)
    • “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: about 33 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 4 days ago)
    • “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: about 27 days ago)
    • “Normalize FileCheck directives” compiler-team#789 (Zulip) (last review activity: about 27 days ago)
    • “Relink, don’t rebuild” compiler-team#790 (Zulip) (last review activity: about 27 days ago)
    • “Support for a new wasm32-wali-linux-musl Tier-3 target” compiler-team#797 (Zulip) (last review activity: about 0 days ago)
      • Note: this could probably be easily seconded, target name discussion already happened
    • “Create an avr-unknown-none target” compiler-team#800 (Zulip) (last review activity: about 4 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)
  • 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
    • “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
  • Other teams finalized FCPs
    • “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
    • “Stabilize s390x inline assembly” rust#131258
    • “Stabilize Arm64EC inline assembly” rust#131781
    • “Decide whether blocks inside asm goto should default to safe” rust#132078
    • “Enforce that raw lifetimes must be valid raw identifiers” rust#132363

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Add discriminators to DILocations when multiple functions are inlined into a single point.” rust#132613
    • Authored by khuey
    • Fixes #131944, rated P-critical because it broke a Fedora CI
    • Seems like nobody else reported it from happening, also see comment
    • Note: #132900 (ICE without a repro) was opened 3 days ago, reporter suspects being caused by #132613. Codebase is private, we didn’t hear from them yet.
  • :beta: “Only disable cache if predicate has opaques within it” rust#132625
    • Authored by compiler-errors
    • Improves a substancial compile time regression introduced in 1.82 (#132064)
    • we’re not completely back at compile time before 1.82 (more specifically after #126024), see comment
  • :stable: “Only disable cache if predicate has opaques within it” rust#132625
    • see above

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

  • No P-high beta regressions this time.

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs 2024-11-11

Regressions primarily in doc builds. No significant changes in cycle or max-rss counts.

Triage done by @simulacrum. Revision range: 27e38f8f..d4822c2d

Summary:

(instructions:u) mean range count
Regressions (primary) 0.5% [0.2%, 1.0%] 61
Regressions (secondary) 0.9% [0.2%, 1.5%] 30
Improvements (primary) -2.9% [-5.0%, -0.6%] 7
Improvements (secondary) -1.5% [-5.0%, -0.2%] 28
All (primary) 0.1% [-5.0%, 1.0%] 68

1 Regressions, 1 Improvements, 4 Mixed; 1 of them in rollups 47 artifact comparisons made in total

Regressions

Clean middle generics using paren sugar if trait has #[rustc_paren_sugar] #132697 (Comparison Link)

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

Doc-only regressions, no fix directly planned (prioritizing code clarity), but inspired some unrelated cleanup in https://github.com/rust-lang/rust/pull/132886.

rustdoc-search: simplify rules for generics and type params #127589 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.1%, 0.5%] 15
Regressions (secondary) 0.4% [0.1%, 0.5%] 19
Improvements (primary) - - 0
Improvements (secondary) -2.4% [-2.4%, -2.4%] 1
All (primary) 0.2% [0.1%, 0.5%] 15

Doc-only regressions, likely genuine given the change.

Improvements

Only disable cache if predicate has opaques within it #132625 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -2.7% [-5.0%, -0.2%] 7
Improvements (secondary) -3.0% [-5.1%, -0.3%] 10
All (primary) -2.7% [-5.0%, -0.2%] 7
  • Note from @_apiraino: #132625 recovered most of a substancial regression introduced in #126024

Mixed

Add new unstable feature const_eq_ignore_ascii_case #131721 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.2%, 0.2%] 1
Regressions (secondary) - - 0
Improvements (primary) -0.5% [-0.7%, -0.1%] 4
Improvements (secondary) - - 0
All (primary) -0.3% [-0.7%, 0.2%] 5

Probably mostly luck of some kind, change itself is library-only.

Emit warning when calling/declaring functions with unavailable vectors. #132173 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.5% [0.2%, 1.0%] 36
Regressions (secondary) 0.6% [0.2%, 0.9%] 6
Improvements (primary) -0.4% [-0.4%, -0.4%] 1
Improvements (secondary) -0.1% [-0.1%, -0.1%] 1
All (primary) 0.5% [-0.4%, 1.0%] 37

Regression, but a bunch of optimization work already went into it (see https://github.com/rust-lang/rust/pull/132173#issuecomment-2466642549).

Rollup of 6 pull requests #132831 (Comparison Link)

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

Queued up one trial build. Likely a real regression, but not necessarily worth digging deeper given limited impact (few benchmarks).

Nominated Issues

T-compiler

  • None

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • “Allow a MIR analysis to perform the state join directly” rust#114900
    • cc @cjgillot PR author added some more context. This work has been in progress since a bit. Can we get an update so that is clear what it needs to be done or - else - if we think this contribution is not needed (as hinted at this comment)? Thanks!
    • Ref. also the Clippy patch: https://github.com/rust-lang/rust-clippy/pull/11364
  • “Skip locking span interner for some syntax context checks” rust#128197 (last review activity: 3 months ago)
    • cc: @davidtwco
  • “Implement a lint for implicit autoref of raw pointer dereference - take 2” rust#123239 (last review activity: 3 months ago)
    • cc: @lcnr did you have a chance to talk with @_oli (mentioned in comment)
  • “When annotations needed, look at impls for more accurate suggestions " rust#128653 (last review activity: 2 months ago)
    • cc: @Michael Goulet (compiler-errors) (afaics all your comments are addressed)
  • “Improve dead code analysis for structs and traits defined locally” rust#128637 (last review activity: 2 months ago)
    • cc: @cjgillot

Next meeting’s agenda draft: hackmd link