T Compiler Meeting Agenda 2025 02 13

T-compiler Meeting Agenda 2025-02-13

Announcements

  • Next week release of stable 1.85 check the schedule calendar
  • 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: 4 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)
    • “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 33 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 12 days ago)
    • “Add --print=lint-levels to retrieve lints levels” compiler-team#833 (Zulip) (last review activity: about 12 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
    • “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
    • “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

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Pattern Migration 2024: try to suggest eliding redundant binding modifiers” rust#136577
    • Authored by dianne, Fixes a series of lints in Edition 2024 (#136047)
    • Some data about the new lints at comment
    • Discussed last week (on Zulip), the general vibe was “meh” due to being large changes with the new stable release at the door
    • T-release say they can handle but it’s a lot of work (comment) and @_Jubilee pointed that if something behaves funny we should be there to fix quick
    • (unsure if a lot changed - in positive or negative - since last week)
  • :beta: “chore: update rustc-hash 2.1.0 to 2.1.1” rust#136605
    • Authored by lsunsi (issue reporter a while ago)
    • stems from issue #135477 (a large compile time regression for some projects)
    • Full discussion on rust-lang/rustc-hash#55
    • our perf. tests seem to be mostly neutral
  • :beta: “fix ensure_monomorphic_enough” rust#136839
    • Authored by lukas-code, nominated by @Michael Goulet (compiler-errors) since a simple backport and recommended before stable 1.85 starts baking (tomorrow, IIRC)
    • Fixes MIR opts misbehaving, since When polymorphization got removed, more context in opening comment (doesn’t seem to have a specific filed regression attached)
  • :beta: “Revert “Stabilize extended_varargs_abi_support”” rust#136897
    • Authored by workingjubilee
    • (UPDATE: already accepted by T-release, so FYI)
    • Also nominated for discussion
    • TL;DR we apparently stabilized and this is broken. Revert before next stable release (next week).
  • 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 in progress or waiting on other teams

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

  • rustc.exe -vV didn’t exit successfully (exit code: 0xc000007b) on i686-pc-windows-gnurust#136795
    • Handled in #136815 (thanks @_Chris Denton) but in the future this compile target should be demoted to tier 2 (rfcs#3771)

Performance logs

triage logs

A relatively neutral week, with lots of real changes but most small in magnitude. Most significant change is rustdoc’s move of JS/CSS minification to build time which cut doc generation times on most benchmarks fairly significantly.

Triage done by @simulacrum. Revision range: 01e4f19c..c03c38d5

Summary:

(instructions:u)meanrangecount
Regressions (primary)0.5%[0.1%, 1.2%]100
Regressions (secondary)0.6%[0.1%, 7.3%]93
Improvements (primary)-1.8%[-5.7%, -0.2%]22
Improvements (secondary)-2.5%[-5.7%, -0.2%]36
All (primary)0.0%[-5.7%, 1.2%]122

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

Regressions

Upgrade elsa to the newest version. #136094 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.2%[0.1%, 0.4%]35
Regressions (secondary)0.3%[0.0%, 0.6%]13
Improvements (primary)--0
Improvements (secondary)-0.3%[-0.3%, -0.3%]1
All (primary)0.2%[0.1%, 0.4%]35

See discussion here. Some possible improvements have been identified, but starting by just getting elsa on regular updates again.

Rollup of 7 pull requests #136641 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)3.1%[0.0%, 8.0%]6
Improvements (primary)--0
Improvements (secondary)--0
All (primary)--0

Changes are expected, from a few contained PRs:

Generally expected to only meaningfully affect stress tests rather than real-world code.

Add amdgpu target #134740 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.7%[0.2%, 3.8%]55
Regressions (secondary)0.6%[0.2%, 1.0%]47
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.7%[0.2%, 3.8%]55

Regressions are mostly in LLVM, seemingly due to more logic being added to common code (e.g., pass enumeration) that runs even on non-AMDGPU targets. This is also a significant size regression (+19MB on LLVM.so) but generally these are likely unavoidable in the short term at least given the expanded target set.

Improvements

librustdoc: create a helper for separating elements of an iterator instead of implementing it multiple times #136244 (Comparison Link)

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

Avoid calling the layout_of query in lit_to_const #136302 (Comparison Link)

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

rustdoc: run css and html minifier at build instead of runtime #136253 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-1.6%[-5.5%, -0.2%]21
Improvements (secondary)-3.7%[-5.5%, -0.7%]22
All (primary)-1.6%[-5.5%, -0.2%]21

rustdoc: use ThinVec for generic arg parts #136265 (Comparison Link)

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

implement eat_until leveraging memchr in lexer #136585 (Comparison Link)

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

Mixed

Rollup of 7 pull requests #136549 (Comparison Link)

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

Unclear as to exact cause, but not going to dig in further given small number of benchmarks affected (only primary is libc, and it improved).

Nominated Issues

T-compiler

  • “Update to rand 0.9.0” rust#136395
    • Mark raises some concerns about this upgrade, specifically about the new dependency wit-bindgen-rt which ships with a small binary blob (comment)
    • @_Alex Crichton says that making it buildable (and not only “reproducible”) is possible though it would make maintenaince more complicated on their end (comment). What they’re lacking is support for weak symbols on stable Rust, specifically cabi_realloc, defined in multiple crates across a single link unit
    • What do we think about it? Do we want to establish a policy? (comment)
  • “Revert “Stabilize extended_varargs_abi_support”” rust#136897
    • we stabilized this set of varargs. The extern "system" part is however broken, as per updated comment:

      extern “system”, on systems where it is meaningful (i.e. distinct from extern “C” in some way), is translated to extern “stdcall” which is incompatible in varargs

    • @Jubilee suggests reverting everything quickly before the release (artifacts start building tomorrow), then reapply everything expect the system part (comment)
    • Zulip topic
  • “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)

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)

Next meetings’ agenda draft: hackmd link