T Compiler Meeting Agenda 2025 02 06

T-compiler Meeting Agenda 2025-02-06

Announcements

  • FIY: a discussion on Zulip about bootstrap running all tests of rust-analyzer. If anyone has opinions, please join the discussion.
  • 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!)
    • 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)
    • “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)
    • “Demote i686-pc-windows-gnucompiler-team#822 (Zulip) (last review activity: about 41 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 27 days ago)
    • “Add target_abi = "[ilp]{2,3}[3264]{2}[fdq]?" to all RV[3264]{2}I targets” compiler-team#830 (Zulip) (last review activity: about 6 days ago)
    • “Add --print=lint-levels to retrieve lints levels” compiler-team#833 (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
    • “Warn about C-style octal literals” rust#131309
  • 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
    • “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
    • “Uplift clippy::double_neg lint as double_negationsrust#126604
    • “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
    • “[rustdoc] Add sans-serif font setting” rust#133636
    • “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
    • “Stabilize target_feature_11” rust#134090
    • “fully de-stabilize all custom inner attributes” rust#134276
    • “remove long-deprecated no-op attributes no_start and crate_id” rust#134300
    • “Stabilize feature(trait_upcasting)rust#134367
    • “Make cenum_impl_drop_cast a hard error” rust#135964

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Ensure that we don’t try to access fields on a non-struct pattern type” rust#135222
    • Authored by estebank
    • Fixes #135209 (was evaluated P-low) but @_Michael Goulet (compiler-errors) says they’re hitting it on stage 0 compiler (comment)
  • :beta: “Add a couple of missing ensure_sufficient_stacksrust#136352
    • Authored by @lqd
    • companion fix for #135709 (esp. to fix a test on aarch64-linux) (comment)
    • slight perf. regression rubberstamped since this backport complments closing P-critical #135671
  • No stable nominations for T-compiler this time.

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

  • “regression: cannot borrow … as immutable because it is also borrowed as mutable” rust#135671
    • Discussed last week
    • Should be fixed by #135709 + #136352
  • “invalid opcode regression in x86_64-unknown-linux-musl release builds while compiling code using generic-arrayrust#135997
    • regressed in #133324 (not in beta, though)
    • Should be closed by #136450, now r+‘ed (thanks @Michael Goulet (compiler-errors) and @Ben Kimock (Saethlin) )
    • btw about #136450: if anyone knows GVN better can have a look either (comment)
  • “Nightly regressed igvm crate and now emits SIGILL at opt-level higher than 1” rust#136361
    • same as #135997

T-types

  • None

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 2025-02-04

A very quiet week with performance of primary benchmarks showing no change over all.

Triage done by @rylev. Revision range: f7538506..01e4f19c

Summary:

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.6%]32
Regressions (secondary)0.5%[0.1%, 1.1%]65
Improvements (primary)-0.5%[-1.0%, -0.2%]17
Improvements (secondary)-3.1%[-10.3%, -0.2%]20
All (primary)0.0%[-1.0%, 0.6%]49

5 Regressions, 2 Improvements, 5 Mixed; 6 of them in rollups 49 artifact comparisons made in total

Regressions

Rollup of 10 pull requests #136135 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.3%]2
Regressions (secondary)0.2%[0.2%, 0.3%]9
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.3%[0.2%, 0.3%]2

Rollup of 9 pull requests #136227 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.2%[0.2%, 0.2%]1
Regressions (secondary)0.2%[0.2%, 0.2%]6
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.2%[0.2%, 0.2%]1

Merge PatKind::Path into PatKind::Expr #134248 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.4%]8
Regressions (secondary)0.3%[0.1%, 0.5%]9
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.3%[0.2%, 0.4%]8

Insert null checks for pointer dereferences when debug assertions are enabled #134424 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.5%]7
Regressions (secondary)0.3%[0.2%, 0.5%]5
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.3%[0.2%, 0.5%]7

