T-compiler Meeting Agenda 2022-08-04
Announcements
- Types Team: Planning/Deep-Dive meeting at time:2022-08-05T09:00:00-04:00
- Next Thursday August, 11th release of Rust stable 1.63
- Reminder: if you see a PR/issue that seems like there might be legal implications due to copyright/IP/etc, please let the Core team know (or at least message @pnkfelix or @Wesley Wiser so we can pass it along).
Other WG meetings
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Use RangeInclusive in SpanData instead of lo/hi” compiler-team#534
- “Rewrite compiletest out of tree” compiler-team#536
- Old MCPs (not seconded, take a look)
- “Arbitrary annotations in compiletest” compiler-team#513 (last review activity: 3 months ago)
- “Add support for the LoongArch architecture” compiler-team#518 (last review activity: about 48 days ago)
- “Add
#[alias]
attribute to allow symbol aliasing” compiler-team#526 (last review activity: about 13 days ago)
- Pending FCP requests (check your boxes!)
- “[RFC] Support
.comment
section like GCC/Clang (!llvm.ident
)” rust#97550 - “Update cc-rs to 1.0.73 for compiler + bootstrap” rust#99477
- “[RFC] Support
- Things in FCP (make sure you’re good with it)
- “Debuggable Macro Expansions” compiler-team#386
- “Add import_name_type parameter to #[link]” compiler-team#525
- “Re-add most early unstable syntax gates as future-compat lints” compiler-team#535
- “Introduce
core::marker::Tuple
to properly type-checkextern "rust-call"
calls” compiler-team#537 - “Increase the minimum linux-gnu versions” rust#95026
- Accepted MCPs
- “Removing codegen logic for
nvptx-nvidia-cuda
(32-bit target)” compiler-team#496 - “Introduce
-Z
flag to control how proc-macros are run” compiler-team#528 - “move hir typeck into separate crate” compiler-team#529
- “Create
#[rustc_on_type_error]
mimicking#[rustc_on_unimplemented]
for E0308 customization” compiler-team#530 - “Split
Predicate
intoGoal
andClause
” compiler-team#531 - “Deref is not a projection” compiler-team#532
- “Remove HashStable impl for collection types with unstable iteration order” compiler-team#533
- “Removing codegen logic for
- Finalized FCPs (disposition merge)
- “Stabilize
-Zgcc-ld=lld
as-Clink-self-contained=linker -Clinker-flavor=gcc-lld
” compiler-team#510 - “Remove migrate borrowck mode” rust#95565
- “Modify MIR building to drop repeat expressions with length zero” rust#95953
- “Lang: Stabilize usage of rustc_nonnull_optimization_guaranteed on -1” rust#97122
- “Remove a back-compat hack on lazy TAIT” rust#97346
- “Make outlives::{components,verify} agree” rust#97406
- “make cenum_impl_drop_cast deny-by-default” rust#97652
- “make const_err show up in future breakage reports” rust#97743
- “lub: don’t bail out due to empty binders” rust#97867
- “allow unions with mutable references and tuples of allowed types” rust#97995
- “do not mark interior mutable shared refs as dereferenceable” rust#98017
- “session: stabilize split debuginfo on linux” rust#98051
- “Stabilize
WG checkins
-
@_WG-async-foundations by @nikomatsakis and @tmandry (previous checkin):
Checkin text
-
@_WG-traits (Generic associated types initiative) by @Jack Huey (previous checkin):
No new updates - stabilization PR is FCP-merged for lang+types
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “allow numbers with provenance within CTFE execution” rust#99965
- There are some undocumented UB behaviours or (iiuc) indeed documented but not enough well communicated (comment)
- This beta’s backport goal seems to revert some of rust#99965 and allow time for a discussion on rust#99923 to happen
- :beta: “Fix backwards-compatibility check for tests with
+whole-archive
” rust#100068- Fixes rust#100066
- introduced by mistake in 1.61 (rust#95606) (comment)
- :stable: “Fix backwards-compatibility check for tests with
+whole-archive
” rust#100068- stable nomination only in case a 1.63.1 will be planned (comment)
T-rustdoc beta / T-rustdoc stable
- No backport nominations for
T-rustdoc
this time.
:back: / :shrug: / :hand:
PRs S-waiting-on-team
- “Tracking issue for dyn upcasting coercion” rust#65991
- Unsure about the status, waiting on
T-lang
?
- Unsure about the status, waiting on
Oldest PRs waiting for review
- “Suggest using an appropriate keyword for
struct
andenum
” rust#94996 (last review activity: 4 months ago)- cc: @Esteban Küber
- “Implement special-cased projection error message for some common traits” rust#98863 (last review activity: about 31 days ago)
- rustbot autoassigned @Esteban Küber (reroll?)
- “Track
derive
attrs for more accurate suggestion” rust#98965 (last review activity: about 29 days ago)- perhaps waiting on @Vadim Petrochenkov
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 57 T-compiler P-high issues
- 2 P-critical, 1 P-high, 2 P-medium, 0 P-low regression-from-stable-to-beta
- 1 P-critical, 2 P-high, 2 P-medium, 0 P-low regression-from-stable-to-nightly
- 0 P-critical, 36 P-high, 84 P-medium, 6 P-low regression-from-stable-to-stable
P-critical
- “Wrong cast of u16 to usize on aarch64” rust#97463
- PR rust#97800 from Felix was reviewed and r’ed from Wesley
- No
P-critical
issues forT-rustdoc
this time.
P-high regressions
- “Source of lifetime coercion is not reported starting in 1.63” rust#99256
- Assigned
P-high
(comment) but that’s open to discussion
- Assigned
Unassigned P-high nightly regressions
- “
for<'a> &'a T: 'a
and closures regressed” rust#98437- @Jack Huey adds a comment from
T-types
(see comment) - Close this issue? Remove the regression label?
- @Jack Huey adds a comment from
Performance logs
A good week! We had one regression from #99123 that could use further study, but we had a huge swath of improvements. The downward trend of the performance graph summary is striking. Perhaps best of all: Only one rollup PR impacted performance this week which makes things so much easier to evaluate! Great work everyone!
Triage done by @pnkfelix. Revision range: 50166d5e..792bc5a0
Summary:
mean | max | count | |
---|---|---|---|
Regressions (primary) | 0.4% | 0.7% | 5 |
Regressions (secondary) | 0.6% | 1.1% | 11 |
Improvements (primary) | -0.8% | -3.3% | 140 |
Improvements (secondary) | -0.9% | -11.0% | 95 |
All (primary) | -0.8% | -3.3% | 145 |
1 Regressions, 4 Improvements, 4 Mixed; 1 of them in rollups 30 Untriaged Pull Requests 44 artifact comparisons made in total
Regressions
proc_macro
: use crossbeam channels for the proc_macro
cross-thread bridge #99123 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions (primary) | 0.9% | 1.4% | 11 |
Regressions (secondary) | N/A | N/A | 0 |
Improvements (primary) | N/A | N/A | 0 |
Improvements (secondary) | N/A | N/A | 0 |
All (primary) | 0.9% | 1.4% | 11 |
- all 11 regressions are to various profiles+scenarios for html5ever
- @nnethercote and @eddyb are discussing the regression to html5ever on the PR (#99123)
- not marking as triaged, not yet at least; lets try and see if eddyb’s suggested mitigation actually helps here
Improvements
Rollup of 7 pull requests #99816 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions (primary) | N/A | N/A | 0 |
Regressions (secondary) | 1.0% | 1.0% | 1 |
Improvements (primary) | -0.2% | -0.2% | 1 |
Improvements (secondary) | -0.5% | -1.6% | 10 |
All (primary) | -0.2% | -0.2% | 1 |
- primary improvement was
hyper check incr-unchanged
; secondaries werecoercions debug full
, and 9 variations onextern
. Secondary regression wasdeep-vector opt incr-patched: println
.
anonymize all bound vars, not just regions #99730 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions (primary) | N/A | N/A | 0 |
Regressions (secondary) | N/A | N/A | 0 |
Improvements (primary) | -0.4% | -0.6% | 56 |
Improvements (secondary) | -0.4% | -0.9% | 36 |
All (primary) | -0.4% | -0.6% | 56 |
- As is, this PR registered compilation time improvements
- However, @simulacrum noted that it was associated with a nearly 2% regression to bootstrap times.
Limit symbols exported from proc macros #99944 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions (primary) | N/A | N/A | 0 |
Regressions (secondary) | N/A | N/A | 0 |
Improvements (primary) | -0.6% | -2.9% | 41 |
Improvements (secondary) | -2.4% | -10.7% | 11 |
All (primary) | -0.6% | -2.9% | 41 |
- wow, this was a big win! serde_derive incr-unchanged builds up to 3% faster; ripgrep check is up to 1.75% faster, hyper and webrender check 1% faster.
Lexer improvements #99884 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions (primary) | N/A | N/A | 0 |
Regressions (secondary) | N/A | N/A | 0 |
Improvements (primary) | -0.3% | -0.6% | 42 |
Improvements (secondary) | -0.5% | -1.2% | 48 |
All (primary) | -0.3% | -0.6% | 42 |
- This was a very broad win, where a huge number of benchmarks all improved by a relatively small amount.
- I’m impressed by the inventiveness shown during PR review.
Mixed
Remove remaining uses of box syntax from librustdoc #99577 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions (primary) | N/A | N/A | 0 |
Regressions (secondary) | 0.3% | 0.3% | 4 |
Improvements (primary) | -0.3% | -0.3% | 2 |
Improvements (secondary) | N/A | N/A | 0 |
All (primary) | -0.3% | -0.3% | 2 |
- as you might expect, the limited number of performance changes here were to doc benchmarks (specifically serde and libc doc).
Remove TreeAndSpacing
. #99887 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions (primary) | 0.3% | 0.3% | 1 |
Regressions (secondary) | 0.2% | 0.2% | 1 |
Improvements (primary) | -0.3% | -0.4% | 5 |
Improvements (secondary) | -0.4% | -0.9% | 16 |
All (primary) | -0.2% | -0.4% | 6 |
- already triaged by nnethercote: “There’s a single regressing result and 25 improved results. The changes are all very small. This is fine”
Thin AssocItem
#95884 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions (primary) | 0.3% | 0.4% | 16 |
Regressions (secondary) | 0.5% | 0.6% | 9 |
Improvements (primary) | -0.3% | -0.4% | 7 |
Improvements (secondary) | -0.4% | -0.5% | 8 |
All (primary) | 0.1% | 0.4% | 23 |
- already triaged by nnethercote: “This looks perf-neutral, with the improvements roughly the same size as the regressions.”
Remove fn backtrace
and replace with usages of provider API #99431 (Comparison Link)
mean | max | count | |
---|---|---|---|
Regressions (primary) | N/A | N/A | 0 |
Regressions (secondary) | 1.5% | 1.5% | 2 |
Improvements (primary) | -0.9% | -1.4% | 2 |
Improvements (secondary) | N/A | N/A | 0 |
All (primary) | -0.9% | -1.4% | 2 |
- the improvements are to building primary benchmark cargo opt in incr-patch: println and incr-full, by -1.38% and -0.42% respectively . The regression was to the externs incr-full in debug and opt profiles, both by 1.52%.
- this is entirely acceptable (and wasn’t marked as a performance regression by the bot in the first place)
Nominated Issues
- “compiler-builtins CI fails on powerpc64” rust#99853
- Seems that - for this Tier 2 target - tests are slowly degrading
- Opened a topic on Zulip to get more eyeballs
- cc @Nikita Popov
- No nominated RFCs for
T-compiler
this time.
Next week’s WG checkins
- @_WG-diagnostics by @Esteban Küber and @oli
- @_WG-rustc-dev-guide by @Santiago Pastorino and @Yuki Okushi|217081