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
- WG-async design meeting time:2025-02-13T19:00:00+01:00
- Stable MIR Weekly Meeting time:2025-02-14T17:00:00+01:00
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)
- “Create an avr-unknown-none target” compiler-team#800 (Zulip)
- “Clean up operator representations” compiler-team#831 (Zulip)
- “Do not ignore uninhabited types for function-call ABI purposes.” compiler-team#832 (Zulip)
- “Give integer literals a sign instead of relying on negation expressions” compiler-team#835 (Zulip)
- Accepted MCPs
- No new accepted proposals this time.
- MCPs blocked on unresolved concerns
- “setup typos check in CI (for rust repo)” compiler-team#817 (Zulip)
- concern: contributor friction
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- concern: automatic-sync
- “Add
-C hint-mostly-unused
option” compiler-team#829 (Zulip) (last review activity: about 15 days ago) - “Add
evex512
target feature for AVX10” compiler-team#778 (Zulip) (last review activity: 2 months ago)- concern: design-around-naming-scheme
- “setup typos check in CI (for rust repo)” compiler-team#817 (Zulip)
- 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
, andtail-call
target features” rust#131080 - “Lint on combining
#[no_mangle]
and#[export_name]
” rust#131558
- “Add
- 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 asdouble_negations
” rust#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_guarantees
” rust#130628 - “Stabilize const
ptr::write*
andmem::replace
” rust#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.
- 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
- 0 T-compiler P-critical issues
- 59 T-compiler P-high issues
- 0 P-critical, 0 P-high, 0 P-medium, 1 P-low regression-from-stable-to-beta
- 0 P-critical, 1 P-high, 1 P-medium, 0 P-low regression-from-stable-to-nightly
- 0 P-critical, 34 P-high, 100 P-medium, 20 P-low regression-from-stable-to-stable
P-critical
- No
P-critical
issues forT-compiler
this time.
- No
P-critical
issues forT-types
this time.
P-high regressions
- No
P-high
beta regressions this time.
Unassigned P-high nightly regressions
- “
rustc.exe -vV
didn’t exit successfully (exit code: 0xc000007b) oni686-pc-windows-gnu
” rust#136795- Handled in #136815 (thanks @_Chris Denton) but in the future this compile target should be demoted to tier 2 (rfcs#3771)
Performance 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) | mean | range | count |
---|---|---|---|
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) | mean | range | count |
---|---|---|---|
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) | mean | range | count |
---|---|---|---|
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:
- https://github.com/rust-lang/rust/pull/136073#issuecomment-2617093212
- https://github.com/rust-lang/rust/pull/136435#issuecomment-2629382897
Generally expected to only meaningfully affect stress tests rather than real-world code.
Add amdgpu target #134740 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
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) | mean | range | count |
---|---|---|---|
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) | mean | range | count |
---|---|---|---|
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) | mean | range | count |
---|---|---|---|
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) | mean | range | count |
---|---|---|---|
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) | mean | range | count |
---|---|---|---|
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) | mean | range | count |
---|---|---|---|
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
- “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)
- Mark raises some concerns about this upgrade, specifically about the new dependency
- “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
- we stabilized this set of varargs. The
- “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)
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “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 ofrustc::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