Add a couple of missing ensure_sufficient_stacks #136352 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.2%[0.2%, 0.3%]12
Improvements (primary)--0
Improvements (secondary)--0
All (primary)--0

Improvements

Apply LTO config to rustdoc #135832 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.3%[-0.6%, -0.2%]9
Improvements (secondary)-0.6%[-1.4%, -0.2%]4
All (primary)-0.3%[-0.6%, -0.2%]9

fix autodiff compile time regression #136413 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-30.3%[-30.6%, -29.7%]4
Improvements (secondary)-30.1%[-32.0%, -28.2%]2
All (primary)-30.3%[-30.6%, -29.7%]4

Mixed

Rollup of 8 pull requests #136185 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.7%[0.2%, 1.6%]3
Improvements (primary)--0
Improvements (secondary)-0.5%[-0.8%, -0.4%]6
All (primary)--0

Revert #135914: Remove usages of QueryNormalizer in the compiler #136011 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.3%[0.2%, 0.3%]16
Improvements (primary)-0.4%[-1.1%, -0.2%]24
Improvements (secondary)-5.9%[-10.4%, -0.9%]10
All (primary)-0.4%[-1.1%, -0.2%]24

Rollup of 9 pull requests #136318 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.1%, 0.4%]8
Regressions (secondary)0.2%[0.2%, 0.2%]1
Improvements (primary)--0
Improvements (secondary)-0.1%[-0.1%, -0.1%]2
All (primary)0.3%[0.1%, 0.4%]8
  • It appears that #136180 is the culprit for this regression. I’m not sure it’s worth addressing though.

Rollup of 9 pull requests #136332 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)43.3%[42.1%, 44.0%]4
Regressions (secondary)42.8%[39.0%, 46.6%]2
Improvements (primary)--0
Improvements (secondary)-0.3%[-0.3%, -0.2%]4
All (primary)43.3%[42.1%, 44.0%]4

Rollup of 6 pull requests #136389 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.1%[0.1%, 0.1%]1
Regressions (secondary)0.4%[0.3%, 0.5%]2
Improvements (primary)-0.3%[-0.3%, -0.3%]1
Improvements (secondary)-0.2%[-0.3%, -0.1%]2
All (primary)-0.1%[-0.3%, 0.1%]2
  • Perf is a wash so I don’t think it’s worth investigating.

Nominated Issues

T-compiler

  • “Our x86-32 target names are inconsistent” rust#136495
    • (Zulip thread) @RalfJ would like the T-compiler attention on a number of x86 tier 3 compile target, which naming is inconsistent (or inaccurate)
    • This PR is to gather feedbacks and opinions
  • “Pattern Migration 2024: try to suggest eliding redundant binding modifiers” rust#136577
    • @Nadrieril mentioned he was oriented to ask for a backport (Zulip discussion)
    • Context: the edition migration lint for match ergonomics is subpar, see https://github.com/rust-lang/rust/issues/136047 and https://github.com/rust-lang/rust/issues/136456. Given that it will likely affect many users and the details are nonobvious, it felt important (to me Nadri) to have that fix for the stable realease of the edition
    • it’s not the smallest PR; a smaller PR could maybe be done but I (Nadri) don’t have the bandwidth. the current PR is almost 100% infallible span/label manipulations so hopefully that’s not too risky to merge

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • “add error message for c# style named arguments” rust#118733 (last review activity: 13 months ago)
    • cc: @Esteban Küber
  • “Add diagnostic for stack allocations of 1 GB or more” rust#119798 (last review activity: 13 months ago)
    • cc @cjgillot
  • “Improve parse item fallback” rust#125388 (last review activity: 8 months ago)
    • cc: @Esteban Küber
  • “Silence errors in expressions caused by bare traits in paths in 2021 edition” rust#125784 (last review activity: 8 months ago)
    • cc: @Esteban Küber for a rebase then to @León Orell Liehr (fmease) for a review

Next meetings’ agenda draft: hackmd link