T-compiler Meeting Agenda 2024-05-23
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 (calendar link)
- Types Team: ITE (Impl Trait Everywhere) Triage time:2024-05-23T22:00:00+01:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Add a
--emit=nameres
for IDEs” compiler-team#749 (Zulip) - “Fully rustfmt
use
declarations” compiler-team#750 (Zulip)
- “Add a
- 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)
- concern: added-complexity-to-frontend
- “Target families for executable format” compiler-team#716 (Zulip) (last review activity: 3 months ago)
- “Promote riscv64gc-unknown-linux-musl to tier 2” compiler-team#728 (Zulip) (last review activity: 2 months ago)
- “Only emit forward compatible v0 symbol names with graceful degradation” compiler-team#737 (Zulip) (last review activity: about 48 days ago)
- “Partial compilation using MIR-only rlibs” compiler-team#738 (Zulip) (last review activity: about 41 days ago)
- “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: about 6 days ago)
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 4 months ago)
- Pending FCP requests (check your boxes!)
- merge: Show files produced by
--emit foo
in json artifact notifications (rust#122597)- @|116107 @|125294 @|248906 @|426609 @|116118 @|232957
- no pending concerns
- merge: Show files produced by
- Things in FCP (make sure you’re good with it)
- “Skip virtual drop for !needs_drop types” compiler-team#730 (Zulip)
- “Add
--emit=thin-link-bitcode
to enable distributed ThinLTO users” compiler-team#735 (Zulip) - “Add –print=check-cfg” compiler-team#743 (Zulip)
- “Support
-Cforce-frame-pointers=non-leaf
” compiler-team#744 (Zulip) - “Promote arm64ec-pc-windows-msvc to tier 2” compiler-team#746 (Zulip)
- “
-Zfixed-x18
” compiler-team#748 (Zulip) - “Support C23’s Variadics Without a Named Parameter” rust#124048
- Accepted MCPs
- No new accepted proposals this time.
- MCPs blocked on unresolved concerns
- merge: Add a new
--build-id
flag to rustc (compiler-team#635)- @|125250 @|116107 @|125294 @|123856
- concerns: other-existing-options (by petrochenkov) option-name (by wesleywiser)
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- concern: single-point-of-failure-via-stream-archival
- concern: automatic-sync
- merge: Stabilize
--env-set
option (rust#119926)- @|119009 @|124288 @|123586 @|125250 @|119031 @|124287 @_|116118
- concerns: other-rustc-vars (by petrochenkov)
- merge: allow overwriting the output of
rustc --version
(rust#124339)- @|248906 @|124287 @|426609 @|116118 @|216206 @|232957
- concerns: subsequent-crates-io-policy (by wesleywiser)
- merge: Add a new
- Finalized FCPs (disposition merge)
- No new finished FCP (disposition merge) this time.
- Other teams finalized FCPs
- “offset: allow zero-byte offset on arbitrary pointers” rust#117329
WG checkins
None
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Add v0 symbol mangling for
f16
andf128
” rust#123816- Authored by tgross35
- Suggests backporting the first commit, low-risk and unblocks updating compiler_builtins#125016 (comment and discussion on Zulip)
- :beta: “Only make GAT ambiguous in
match_projection_projections
considering shallow resolvability” rust#125214- Authored by compiler-errors
- This revert will fix #125196, regression emerged in the latest beta crater run
- About:
In #123537, I tweaked the hack from #93892 to use
resolve_vars_if_possible
instead ofshallow_resolve
. This considers more inference guidance ambiguous but resulted in a crater regressions. I’ve effectively reverted the change to the old behavior. That being said, I don’t like this behavior, but I’d rather keep it for now since #123537 was not meant to make any behavioral changes.
- :beta: “Update to LLVM 18.1.6” rust#125288
- Authored by nikic
- perf. neutral, notable changes:
Fixes #123695 (miscompile with wrapping pointer arithmetic). Fixes #125053 (compiler crash on M1). Also fixes https://bugzilla.redhat.com/show_bug.cgi?id=2226905 (crypto miscompile on s390x)
- Big diff and LLVM 18.1.6 release notes
- 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
- “Show files produced by
--emit foo
in json artifact notifications” rust#122597- pending checkboxes from team members
- Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 5 T-compiler P-critical issues
- 63 T-compiler P-high issues
- 4 P-critical, 2 P-high, 1 P-medium, 2 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 5 P-medium, 2 P-low regression-from-stable-to-nightly
- 0 P-critical, 36 P-high, 100 P-medium, 16 P-low regression-from-stable-to-stable
P-critical
These are mostly all regressions in the latest beta crater run (feel free to downgrade priority, if necessary)
- “
-C target_cpu=cortex-a72
(and-target-cpu=native
on Raspberry Pi) wrongly enables crypto features that are optional on Cortex-A72” rust#125033- Tracked in llvm-project#90365
- “regression: opaque types got hidden types registered from within subtype predicate” rust#125192
- Regressed in #123979, @_oli self-assigned so it’s on their radar
- “regression: trait bound not satisfied” rust#125194
- Comment from @lcnr: considering reverting in #119820 for one more beta
- “regression: type annotations needed” rust#125196
- Fixed by @_Michael Goulet (compiler-errors) in #125194 (thanks!)
- “regression: ambiguous outer attributes” rust#125199
- Comes from #124099, no owner yet for a fix
- Question from @_apiraino:
How do we want to handle the changes in #124099? I don’t see a mention of it being aware about breaking changes (PR was rolled up) i.e. just revert or try to fix?
- No
P-critical
issues forT-types
this time.
P-high regressions
- “False positive and highly misleading suggestions for the
non-local-definitions
lint” rust#124396- Fixed by #124539, beta-accepted
- “endless loop by running
cargo test
with toolchain 2024-05-14” rust#125269- @lcnr authored fix #125343 (thanks!), review in progress but waiting on #125413 first to fix a test (comment)
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
Fairly quiet week with the exception of a very large improvement coming from the switch to rust-lld
on nightly Linux. This can have very large impacts on benchmarks where linking dominates the build time (e.g., ripgrep
, exa
, small binaries like hello-world
). Aside from that change, there were a few small regressions that were either deemed worth it or are still being investigated.
Triage done by @rylev. Revision range: 9105c57b..1d0e4afd
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.7% | [0.1%, 2.5%] | 30 |
Regressions (secondary) | 0.5% | [0.2%, 0.8%] | 5 |
Improvements (primary) | -30.4% | [-71.7%, -0.4%] | 35 |
Improvements (secondary) | -25.6% | [-70.9%, -0.5%] | 75 |
All (primary) | -16.1% | [-71.7%, 2.5%] | 65 |
4 Regressions, 1 Improvement, 4 Mixed; 2 of them in rollups 66 artifact comparisons made in total
Regressions
Add x86_64-unknown-linux-none target #125023 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.2%, 1.0%] | 3 |
Regressions (secondary) | 0.4% | [0.4%, 0.4%] | 3 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.6% | [0.2%, 1.0%] | 3 |
- Noise
Rollup of 6 pull requests #125144 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.2%, 1.2%] | 3 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.5% | [0.2%, 1.2%] | 3 |
Update expr
matcher for Edition 2024 and add expr_2021
nonterminal #123865 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.3%] | 5 |
Regressions (secondary) | 0.5% | [0.2%, 1.7%] | 7 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.2% | [0.2%, 0.3%] | 5 |
- It seems the primary benchmark affected by this html5ever seems to spend lots of time in expand_crate which could be impacted by this change.
- Asked authors and reviewer whether this is worth an investigation or not.
Update unexpected_cfgs
lint for Cargo new check-cfg
config #125219 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.8% | [0.2%, 2.5%] | 21 |
Regressions (secondary) | 0.2% | [0.2%, 0.2%] | 1 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.8% | [0.2%, 2.5%] | 21 |
- Somewhat further fall out from https://github.com/rust-lang/rust/pull/124684. This adds additional output which will slow down benchmarks which emit this warning particularly often.
- We’re likely ok with this given this is the “unhappy path”.
Improvements
Enable rust-lld
on nightly x86_64-unknown-linux-gnu
#124129 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -30.8% | [-71.8%, -0.5%] | 31 |
Improvements (secondary) | -25.6% | [-70.9%, -0.5%] | 75 |
All (primary) | -30.8% | [-71.8%, -0.5%] | 31 |
Mixed
Rollup of 7 pull requests #125120 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.2%] | 2 |
Regressions (secondary) | 0.5% | [0.3%, 1.0%] | 12 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.4% | [-0.5%, -0.4%] | 2 |
All (primary) | 0.2% | [0.2%, 0.2%] | 2 |
- Caused by https://github.com/rust-lang/rust/pull/125088. Asked the author/reviewers whether this is worth following up on.
Remove bound checks from BorrowedBuf
and BorrowedCursor
methods #123786 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.8% | [0.8%, 0.8%] | 1 |
Regressions (secondary) | 1.3% | [1.3%, 1.3%] | 1 |
Improvements (primary) | -1.7% | [-1.7%, -1.7%] | 1 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.5% | [-1.7%, 0.8%] | 2 |
- Noise
optimize inplace collection of Vec #123878 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.4% | [0.3%, 2.9%] | 3 |
Regressions (secondary) | 0.3% | [0.2%, 0.3%] | 2 |
Improvements (primary) | -22.7% | [-37.4%, -0.4%] | 5 |
Improvements (secondary) | - | - | 0 |
All (primary) | -13.7% | [-37.4%, 2.9%] | 8 |
- Improvements vastly outweigh the regressions which seemed to have returned to baseline after this PR.
Follow-up fixes to report_return_mismatched_types
#123812 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.1% | [0.6%, 1.8%] | 3 |
Regressions (secondary) | 0.2% | [0.1%, 0.2%] | 6 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -1.1% | [-1.1%, -1.1%] | 2 |
All (primary) | 1.1% | [0.6%, 1.8%] | 3 |
- Single benchmark with a large regression. Asked author to investigate.
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- TODO
Next week’s WG checkins
- @_WG-async by @nikomatsakis and @tmandry
- @_WG-diagnostics by @Esteban Küber and @oli
Next meetings' agenda draft: hackmd link