T Compiler Meeting Agenda 2024 10 03

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

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-cfgrust#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)

T-types stable / T-types beta

  • No beta nominations for T-types this time.
  • No stable nominations for T-types this time.

PRs S-waiting-on-team

T-compiler

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

  • “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

triage logs for 2024-10-01

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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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

T-compiler

  • “Stabilize extended_varargs_abi_supportrust#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 an eabihf target is unsound as it changes the float ABI. On eabi targets it’s fine because those have +soft-float anyway, which forces the soft-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.

RFC

  • 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