T-compiler Meeting Agenda 2024-10-03
Announcements
- 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
None
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Make the test cfg a userspace check-cfg” compiler-team#785 (Zulip)
- “Policy change around adding new unstable flags” compiler-team#787 (Zulip)
- “Normalize FileCheck directives” compiler-team#789 (Zulip)
- “Relink, don’t rebuild” compiler-team#790 (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: about 13 days ago)
- “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: about 1 days ago)
- “Add
evex512
target feature for AVX10” compiler-team#778 (Zulip) (last review activity: about 26 days ago)
- Pending FCP requests (check your boxes!)
- “Add a new
--orchestrator-id
flag to rustc” compiler-team#635 (Zulip) - “sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets” rust#123617
- “Add
--print host-triple
to print host target triple” rust#125579 - “Check ABI target compatibility for function pointers” rust#128784
- “make unsupported_calling_conventions a hard error” rust#129935
- “Add a new
- Things in FCP (make sure you’re good with it)
- “Add a new
--orchestrator-id
flag to rustc” compiler-team#635 (Zulip) - “Target families for executable format” compiler-team#716 (Zulip)
- “Support tests to use
minicore
std/core prelude stubs” compiler-team#786 (Zulip)
- “Add a new
- Accepted MCPs
- “Don’t track
--emit=
options as part of crate SVH” compiler-team#769 (Zulip) - “
--hint-msrv=version
option so the compiler can take MSRV into account when linting” compiler-team#772 (Zulip) - “mark some target features as ‘forbidden’ so they cannot be (un)set with -Ctarget-feature” compiler-team#780 (Zulip)
- “-Z default-visibility option” compiler-team#782 (Zulip)
- “Test rule annotations” compiler-team#783 (Zulip)
- “New Tier-3 target for OpenHarmony on LoongArch64” compiler-team#784 (Zulip)
- “Don’t track
- MCPs blocked on unresolved concerns
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- concern: automatic-sync
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- Finalized FCPs (disposition merge)
- No new finished FCP (disposition merge) this time.
- Other teams finalized FCPs
- “Allow dropping
dyn Trait
principal” rust#126660 - “atomics: allow atomic and non-atomic reads to race” rust#128778
- “Make deprecated_cfg_attr_crate_type_name a hard error” rust#129670
- “Stabilize expr_2021 fragment specifier in all editions” rust#129972
- “Allow dropping
WG checkins
None
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Only add an automatic SONAME for Rust dylibs” rust#130960
- Authored by cuviper
- Fixes #126094, a stable regression (AFAICS). Context as per RedHat issue:
This causes RPM to improperly generate Provides for this shared object / .so file where previously no such metadata was added automatically.
- @_apiraino: I /think/ this means that the
rustc
Fedora package dependency metadata are broken - Nominated by @Vadim Petrochenkov for both beta+stable backport
- :beta: “Reject leading unsafe in
cfg!(...)
and--check-cfg
” rust#131057- Authored by Urgau
- Fixes #131055, inconsistent validation of
unsafe(..)
attributes
- :stable: “Only add an automatic SONAME for Rust dylibs” rust#130960
- Authored by cuviper
- See above (also beta nominated)
- No beta nominations for
T-types
this time. - No stable nominations for
T-types
this time.
PRs S-waiting-on-team
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 69 T-compiler P-high issues
- 0 P-critical, 3 P-high, 4 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 6 P-medium, 3 P-low regression-from-stable-to-nightly
- 0 P-critical, 36 P-high, 100 P-medium, 17 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
- “regression: overflow evaluating the requirement” rust#128887
- Fixed, just needs a test (see comment). Any taker?
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
A quiet week without too many perf. changes, although there was a nice perf. win on documentation builds thanks to #130857. Overall the results were positive.
Triage done by @kobzol. Revision range: 4cadeda9..c87004a1
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.2%, 0.8%] | 11 |
Regressions (secondary) | 0.3% | [0.2%, 0.6%] | 19 |
Improvements (primary) | -1.2% | [-14.9%, -0.2%] | 21 |
Improvements (secondary) | -1.0% | [-2.3%, -0.3%] | 5 |
All (primary) | -0.6% | [-14.9%, 0.8%] | 32 |
3 Regressions, 4 Improvements, 3 Mixed; 2 of them in rollups 47 artifact comparisons made in total
Regressions
Add optimize_for_size
variants for stable and unstable sort as well as select_nth_unstable #129587 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.3%] | 3 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.3% | [0.2%, 0.3%] | 3 |
- This PR improved the binary size of stdlib’s sorting algorithms when compiled with the
optimize_for_size
cfg option. - It caused some small codegen perturbations, but it does not seem to warrant further changes.
- Marked as triaged.
Rollup of 6 pull requests #130847 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.3%, 0.9%] | 9 |
Regressions (secondary) | 0.6% | [0.3%, 1.8%] | 8 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.6% | [0.3%, 0.9%] | 9 |
- Regression comes from #130735, which implements a new form of MIR validation.
- Marked as triaged.
bump few deps #130874 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 3.4% | [3.4%, 3.4%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 3.4% | [3.4%, 3.4%] | 1 |
- Noise, marked as triaged.
Improvements
Run cargo update
in the project root #129624 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.5% | [-1.2%, -0.1%] | 14 |
Improvements (secondary) | -1.0% | [-2.5%, -0.2%] | 7 |
All (primary) | -0.5% | [-1.2%, -0.1%] | 14 |
rustdoc perf: clone clean::Item
less #130857 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -9.3% | [-15.5%, -3.1%] | 2 |
Improvements (secondary) | - | - | 0 |
All (primary) | -9.3% | [-15.5%, -3.1%] | 2 |
library: Compute RUST_EXCEPTION_CLASS
from native-endian bytes #130897 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -3.3% | [-3.3%, -3.3%] | 1 |
Improvements (secondary) | - | - | 0 |
All (primary) | -3.3% | [-3.3%, -3.3%] | 1 |
Improve autovectorization of to_lowercase / to_uppercase functions #123778 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.4%, -0.2%] | 21 |
Improvements (secondary) | -1.2% | [-2.2%, -0.2%] | 2 |
All (primary) | -0.3% | [-0.4%, -0.2%] | 21 |
Mixed
Revert “Apply EarlyOtherwiseBranch to scalar value #129047” #130775 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.6%, 0.6%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.1% | [-1.1%, -1.1%] | 1 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.2% | [-1.1%, 0.6%] | 2 |
- Revert of a PR because of correctness issues.
Rollup of 7 pull requests #130807 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.7%] | 5 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.4% | [-0.4%, -0.4%] | 1 |
Improvements (secondary) | -1.2% | [-2.3%, -0.2%] | 2 |
All (primary) | 0.2% | [-0.4%, 0.7%] | 6 |
- The doc build regressions were fixed (and in fact much improved) in #130857.
- Marked as triaged.
properly elaborate effects implied bounds for super traits #129499 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.3%, 0.3%] | 4 |
Regressions (secondary) | 0.2% | [0.2%, 0.2%] | 1 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -2.0% | [-2.0%, -2.0%] | 1 |
All (primary) | 0.3% | [0.3%, 0.3%] | 4 |
- Small genuine regression caused by a change in trait elaboration.
- Marked as triaged.
Nominated Issues
- “Stabilize
extended_varargs_abi_support
” rust#116161- Was waiting on T-lang first opinion (see comment)
- Anything T-compiler wants to add?
- “Tracking Issue for Arm microcontoller feature flags” rust#130988
- @thejpster opened an issue to track useful Arm microcontroller feature flags that could use stabilisation. Example:
-fpregs
or+mve
. - These target features are about stopping LLVM using a feature when you give it a
-C target-feature=xxx
, as not all models of CPU actually have all features and-C target-cpu
is over-eager at enabling things. - @_RalfJung said:
None of these features are currently listed as known ARM features in rustc, so they all cause a warning. And yet our docs recommend people to use them. So that’s clearly not great.
fpregs
is particularly tricky since disabling it on aneabihf
target is unsound as it changes the float ABI. Oneabi
targets it’s fine because those have+soft-float
anyway, which forces thesoft-float
ABI. So we’ll need to stabilize this in a way where particular targets opt-in to supporting this feature, or something like that. - @_jieyouxu:
considering the RfL target feature flags, we probably want a design meeting for handling
-C target-cpu
,-C target-feature
and target specs and properly tracking them for dependencies to error if incompatible things are used together in general. cc https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/stabilizing.20compiler.20flags.20for.20Rust-for-Linux.
- @thejpster opened an issue to track useful Arm microcontroller feature flags that could use stabilisation. Example:
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
None this week
Next week’s WG checkins
None
Next meetings' agenda draft: hackmd link