T Compiler Meeting Agenda 2025 01 30

T-compiler Meeting Agenda 2025-01-30

Announcements

  • Today dot release 1.84.1 is out (blog post)
  • Compiler Team Planning meeting at time:2025-01-31T16:00:00+01:00
    • List of open meeting proposals
    • If we could schedule this one compiler-team#813 would unblock work by @jdonszelmann and @Celina Val
    • Work is happening at rust#128045 (originally started by Felix) which is T-lang nominated but this comment from @oli indicates that … it’s not blocked on T-lang?
  • 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: 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 33 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 19 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
    • “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

Backport nominations

T-compiler beta / T-compiler stable

  • No beta nominations for T-compiler this time.
  • 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 / T-types

  • “regression: cannot borrow … as immutable because it is also borrowed as mutable” rust#135671
    • this was fixed by #135709 but that patch regressed after merge. A new additional patch is being worked on (see comment)
    • on the radar of @lqd and @Josh Stone (cuviper) (thanks!)

P-high regressions

P-high beta regressions

  • None

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs

Relatively quiet week, with one large-ish regression that will be reverted. #132666 produced a nice perf. win, by skipping unnecessary work. This PR actually reversed a regression caused by a previous PR.

Triage done by @kobzol. Revision range: 9a1d156f..f7538506

Summary:

(instructions:u)meanrangecount
Regressions (primary)0.5%[0.2%, 2.2%]42
Regressions (secondary)2.1%[0.1%, 11.6%]56
Improvements (primary)-0.8%[-4.2%, -0.1%]107
Improvements (secondary)-1.2%[-4.0%, -0.1%]77
All (primary)-0.5%[-4.2%, 2.2%]149

2 Regressions, 3 Improvements, 2 Mixed; 4 of them in rollups 45 artifact comparisons made in total

Regressions

Properly record metavar spans for other expansions other than TT #134478 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.2%[0.1%, 0.4%]31
Regressions (secondary)1.0%[0.1%, 3.0%]19
Improvements (primary)--0
Improvements (secondary)-0.1%[-0.1%, -0.1%]1
All (primary)0.2%[0.1%, 0.4%]31
  • This regression was deemed justified, it was caused by a bugfix.
  • Marked as triaged.

Rollup of 7 pull requests #135947 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.7%[0.1%, 2.2%]15
Regressions (secondary)1.4%[0.1%, 2.2%]23
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.7%[0.1%, 2.2%]15
  • Small regression on doc builds.
  • It’s unclear which PR caused the regression, as our automation for unrolling PRs has failed here for some reason.
  • I don’t think that it’s worth it to manually post PR reverts and perf. test them for this kind of a doc regression.

Improvements

Refactor fmt::Display impls in rustdoc #135494 (Comparison Link)

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

Skip if-let-rescope lint unless requested by migration #132666 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.8%[-1.9%, -0.2%]100
Improvements (secondary)-1.5%[-4.2%, -0.1%]69
All (primary)-0.8%[-1.9%, -0.2%]100

Rollup of 7 pull requests #136070 (Comparison Link)

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

Mixed

Rollup of 7 pull requests #135789 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.1%[0.1%, 0.1%]2
Improvements (primary)-1.1%[-1.1%, -1.1%]2
Improvements (secondary)-0.5%[-0.6%, -0.5%]2
All (primary)-1.1%[-1.1%, -1.1%]2
  • This rollup was mostly performance neutral, the tiny regression on a single benchmark was noise.
  • Marked as triaged.

Rollup of 8 pull requests #135978 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.4%[0.2%, 1.1%]15
Regressions (secondary)6.2%[0.8%, 11.5%]10
Improvements (primary)--0
Improvements (secondary)-0.4%[-0.7%, -0.2%]20
All (primary)0.4%[0.2%, 1.1%]15
  • The performance regression was caused by #135914, which will be reverted by #136011.
  • Marked as triaged.

Nominated Issues

T-compiler

  • “Improve documentation when adding a new target” rust#135992
    • T-compiler was asked to review the wording, specifically the part about the new target needing to also be supported by cc-rs and libc support (which needs rustc support first, creating a cyclic dependency)
    • Discussed also on the Zulip thread

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • “Improve dead code analysis for structs and traits defined locally” rust#128637
    • cc: @cjgillot
  • “Remove Nonterminal and TokenKind::Interpolatedrust#124141 (last review activity: 4 months ago)
    • cc: @Vadim Petrochenkov
  • “Implement struct_target_features.” rust#129881 (last review activity: 3 months ago)
    • cc: @cjgillot (candidate for closing? there are some concerns about the design on Zulip)
  • “Support multiple stability attributes on items” rust#131824 (last review activity: 3 months ago)
    • cc: @Wesley Wiser wdyt? I see a comment from @Vadim Petrochenkov hinting (IIUC) that it’s not worth pursuing?
  • “When encountering unexpected closure return type, point at return type/expression” rust#132156 (last review activity: 3 months ago)
    • cc: @Nadrieril

Next meetings’ agenda draft: hackmd link