T Compiler Meeting Agenda 2025 04 17

T-compiler Meeting Agenda 2025-04-17

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 (not seconded, take a look)
    • “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 7 months ago)
    • “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: 6 months ago)
    • “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: 6 months ago)
    • “setup typos check in CI (for rust repo)” compiler-team#817 (Zulip) (last review activity: about 34 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: 3 months ago)
    • “Compile UI tests as libraries by default” compiler-team#842 (Zulip) (last review activity: about 40 days ago)
    • “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: about 27 days ago)
    • “Add one more “late metadata”/“digest” file to rlib archives” compiler-team#853 (Zulip) (last review activity: about 27 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
    • “Add target_env = "macabi" and target_env = "sim"rust#139451
    • “compiletest: Make diagnostic kind mandatory on line annotations” compiler-team#862 (Zulip)
    • “document RUSTC_BOOTSTRAP in the unstable book” compiler-team#863 (Zulip)
  • Accepted MCPs
    • “Allow boolean literals in --check-cfgcompiler-team#854 (Zulip)
    • “Enable autodiff testcases in CI” compiler-team#855 (Zulip)
    • “Review rotation policy: remove reviewer from active review rotation if there’s prolonged lack of feedback on randomly-rolled PRs / indication that unavailability is temporary” compiler-team#856 (Zulip)
  • MCPs blocked on unresolved concerns
  • Things in FCP (make sure you’re good with it)
  • 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
    • “Stabilize -Zdwarf-version as -Cdwarf-versionrust#136926
  • 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
    • “Stabilize let chains in the 2024 edition” rust#132833
    • “Fix ICE when multiple supertrait substitutions need assoc but only one is provided” rust#133392
    • “[rustdoc] Add sans-serif font setting” rust#133636
    • “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
    • “remove long-deprecated no-op attributes no_start and crate_id” rust#134300
    • “Stabilize feature(trait_upcasting)rust#134367
    • “Fix parsing of ranges after unary operators” rust#134900
    • “Future incompatibility warning unsupported_fn_ptr_calling_conventions: Also warn in dependencies” rust#135767
    • “Reject ?Trait bounds in various places where we unconditionally warned since 1.0” rust#135841
    • “Make cenum_impl_drop_cast a hard error” rust#135964
    • “Allow *const W<dyn A> -> *const dyn A ptr cast” rust#136127
    • “Remove backticks from ShouldPanic::YesWithMessage’s TrFailedMsgrust#136160
    • “Do not deduplicate list of associated types provided by dyn principal” rust#136458
    • “Do not allow attributes on struct field rest patterns” rust#136490
    • “Make ptr_cast_add_auto_to_object lint into hard error” rust#136764
    • “Turn order dependent trait objects future incompat warning into a hard error” rust#136968
    • “add a “future” edition” rust#137606
    • “Stabilize #![feature(precise_capturing_in_traits)]rust#138128
    • “Prefer built-in sized impls (and only sized impls) for rigid types always” rust#138176
    • “Stabilize repr128rust#138285
    • “Stabilize cfg_boolean_literalsrust#138632
    • “indirect-const-stabilize the exact_div intrinsic” rust#139163

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Ignore zero-sized types in wasm future-compat warning” rust#139498
    • Authored by alexcrichton
    • Wesley just approved the PR
    • From comment:

      This commit fixes a false positive of the warning triggered for #138762 (“Tracking issue for wasm32-unknown-unknown’s future-incompat warning for C ABI changes”) and the fix is to codify that zero-sized types are “safe” in both the old and new ABIs.

    • nominated because the false positive warning progressed to beta
  • :beta: “Don’t warn about v128 in wasm ABI transition” rust#139809
    • Authored by alexcrichton
    • review in progress
    • just like #139498, nominated because the false positive warning progressed to beta
  • :beta: “Revert “Deduplicate template parameter creation”” rust#139878
    • Authored by petrochenkov
    • Reverts part of #139874 which caused some CI regressions
  • 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

  • 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

  • “Performance regression in nightly with target-cpu=native on znver4” rust#139370
    • Seems that LLVM is producing worse code for the (comment)
    • target affected is znver4. Seems that for now @Nikita Popov has it on their radar.

Performance logs

triage logs for 2025-04-14

Relatively small changes this week, nothing terribly impactful (positive or negative).

Triage done by @simulacrum. Revision range: e643f59f..15f58c46

Summary:

(instructions:u)meanrangecount
Regressions (primary)0.7%[0.1%, 2.1%]39
Regressions (secondary)0.8%[0.2%, 3.2%]23
Improvements (primary)-0.6%[-0.9%, -0.3%]7
Improvements (secondary)-0.6%[-1.5%, -0.1%]40
All (primary)0.5%[-0.9%, 2.1%]46

1 Regressions, 3 Improvements, 3 Mixed; 2 of them in rollups 35 artifact comparisons made in total

Regressions

Rollup of 10 pull requests #139766 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)1.1%[0.5%, 2.1%]15
Regressions (secondary)1.0%[0.3%, 2.4%]3
Improvements (primary)--0
Improvements (secondary)--0
All (primary)1.1%[0.5%, 2.1%]15

Real regression, though limited only to doc builds. Investigating root cause in PR.

Improvements

speed up String::push and String::insert #124810 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.8%[0.8%, 0.8%]1
Regressions (secondary)--0
Improvements (primary)-0.3%[-1.2%, -0.1%]35
Improvements (secondary)-0.3%[-0.8%, -0.2%]46
All (primary)-0.3%[-1.2%, 0.8%]36

Rollup of 13 pull requests #139622 (Comparison Link)

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

Polymorphize array::IntoIter’s iterator impl #139430 (Comparison Link)

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

Mixed

Allow GVN to produce places and not just locals. #139327 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.7%[0.7%, 0.7%]1
Regressions (secondary)0.7%[0.7%, 0.7%]1
Improvements (primary)-0.6%[-0.6%, -0.6%]1
Improvements (secondary)-0.6%[-0.9%, -0.2%]10
All (primary)0.0%[-0.6%, 0.7%]2

Regressions look plausibly real, but are limited (~2 scenarios) and outweighed by benefits. No further investigation warranted.

Ensure swap_nonoverlapping is really always untyped #137412 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.7%[0.4%, 1.7%]5
Regressions (secondary)--0
Improvements (primary)-0.7%[-1.1%, -0.3%]9
Improvements (secondary)--0
All (primary)-0.2%[-1.1%, 1.7%]14

Correctness improvement. Regressions look real, though limited to just a few scenarios, and correctness is more important. No further investigation warranted.

Remove Nonterminal and TokenKind::Interpolated #124141 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)1.0%[0.3%, 2.1%]11
Regressions (secondary)--0
Improvements (primary)-0.5%[-1.4%, -0.2%]48
Improvements (secondary)-1.0%[-2.4%, -0.3%]36
All (primary)-0.2%[-1.4%, 2.1%]59

Overall improvements outweigh limited regressions. Marking as triaged.

Nominated Issues

T-compiler

  • None

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • “Detect struct construction with private field in field with default” rust#135846 (last review activity: 2 months ago)
    • cc @fmease
  • “Pattern Migration 2024: suggest nicer patterns” rust#136496
    • cc @Nadrieril
  • “Use the new solver in the impossible_predicatesrust#136988 (last review activity: 2 months ago)
    • cc: @lcnr
  • “not lint break with label and unsafe block” rust#137454 (last review activity: about 23 days ago)
    • cc @Wesley Wiser

Next meeting’s agenda draft: hackmd link