T Compiler Meeting Agenda 2025 01 23

T-compiler Meeting Agenda 2025-01-23

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!)
    • “Add -C hint-mostly-unused option” compiler-team#829 (Zulip)
      • Ongoing discussion, some things to be cleared up (see mominated issues)
  • Old MCPs (not seconded, take a look)
    • “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 4 months ago)
    • “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: 3 months ago)
    • “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: 3 months ago)
    • “Normalize FileCheck directives” compiler-team#789 (Zulip) (last review activity: 3 months ago)
    • “Create an avr-unknown-none target” compiler-team#800 (Zulip) (last review activity: 2 months ago)
    • “Demote i686-pc-windows-gnucompiler-team#822 (Zulip) (last review activity: about 27 days ago)
    • “Rename “dylib” crate type to “rdylib” (keep old name but deprecate it), and maybe do the same for “staticlib” → “cstaticlib”” compiler-team#825 (Zulip) (last review activity: about 13 days ago)
  • Pending FCP requests (check your boxes!)
    • “sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets” rust#123617
    • “Warn about C-style octal literals” rust#131309
  • Things in FCP (make sure you’re good with it)
  • Accepted MCPs
  • 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
    • “Lint on combining #[no_mangle] and #[export_name]rust#131558
  • 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
    • “atomics: allow atomic and non-atomic reads to race” rust#128778
    • “Lint against getting pointers from immediately dropped temporaries” rust#128985
    • “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
    • “Always display first line of impl blocks even when collapsed” rust#132155
    • “rework winnowing to sensibly handle global where-bounds” rust#132325
    • “mark is_val_statically_known intrinsic as stably const-callable” rust#132449
    • “Fix ICE when multiple supertrait substitutions need assoc but only one is provided” rust#133392
    • “Stabilize asm_goto feature gate” rust#133870
    • “Consider fields to be inhabited if they are unstable” rust#133889
    • “disallow repr() on invalid items” rust#133925
    • “Make the wasm_c_abi future compat warning a hard error” rust#133951
    • “fully de-stabilize all custom inner attributes” rust#134276
    • “Stabilize feature(trait_upcasting)rust#134367

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Always force non-trimming of path in unreachable_patterns lint” rust#135310
    • Authored by estebank
    • Fixes #135289, an ICE affecting diagnostics
  • :beta: “add cache to AmbiguityCausesVisitorrust#135618
    • Authored by lcnr
    • Fixes #135457, substancial compile-time regression found in beta crater run
  • :beta: “When LLVM’s location discriminator value limit is exceeded, emit locations with dummy spans instead of dropping them entirely” rust#135643
    • Authored by khuey
    • Fixes #135332, a P-high regression in a beta crater run
    • Nominated from @Jieyou Xu for both beta+stable backport (comment)
  • :beta: “Temporarily bring back Rvalue::Lenrust#135709
    • Authored by lqd
    • Fixes a p-critical regression #135671
    • has some perf losses but acceptable given what it fixes
  • :beta: “Only assert the Parser size on specific arches” rust#135855
    • Authored and nominated for backport by cuviper
    • Affects Fedora current beta on powerpc64le and s390x (comment)
  • :stable: “add cache to AmbiguityCausesVisitorrust#135618
    • Authored by lcnr
    • (Also beta-backport nominated)
  • :stable: “When LLVM’s location discriminator value limit is exceeded, emit locations with dummy spans instead of dropping them entirely” rust#135643
    • Authored by khuey
    • Nominated by @Jieyou Xu since in 1.84.0 we unconditionally verify twice the LLVM IR in the backend (this will changed in 1.85 with #133499)

T-types beta / T-types stable

  • 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

  • None

T-types

  • “regression: cannot borrow … as immutable because it is also borrowed as mutable” rust#135671
    • Fixed by #135709 (beta-backport, thanks @lqd)

P-high regressions

P-high beta regressions

  • “regression: ICE: trimmed_def_paths called, diagnostics were expected but none were emitted” rust#135673
    • Fixed by #135310 (beta-backport, thanks @Michael Goulet (compiler-errors))

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2025-01-20

A very quiet week for performance, with small improvements essentially on all benchmarks.

Triage done by @simulacrum. Revision range: 1ab85fbd..9a1d156f

Summary:

(instructions:u)meanrangecount
Regressions (primary)0.7%[0.3%, 1.0%]3
Regressions (secondary)0.7%[0.5%, 1.0%]4
Improvements (primary)-0.4%[-1.3%, -0.1%]155
Improvements (secondary)-0.5%[-1.8%, -0.1%]94
All (primary)-0.4%[-1.3%, 1.0%]158

0 Regression, 1 Improvement, 2 Mixed; 0 of them in rollups 40 artifact comparisons made in total

Regressions

No statistically significant regressions this cycle.

Improvements

Stable Hash: Ignore all HirIds that just identify the node itself #135329 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.4%[-0.9%, -0.1%]169
Improvements (secondary)-0.5%[-1.3%, -0.1%]85
All (primary)-0.4%[-0.9%, -0.1%]169

Mixed

Less unsafe in dangling/without_provenance #135344 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)1.2%[0.4%, 2.1%]2
Regressions (secondary)--0
Improvements (primary)-0.5%[-0.9%, -0.3%]3
Improvements (secondary)-1.1%[-1.6%, -0.6%]4
All (primary)0.2%[-0.9%, 2.1%]5

Regressions look likely to be noise/modality in benchmarks, not genuine changes caused by this work. See also some analysis on the PR.

Temporarily bring back Rvalue::Len #135709 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.3%, 0.3%]1
Regressions (secondary)0.4%[0.2%, 0.5%]6
Improvements (primary)-0.7%[-1.3%, -0.4%]3
Improvements (secondary)-0.9%[-1.7%, -0.2%]2
All (primary)-0.4%[-1.3%, 0.3%]4

Fixing P-critical regression, so easily justified.

Nominated Issues

T-compiler

  • “Add -C hint-mostly-unused to tell rustc that most of a crate will go unused” rust#135656
    • Nominated by @Jubilee (comment), left some questions for T-compiler
    • MCP#829, not yet seconded
    • The proposal should substantially decrease compile times in some cases by hinting rustc when part of a crate is unused. Can regress in other cases (Zulip thread)
    • Maybe a design meeting, inviting also people having more context? cc @lqd @Ben Kimock (Saethlin)

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • “Stop considering moved-out locals when computing auto traits for generators (rebased)” rust#128846 (last review activity: 5 months ago)
    • cc @cjgillot
  • “Add diagnostics to “while loop” and “for loop” that note that it is always determined that it might iterate zero times.” rust#126510 (last review activity: 4 months ago)
    • cc @Esteban Küber
  • “Async drop codegen” rust#123948 (last review activity: 3 months ago)
    • What’s the current status of this one? cc @davidtwco @nikomatsakis
  • “Handle rustc_query_system cases of rustc::potential_query_instability lint” rust#131200 (last review activity: 2 months ago)
    • cc @cjgillot

Next meetings’ agenda draft: hackmd link