T Compiler Meeting Agenda 2024 12 12

T-compiler Meeting Agenda 2024-12-12

Announcements

  • Team compiler is looking for someone taking on a 4-weekly rotation shift on the rustc performance triaging (details on Zulip thread)
  • The review policy for contributors has been published: https://forge.rust-lang.org/compiler/reviews.html
    • Comments and amendments are welcome. Discuss on Zulip (contrib-private) or on rust-forge#790
  • Design meeting: LLVM optional target-cpu features enabled by default (compiler-team#752)
  • 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)
  • Pending FCP requests (check your boxes!)
    • “sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets” rust#123617
    • “const-eval: detect more pointers as definitely not-null” rust#133700
  • 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
    • “mark is_val_statically_known intrinsic as stably const-callable” rust#132449

WG checkins

None

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 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

One issue not prioritized

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 for 2024-12-09

A pretty quiet week, with both few PRs landed and no significant changes in performance.

Triage done by @simulacrum. Revision range: 490b2cc0..1b3fb316

Summary:

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.1%, 1.4%]84
Regressions (secondary)0.3%[0.1%, 0.7%]45
Improvements (primary)-0.4%[-1.2%, -0.1%]42
Improvements (secondary)-0.8%[-1.2%, -0.4%]19
All (primary)0.1%[-1.2%, 1.4%]126

0 Regressions, 0 Improvements, 7 Mixed; 4 of them in rollups 25 artifact comparisons made in total

Regressions

None this week.

Improvements

Remove polymorphization #133883 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.5%[0.3%, 0.7%]6
Improvements (primary)-0.5%[-1.3%, -0.1%]91
Improvements (secondary)-0.7%[-1.7%, -0.3%]21
All (primary)-0.5%[-1.3%, -0.1%]91

This is essentially a solid improvement. We still did the evaluation of polymorphization even if it wasn’t actually enabled, so this just saves that time by dropping all of that computation.

Mixed

Rollup of 6 pull requests #133841 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.7%[0.2%, 1.4%]10
Regressions (secondary)0.6%[0.6%, 0.6%]1
Improvements (primary)-0.3%[-0.5%, -0.1%]2
Improvements (secondary)-0.2%[-0.4%, -0.1%]5
All (primary)0.5%[-0.5%, 1.4%]12

Mixed results, but seems like a real regression on a few larger benchmarks in opt, non-incremental scenarios. Possibly due to https://github.com/rust-lang/rust/pull/133798, trying an unrolled build to verify.

Rollup of 8 pull requests #133940 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.4%[0.1%, 0.9%]87
Regressions (secondary)0.4%[0.1%, 1.4%]31
Improvements (primary)--0
Improvements (secondary)-1.7%[-1.9%, -1.6%]6
All (primary)0.4%[0.1%, 0.9%]87

Root-caused and discussed here: https://github.com/rust-lang/rust/pull/133607#issuecomment-2524194699, some optimizations expected to reduce the impact.

Implementation of fmt::FormattingOptions #118159 (Comparison Link)

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

A few regressions in primary benchmarks, but not worth follow-up given the small magnitude, small number of affected builds, lack of clear cycles impact, etc.

Rollup of 7 pull requests #133978 (Comparison Link)

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

Expected regression in doc builds due to additional trait implementations in the standard library.

Rollup of 7 pull requests #134033 (Comparison Link)

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

Single benchmark regression, limited to incremental scenarios. Seems plausible this is due to #133992, which obviously does more (necessary for correctness) work.

Introduce MixedBitSet #133891 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.6%[0.2%, 1.0%]8
Improvements (primary)-0.6%[-1.3%, -0.2%]67
Improvements (secondary)-0.7%[-2.0%, -0.2%]28
All (primary)-0.6%[-1.3%, -0.2%]67

Expected changes, primarily an improvement rather than a regression. Overall a positive change.

Nominated Issues

T-compiler

  • “Make the wasm_c_abi future compat warning a hard error” rust#133951
    • nominated by @Jubilee (comment)
    • formally deprecate the old (and broken) C abi for target wasm32-unknown-unknown
    • This will break ~85 versions of a foundation ecosystem crate (wasm-bindgen) but also just fix a bug. Projects downstream will need to upgrade to wasm-bindgen >= v0.2.88
    • @_Alex Crichton (active in the WASM group) approved this change
    • Tracking issue #122532
  • “Make target-spec json file extensions case-insensitive” rust#127389
    • nominated by @davidtwco
    • Ref. issue #127387 about case insensitive .json. The usecase stated seems to support “Old OS and old file-systems such as FAT” and other not so old, such as Cortex A (comment).
    • Perf. cost of eq_ignore_ascii_case for just the extension seems to be negligible
    • Cargo does not support it (comment) but cargo wouldn’t run anyway on such old systems. They do have some concerns about keeping consistency on this with rustc (comment) and other tools like rustup, clippy, rustfmt
    • @davidtwco is ok with rustc and cargo diverging behaviour about this (comment)

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: 11 months ago)
    • cc @Esteban Küber
  • “Silence errors in expressions caused by bare traits in paths in 2021 edition” rust#125784 (last review activity: 6 months ago)
    • cc: @Esteban Küber for a rebase then cc: @_León Orell Liehr (fmease)
  • “[Coverage][MCDC] Do not initialize mcdc parameters for instances containing no mcdc statements” rust#129989
    • cc: @Zalathar
  • “JumpThreading: fix bitwise not on non-booleans” rust#131203 (last review activity: about 44 days ago)
    • cc @cjgillot
  • “[macro_metavar_expr_concat] Fix #128346” rust#131522 (last review activity: about 45 days ago)
    • cc: @yukang

Next meetings’ agenda draft: hackmd link