T Compiler Meeting Agenda 2025 02 20

T-compiler Meeting Agenda 2025-02-20

Announcements

  • Today release of Rust stable 1.85 blog post with also announcement of Rust 2024 :tada:
  • 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: 5 months ago)
    • “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: 4 months ago)
    • “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: 4 months ago)
    • “Normalize FileCheck directives” compiler-team#789 (Zulip) (last review activity: 4 months 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 40 days ago)
    • “Add --print=lint-levels to retrieve lints levels” compiler-team#833 (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
    • “Stabilize -Zdwarf-version as -Cdwarf-versionrust#136926
  • 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
    • “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
    • “regression: a value of type HashMap<Pulse, u64> cannot be built from” rust#135669
    • “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
    • “Do not allow attributes on struct field rest patterns” rust#136490

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Remove SSE ABI from i586-pc-windows-msvc” rust#137149
    • Authored by Noratrieb
    • Backport suggestion to avoid people (using just this target) seeing this warning in the next 1.86 beta cycle
    • Target is probably going to be removed after MCP#840
  • 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

  • None

Performance logs

triage logs for 2025-02-18

This week’s results were dominated by the update to LLVM 20 (#135763), which brought a large number of performance improvements, as usual. There were also two other significant improvements, caused by improving the representation of const values (#136593) and doing less work when formatting in rustdoc (#136828).

Triage done by @kobzol. Revision range: c03c38d5..ce36a966

Summary:

(instructions:u)meanrangecount
Regressions (primary)4.4%[0.2%, 35.8%]10
Regressions (secondary)1.2%[0.2%, 5.0%]13
Improvements (primary)-1.6%[-10.5%, -0.2%]256
Improvements (secondary)-1.0%[-4.7%, -0.2%]163
All (primary)-1.3%[-10.5%, 35.8%]266

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

Regressions

Rollup of 8 pull requests #136918 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.9%[0.1%, 2.1%]19
Regressions (secondary)1.7%[0.3%, 4.9%]9
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.9%[0.1%, 2.1%]19
  • Regression on a number of doc benchmarkes caused by #136829.
  • Continuing discussion on that PR, not marking as triaged yet.

Rollup of 10 pull requests #136943 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.2%[0.2%, 0.2%]1
Regressions (secondary)0.6%[0.4%, 0.7%]16
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.2%[0.2%, 0.2%]1
  • Small regression on a bunch of secondary benchmarks caused by #136901.
  • Does not seem worthy of further work.
  • Marked as triaged.

Rollup of 11 pull requests #137001 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.8%[0.8%, 0.9%]2
Regressions (secondary)0.1%[0.1%, 0.1%]2
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.8%[0.8%, 0.9%]2
  • A few small regressions were caused by #136928.
  • That PR was a fix and the regressions were small, so no further work is needed.
  • Marked as triaged.

Improvements

valtree performance tuning #136593 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-2.6%[-5.6%, -0.2%]20
Improvements (secondary)-0.3%[-0.3%, -0.3%]1
All (primary)-2.6%[-5.6%, -0.2%]20

Do more lazy-formatting in librustdoc #136828 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-1.6%[-10.3%, -0.3%]17
Improvements (secondary)-0.5%[-0.7%, -0.2%]3
All (primary)-1.6%[-10.3%, -0.3%]17
  • A great win for doc benchmarks.

Mixed

Portable SIMD subtree update #135701 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.5%[0.5%, 0.5%]1
Regressions (secondary)0.3%[0.1%, 0.6%]17
Improvements (primary)--0
Improvements (secondary)-0.4%[-0.4%, -0.4%]2
All (primary)0.5%[0.5%, 0.5%]1
  • Tiny regressions in doc builds, probably caused by more documentation in portable-simd.
  • Marked as triaged.

transmute should also assume non-null pointers #136735 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.5%[0.3%, 0.8%]4
Regressions (secondary)0.2%[0.2%, 0.2%]1
Improvements (primary)-0.5%[-1.0%, -0.2%]7
Improvements (secondary)-0.2%[-0.2%, -0.2%]2
All (primary)-0.2%[-1.0%, 0.8%]11
  • Performance is a wash.
  • Marked as triaged.

Rollup of 7 pull requests #137163 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.1%[0.1%, 0.1%]1
Improvements (primary)-0.3%[-0.3%, -0.3%]2
Improvements (secondary)--0
All (primary)-0.3%[-0.3%, -0.3%]2
  • Three tiny changes, the only regression is on an incr-unchanged run of a parser stress test, probably doesn’t warrant further investigation.
  • Marked as triaged.

Update to LLVM 20 #135763 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)5.1%[0.2%, 35.1%]8
Regressions (secondary)0.7%[0.4%, 1.0%]10
Improvements (primary)-1.3%[-4.2%, -0.2%]251
Improvements (secondary)-1.0%[-4.7%, -0.1%]178
All (primary)-1.1%[-4.2%, 35.1%]259
  • As usual, update to a new lLVM version brings a lot of performance wins, but also some regressions.
  • The single large regression was on a release (optimized) incremental build, which is not a configuration used much in practice. It was caused by a codegen unit becoming unnecessarily large.
  • Marked as triaged.

Nominated Issues

T-compiler

  • “Our x86-32 target names are inconsistent” rust#136495
    • @RalfJ replied (comment) to the questions we raised during last meeting:

      […] what to do with i586-pc-nto-qnx700? A target with a Pentium 4 baseline. We typically use i586 to indicate “older than i686” (with i686 meaning “Pentium 4”), so there is a direct conflict here between the vendor convention and our own convention, which will easily be confusing for Rust users.

  • “process bug: stabilization of extended_varargs_abi_support without FCP?” rust#136896
    • @Jubilee suggest discussing the evaluation/procedural error. Both T-lang (first) and T-compiler (later) approved #116161 (timeline) but we don’t find an FCP (i.e. a wider consensus)
    • Specifically, was this just a slip or is there an actual procedural “bug” (see 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: 13 months ago)
    • cc: @Esteban Küber
  • “Handle rustc_query_system cases of rustc::potential_query_instability lint” rust#131200
    • cc @cjgillot
  • “Apple: Fix direct linking with +verbatim” rust#132394 (last review activity: 3 months ago)
    • cc @Vadim Petrochenkov do you still want this?
  • “only use generic info when ty var belong it in orphan check” rust#132904 (last review activity: 3 months ago)
    • cc @León Orell Liehr (fmease)
  • “JumpThreading: fix bitwise not on non-booleans” rust#131203 (last review activity: 3 months ago)
    • cc @cjgillot

Next meetings’ agenda draft: hackmd link