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)
- Continue discussion of rust-lang/rust#125033
- 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
- @_davidtwco office hours time:2024-12-05T17:00:00+01:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “setup typos check in CI (for rust repo)” compiler-team#817 (Zulip)
- concern: contributor friction
- “Use debuginfo for short backtrace printing” compiler-team#818 (Zulip)
- “setup typos check in CI (for rust repo)” compiler-team#817 (Zulip)
- 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: 2 months ago)
- “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: 2 months ago)
- “Make the test cfg a userspace check-cfg” compiler-team#785 (Zulip) (last review activity: about 6 days ago)
- “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: about 55 days ago)
- “Normalize FileCheck directives” compiler-team#789 (Zulip) (last review activity: about 55 days ago)
- “Relink, don’t rebuild” compiler-team#790 (Zulip) (last review activity: about 55 days ago)
- “Create an avr-unknown-none target” compiler-team#800 (Zulip) (last review activity: about 33 days ago)
- 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)
- “Set the baseline Solaris version to 11.4” compiler-team#812 (Zulip)
- “Remove -Zinline-in-all-cgus” compiler-team#814 (Zulip)
- Accepted MCPs
- “Promote OpenHarmony targets to Tier 2 with Host Tools” compiler-team#811 (Zulip)
- MCPs blocked on unresolved concerns
- “Add
evex512
target feature for AVX10” compiler-team#778 (Zulip) (last review activity: about 7 days ago)- concern: design-around-naming-scheme
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- concern: automatic-sync
- “Add
- 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 - “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
- “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.
- No beta nominations for
T-types
this time. - No stable nominations for
T-types
this time.
PRs S-waiting-on-team
Issues of Note
One issue not prioritized
- Implementation of trait “not general enough” in nightly, works fine on stable · Issue #131488 · rust-lang/rust
- cc @Michael Goulet (compiler-errors)
- This is now a regression on stable, relevant changes in #124336
- As per comment from @lqd: it is slightly unclear how much is intended (because it fixes a soundness issue) or unintended behaviour.
- prioritization Zulip thread
Short Summary
- 0 T-compiler P-critical issues
- 59 T-compiler P-high issues
- 0 P-critical, 0 P-high, 0 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 1 P-medium, 0 P-low regression-from-stable-to-nightly
- 0 P-critical, 33 P-high, 100 P-medium, 19 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
- No unassigned
P-high
nightly regressions this time.
Performance logs
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) | mean | range | count |
---|---|---|---|
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) | mean | range | count |
---|---|---|---|
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) | mean | range | count |
---|---|---|---|
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) | mean | range | count |
---|---|---|---|
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) | mean | range | count |
---|---|---|---|
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) | mean | range | count |
---|---|---|---|
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) | mean | range | count |
---|---|---|---|
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) | mean | range | count |
---|---|---|---|
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
- “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 towasm-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)
- 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: 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