T-compiler Meeting Agenda 2024-05-09
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
- Types Team: ITE (Impl Trait Everywhere) Triage time:2024-05-09T22:00:00+01:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- No new proposals this time.
- 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: 2 months ago)
- “Only emit forward compatible v0 symbol names with graceful degradation” compiler-team#737 (Zulip) (last review activity: about 34 days ago)
- “Partial compilation using MIR-only rlibs” compiler-team#738 (Zulip) (last review activity: about 27 days ago)
- “Add –print=check-cfg” compiler-team#743 (Zulip) (last review activity: about 5 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 checkboxs
- concerns: automatic-sync (by compiler-errors) single-point-of-failure-via-stream-archival (by pnkfelix)
- merge: Stabilize
--env-set
option (rust#119926)- @|119009 @|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)- @|123586 @|116107 @|125294 @|119031 @|248906 @|426609 @|116118 @|232957
- no pending concerns
- merge: allow overwriting the output of
rustc --version
(rust#124339)- @|123586 @|125250 @|248906 @|124287 @|426609 @|116118 @|216206 @|232957
- no pending concerns
- 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)
- “Add
--emit=thin-link-bitcode
to enable distributed ThinLTO users” compiler-team#735 (Zulip) - “Support
-Cforce-frame-pointers=non-leaf
” compiler-team#744 (Zulip) - “Warn (or error) when
Self
ctor from outer item is referenced in inner nested item” rust#124187
- Accepted MCPs
- No new accepted proposals this time.
- 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)
- “Make casts of pointers to trait objects stricter” rust#120248
- “Allow coercing functions whose signature differs in opaque types in their defining scope into a shared function pointer type” rust#124297
- Other teams finalized FCPs
- “Allow coercing functions whose signature differs in opaque types in their defining scope into a shared function pointer type” rust#124297
WG checkins
None
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Adjust
#[macro_export]
/doctest help suggestion for non_local_defs lint” rust#124568- authored by @_Urgau
- partially fixes #124534, a rustdoc lint triggered in rustdoc comments
- t-rustdoc r+’d too
- possibly there will be future work to handle this (comment)
- :beta: “Do not ICE on foreign malformed
diagnostic::on_unimplemented
” rust#124683- authored by @_Esteban Küber
- fixes #124651, regression on 1.78 stable, the ICE triggered when using a malformed
diagnostic::on_unimplemented
- Michael mentions that this should be ported together with #124675 (next backport)
- :beta: “Fix more ICEs in
diagnostic::on_unimplemented
” rust#124875- authored by @_Michael Goulet (compiler-errors)
- fixes more ICEs on #124651
- PR is open but r+d
- Michael mentions that this should be ported together with #124683 (previous backport :))
- :stable: “Do not ICE on foreign malformed
diagnostic::on_unimplemented
” rust#124683- backport on stable of the ICE fix mentioned before
- :stable: “Fix more ICEs in
diagnostic::on_unimplemented
” rust#124875- backport on stable of the ICE fix mentioned before
- 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
- 62 T-compiler P-high issues
- 0 P-critical, 0 P-high, 2 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
Largely uneventful week; the most notable shifts were considered false-alarms
that arose from changes related to cfg-checking (either cargo enabling it, or
adding cfg’s like rustfmt
to the “well-known cfgs list”).
Triage done by @pnkfelix. Revision range: c65b2dc9..69f53f5e
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 3.0% | [0.2%, 19.5%] | 65 |
Regressions (secondary) | 1.3% | [0.2%, 4.5%] | 103 |
Improvements (primary) | -0.9% | [-2.2%, -0.2%] | 24 |
Improvements (secondary) | -0.7% | [-1.4%, -0.4%] | 23 |
All (primary) | 1.9% | [-2.2%, 19.5%] | 89 |
3 Regressions, 2 Improvements, 3 Mixed; 5 of them in rollups 30 Untriaged Pull Requests 54 artifact comparisons made in total
Regressions
Rollup of 7 pull requests #124675 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.2%, 1.2%] | 11 |
Regressions (secondary) | 0.8% | [0.4%, 1.3%] | 17 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.5% | [0.2%, 1.2%] | 11 |
- all primary regressions are to doc-full scenarios, and the 1.2% is to helloworld.
- not worth teasing apart a rollup PR.
- marking as triaged.
Update cargo #124684 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 2.4% | [0.2%, 19.1%] | 83 |
Regressions (secondary) | 1.6% | [0.2%, 5.7%] | 92 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 2.4% | [0.2%, 19.1%] | 83 |
- syn (mostly check builds, but also a debug incr-unchanged and opt incr-unchanged) had regressions ranging from 7.24% all the way up to 19.11%.
- The most plausible hypothesis is that this is due to an explosion in the number of warnings emitted for this benchmark. (The number of warnings went from ~200 up to 1800, according to Urgau’s analysis).
- This means the code ends up becoming, at least in part, a benchmark of the lint machinery, regardless of whether that is our intent or not.
- see also rustc-perf#1819 “Consider passing -Awarnings (or similar) to avoid false alarms from lint reporting”
- marking as triaged.
Rollup of 3 pull requests #124784 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.4%] | 5 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.3% | [0.2%, 0.4%] | 5 |
- all regressions were to syn, to various incr-unchanged and incr-patched:println scenarios.
- current hypothesis is that this is due to PR #124742, which adds
rustfmt
to the well-known cfgs list. - that hypothesis implies that this is a (mostly-)false alarm, much like #124684.
- marking as triaged
Improvements
Rollup of 10 pull requests #124646 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.0% | [-2.8%, -0.2%] | 24 |
Improvements (secondary) | -0.9% | [-1.6%, -0.3%] | 9 |
All (primary) | -1.0% | [-2.8%, -0.2%] | 24 |
- the bulk of the improvements are to variations of html5ever and serde_derive.
- skimming over the rollup list, I cannot identify an immediate root cause for improvement
- but for now will treat it like a happy accident
Some hir cleanups #124401 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.1% | [-0.2%, -0.1%] | 3 |
Improvements (secondary) | -1.1% | [-2.0%, -0.2%] | 2 |
All (primary) | -0.1% | [-0.2%, -0.1%] | 3 |
- all improvements are to variations of typenum
- the hir cleanups in question are largely to store
AnonConst
(e.g. for array lengths) in the HIR arena, and then move the ConstArg span over to AnonConst span instead. - inspection of typenum didn’t show any particular cases that seemed like the would stress
AnonConst
; maybe the benefit comes more from the places where we now pass a span by value instead of passing a pointer to it.
Mixed
Account for immutably borrowed locals in MIR copy-prop and GVN #123602 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.9%] | 10 |
Regressions (secondary) | 0.8% | [0.2%, 2.6%] | 4 |
Improvements (primary) | -0.5% | [-1.1%, -0.2%] | 6 |
Improvements (secondary) | -0.5% | [-1.0%, -0.3%] | 8 |
All (primary) | 0.0% | [-1.1%, 0.9%] | 16 |
- html5ever opt-full regressed by 0.92%; libc in various incremental scenarios regressed by 0.30% to 0.39%.
- the libc changes were anticipated in the perf build prior to merge; html5ever opt-full was not predicted there.
- pnkfelix hypothesizes that this just reflects some extra-work from the compiler attempting to do the copy-propagation and global-value-numbering mir-optimizations on a larger set of immutably-borrowed locals, and is acceptable given the expected benefits.
- marking as triaged
Rollup of 8 pull requests #124703 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.2%, 0.6%] | 4 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -1.0% | [-1.5%, -0.5%] | 4 |
All (primary) | 0.5% | [0.2%, 0.6%] | 4 |
- image opt-full regressed by 0.63%; html5ever debug-{incr-full,full} by ~0.5%, html5ever opt-incr-unchaged by 0.21%
- already triaged by Kobzol, who hypothesizes that PR #124700 modified some inlining decisions.
Rollup of 4 pull requests #124716 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.3% | [0.3%, 0.5%] | 6 |
Improvements (primary) | -0.8% | [-0.8%, -0.8%] | 1 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.8% | [-0.8%, -0.8%] | 1 |
- all regressions are secondary (specifically on unused-warnings benchmark)
- regression identified by Kobzol as caused by PR #124584 “Various improvements to entrypoint code”
- seems like noise to pnkfelix
- marked as triaged
Nominated Issues
- “New rustc nightly suggests adding a
build.rs
to use conditional compilation” rust#124800- @wesleywiser responded on the thread in this comment
- a summary from
@epage
of T-cargo (last) discussion on the topic in this comment- with a question for T-compiler:
If we go with lint configuration, any thoughts or concerns about Cargo “owning” lint configuration under
[lints.rust]
where Cargo translates the configuration into CLI flags for rustc, leaving rustc to be more generic?
- with a question for T-compiler:
- Probably moving the discussion to next meeting of discuss this async
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
None
Next week’s WG checkins
Probably none