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
evex512target feature for AVX10” compiler-team#778 (Zulip) (last review activity: about 26 days ago)
- Pending FCP requests (check your boxes!)
- “Add a new
--orchestrator-idflag to rustc” compiler-team#635 (Zulip) - “sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets” rust#123617
- “Add
--print host-tripleto 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-idflag to rustc” compiler-team#635 (Zulip) - “Target families for executable format” compiler-team#716 (Zulip)
- “Support tests to use
minicorestd/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=versionoption 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 Traitprincipal” 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
rustcFedora 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-typesthis time. - No stable nominations for
T-typesthis 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-criticalissues forT-compilerthis time.
- No
P-criticalissues forT-typesthis 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-highnightly 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_sizecfg 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:
-fpregsor+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-cpuis 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.
fpregsis particularly tricky since disabling it on aneabihftarget is unsound as it changes the float ABI. Oneabitargets it’s fine because those have+soft-floatanyway, which forces thesoft-floatABI. 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-featureand 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