T-compiler Meeting Agenda 2024-05-02
Announcements
- Today release of stable Rust 1.78 (blog post)
- Next week it’s RustNL week: some? many? of us will be there. Should we skip next week’s meeting? Or maybe just a quick look if there’s anything urgent?
- 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
- Types Team: ITE (Impl Trait Everywhere) Triage time:2024-05-02T22:00:00+01:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Add –print=check-cfg” compiler-team#743 (Zulip)
- Old MCPs (not seconded, take a look)
- “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: about 55 days ago)
- “Add
--emit=thin-link-bitcode
to enable distributed ThinLTO users” compiler-team#735 (Zulip) (last review activity: about 1 days ago) - “Only emit forward compatible v0 symbol names with graceful degradation” compiler-team#737 (Zulip) (last review activity: about 27 days ago)
- “Partial compilation using MIR-only rlibs” compiler-team#738 (Zulip) (last review activity: about 20 days ago)
- Pending FCP requests (check your boxes!)
- 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)
- merge: Retire the mailing list and make all decisions on zulip (compiler-team#649)
- no pending checkboxes
- concerns: automatic-sync (by compiler-errors), single-point-of-failure-via-stream-archival (by pnkfelix)
- merge: Stabilize
--env-set
option (rust#119926)- @|119009 @|116083 @|124288 @|123586 @|125250 @|119031 @|124287 @|116118
- concerns: other-rustc-vars (by petrochenkov)
- merge: Show files produced by
--emit foo
in json artifact notifications (rust#122597)- @|116083 @|123586 @|116107 @|125294 @|119031 @|248906 @|426609 @|116118 @_|232957
- no pending concerns
- merge: allow overwriting the output of
rustc --version
(rust#124339)- @|116083 @|123586 @|125250 @|116107 @|248906 @|124287 @|426609 @|116118 @|216206 @|232957
- no pending concerns
- merge: re-organise the compiler team (rfcs#3599)
- no pending concerns
- @Aaron Hill @cjgillot @Michael (compiler-errors) Goulet @Esteban Küber @mw @nagisa
- merge: Add a new
- Things in FCP (make sure you’re good with it)
- “Skip virtual drop for !needs_drop types” compiler-team#730 (Zulip)
- “Make casts of pointers to trait objects stricter” rust#120248
- Accepted MCPs
- “allow all command line flags to be passed multiple times, overwriting previous usages” compiler-team#731 (Zulip)
- “Policy: no discussions on T-compiler tracking issues” compiler-team#739 (Zulip)
- MCPs blocked on unresolved concerns
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 3 months ago)
- concern: added-complexity-to-frontend
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 3 months ago)
- Finalized FCPs (disposition merge)
- “Tracking Issue for RFC 3013: Checking conditional compilation at compile time” rust#82450
- Other teams finalized FCPs
- No new finished FCP (disposition merge) this time.
WG checkins
-
@_WG-async by @nikomatsakis and @tmandry
Checkin text
-
@_WG-diagnostics by @Esteban Küber and @oli
Checkin text
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Consider inner modules to be local in the
non_local_definitions
lint” rust#124539- Authored by @_urgau (thanks!)
- Fixes #124396, a P-medium regression emitting a false positive and misleading error message when compiling the Diesel crate (comment):
The wording [of the error message] might result in cases where the user will believe that this is an upstream diesel issue, rather than an issue with their local code.
- 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
Short Summary
- 0 T-compiler P-critical issues
- 61 T-compiler P-high issues
- 0 P-critical, 0 P-high, 1 P-medium, 1 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
- 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
Several non-noise changes this week, with both improvements and regressions coming as a result. Overall compiler performance is roughly neutral across the week.
Triage done by @simulacrum. Revision range: a77f76e2..c65b2dc9
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.2%, 1.4%] | 104 |
Regressions (secondary) | 2.4% | [0.2%, 23.7%] | 81 |
Improvements (primary) | -3.8% | [-26.1%, -0.3%] | 10 |
Improvements (secondary) | -1.6% | [-4.6%, -0.5%] | 12 |
All (primary) | 0.1% | [-26.1%, 1.4%] | 114 |
2 Regressions, 2 Improvements, 3 Mixed; 1 of them in rollups 51 artifact comparisons made in total
Regressions
Use fulfillment in method probe, not evaluation #122317 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.2%, 1.3%] | 38 |
Regressions (secondary) | 4.2% | [0.5%, 23.6%] | 39 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.5% | [0.2%, 1.3%] | 38 |
Some additional attempts to fix perf were done in a follow-up PR (https://github.com/rust-lang/rust/pull/124303) but did not pan out to be successful. It looks like this is a correctness fix, so we’ll need to accept the regressions for now.
Stabilize Utf8Chunks
#123909 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.2%, 1.1%] | 11 |
Regressions (secondary) | 0.8% | [0.3%, 1.2%] | 19 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.5% | [0.2%, 1.1%] | 11 |
The regressions are in doc builds, but are not really expected from what is a relatively small change. Further investigation feels warranted (see https://github.com/rust-lang/rust/pull/123909#issuecomment-2082668500).
Improvements
Rollup of 5 pull requests #124289 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.3%, -0.2%] | 7 |
Improvements (secondary) | -0.2% | [-0.2%, -0.2%] | 2 |
All (primary) | -0.3% | [-0.3%, -0.2%] | 7 |
Unclear whether this is a genuine improvement. Performance seems to have re-regressed in #123126 (see Mixed results below), so this may just be bimodality of some kind.
Set writable and dead_on_unwind attributes for sret arguments #121298 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.5%, 0.5%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -3.1% | [-26.0%, -0.3%] | 12 |
Improvements (secondary) | -1.6% | [-4.4%, -0.5%] | 11 |
All (primary) | -2.8% | [-26.0%, 0.5%] | 13 |
Mixed
Enable CrateNum
query feeding via TyCtxt
#123126 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.6%] | 19 |
Regressions (secondary) | 0.4% | [0.3%, 0.5%] | 5 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.7% | [-0.7%, -0.7%] | 2 |
All (primary) | 0.3% | [0.2%, 0.6%] | 19 |
This looks like it’s mostly just a regression to incremental. The PR description notes this is expected and sounds like there’s follow-up work planned (unclear whether it will help with performance though).
Stop using LLVM struct types for alloca #122053 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.3%] | 8 |
Regressions (secondary) | 0.4% | [0.2%, 1.1%] | 17 |
Improvements (primary) | -1.9% | [-1.9%, -1.9%] | 1 |
Improvements (secondary) | -0.4% | [-0.4%, -0.4%] | 1 |
All (primary) | -0.0% | [-1.9%, 0.3%] | 9 |
Instruction counts are predominantly affected by some shuffling inside LLVM, but cycles are largely unaffected. See detailed analysis in https://github.com/rust-lang/rust/pull/122053#issuecomment-2074850501.
Abort a process when FD ownership is violated #124210 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.4%, 0.4%] | 2 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.8% | [-0.8%, -0.8%] | 1 |
Improvements (secondary) | -0.1% | [-0.1%, -0.1%] | 2 |
All (primary) | 0.0% | [-0.8%, 0.4%] | 3 |
Based on the self profile results I suspect this is caused by us generating more code in the downstream crate(s) as a result of the late-bound ub checks.
Nominated Issues
- None
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Make create_def a side effect instead of marking the entire query as always red” rust#115613 (last review activity: 7 months ago)
- cc: @cjgillot (pending rebase cc: @oli)
- “tidy watcher” rust#114209 (last review activity: 4 months ago)
- cc: @Wesley Wiser
- “Remove unnecessary impl sorting in queries and metadata” rust#120812
- cc: @cjgillot
- “Use Box<[T]> for ProcessResult::Changed” rust#121355 (last review activity: 2 months ago)
- cc: @Esteban Küber
Next week’s WG checkins
- None
Next meetings' agenda draft: hackmd link