owned this note
owned this note
Published
Linked with GitHub
---
tags: weekly, rustc
---
# T-compiler Meeting Agenda 2021-09-09
[Tracking Issue](https://github.com/rust-lang/rust/issues/54818)
## Announcements
- :tada: Today 9/9th, release Rust stable 1.55 :tada:
## MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- No new proposals this time.
- Old MCPs (not seconded, take a look)
- "rustdoc is using rustc_ast_pretty, would it be possible to make it somewhat "stable"?" [compiler-team#403](https://github.com/rust-lang/compiler-team/issues/403) (last comment: GH none, Zulip: none)
- "CI should exercise (subset of) tests under --stage 1" [compiler-team#439](https://github.com/rust-lang/compiler-team/issues/439) (last comment: GH 20d ago, Zulip: 1w ago)
- "Accept `pc` in place of `unknown` and `unknown` in place of `pc` for `x86_64` and `i?86` targets" [compiler-team#441](https://github.com/rust-lang/compiler-team/issues/441) (last comment: 2 months ago)
- "Non exhaustive reachable patterns lint" [compiler-team#445](https://github.com/rust-lang/compiler-team/issues/445) (last comment: GH none, Zulip about a month ago)
- "Add `TyKind::Const` and remove `GenericArgKind::Const`" [compiler-team#453](https://github.com/rust-lang/compiler-team/issues/453) (last comment: GH None, Zulip about 2 weeks ago)
- "prefer-dynamic=subset" [compiler-team#455](https://github.com/rust-lang/compiler-team/issues/455) (last comment: GH none, Zulip 2 days ago)
- Pending FCP requests (check your boxes!)
- "Write text output files to stdout if options like `-o -` or `--emit asm=-` are provided" [compiler-team#431](https://github.com/rust-lang/compiler-team/issues/431)
- Things in FCP (make sure you're good with it)
- "Add `TerminatorKind::Box` to MIR" [compiler-team#460](https://github.com/rust-lang/compiler-team/issues/460)
- Accepted MCPs
- "Transfer `rustc-demangle` to the @rust-lang GitHub org." [compiler-team#456](https://github.com/rust-lang/compiler-team/issues/456)
- "Add the `-Z randomize-layout` flag" [compiler-team#457](https://github.com/rust-lang/compiler-team/issues/457)
- "Add `m68k-unknown-linux-gnu` as new Tier 3 backend" [compiler-team#458](https://github.com/rust-lang/compiler-team/issues/458)
- Finalized FCPs (disposition merge)
- "Stabilize "force warn" option " [rust#86516](https://github.com/rust-lang/rust/issues/86516)
- "Support `#[track_caller]` on closures and generators" [rust#87064](https://github.com/rust-lang/rust/pull/87064)
- "stabilize disjoint capture in closures (RFC 2229)" [rust#88126](https://github.com/rust-lang/rust/issues/88126)
- "Stabilize reserved prefixes" [rust#88140](https://github.com/rust-lang/rust/issues/88140)
### WG checkins
@*wg-incr-comp* by @**pnkfelix** and @**Wesley Wiser** ([previous checkin](https://hackmd.io/QCs_hIbpTbKgcSy-0V0Liw)):
> On 20 Aug, wesleywiser mw and pnkfelix met with cjgillot to discuss PR #84373
> It was productive in getting things unblocked, and we hope to have more meetings and progress in the future.
@*WG-llvm* by @**nagisa** ([previous checkin](https://hackmd.io/QCs_hIbpTbKgcSy-0V0Liw)):
> There was recently a bump to [LLVM 13](https://github.com/rust-lang/rust/pull/87570), with all of the associated fallout and fixes. There's also an effort to enable the [new pass manager by default](https://github.com/rust-lang/rust/pull/88243). This pass manager takes a different tradeoff between space and time, and as a result rustc would use more memory but also optimize code faster.
> In some other news:
>* we're considering using the `object` crate in more places to replace some artifact writing functionality we currently use from LLVM.
>* The work towards type-less pointer support has largely happened to the extent it is enabled by LLVM 13.
>* Support for LLVM 10 will likely be dropped in the near future, making LLVM 11 the oldest supported version.
## Backport nominations
[T-compiler stable](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Abeta-nominated+-label%3Abeta-accepted+label%3AT-compiler) / [T-compiler beta](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Astable-nominated+-label%3Astable-accepted+label%3AT-compiler)
- :beta: "Preserve most sub-obligations in the projection cache" [rust#85868](https://github.com/rust-lang/rust/pull/85868)
- Team is inclined to r+ this, perf regressions are already triaged (necessary for correctness)
- @**Jack Huey** [commented last week](https://rust-lang.zulipchat.com/#narrow/stream/238009-t-compiler.2Fmeetings/topic/.5Bweekly.5D.202021-09-02.20.2354818/near/251720629) that the code needs a comment
- :beta: "2229: Don't move out of drop type" [rust#88477](https://github.com/rust-lang/rust/pull/88477)
- Fixes [rust#88476](https://github.com/rust-lang/rust/issues/88476) (Rust 2021 related)
- reviewed by @**Gary Guo**
- [approved by all team members](https://github.com/rust-lang/rust/pull/88477#issuecomment-912577175)
- :beta: "Fix 2021 `dyn` suggestion that used code as label" [rust#88657](https://github.com/rust-lang/rust/pull/88657)
- opened by @**Noah Lev**
- assigned for review to @**Mara**
- No stable nominations for `T-compiler` this time.
[T-rustdoc stable](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Abeta-nominated+-label%3Abeta-accepted+label%3AT-rustdoc) / [T-rustdoc beta](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Astable-nominated+-label%3Astable-accepted+label%3AT-rustdoc)
- No beta nominations for `T-rustdoc` this time.
- No stable nominations for `T-rustdoc` this time.
:back: / :shrug: / :hand:
## PRs S-waiting-on-team
[T-compiler](https://github.com/rust-lang/rust/pulls?utf8=%E2%9C%93&q=is%3Aopen+label%3AS-waiting-on-team+label%3AT-compiler)
- "Perform type inference in range pattern" [rust#88090](https://github.com/rust-lang/rust/pull/88090)
- opened by @**Gary Guo**
- fixes [rust#88074](https://github.com/rust-lang/rust/issues/88074)
- @**Esteban Küber** left some comments
- @**Jack Huey** [I-nominated](https://github.com/rust-lang/rust/pull/88090#issuecomment-914580827) for `T-lang`
### Oldest PRs waiting for review
[T-compiler](https://github.com/rust-lang/rust/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-asc+label%3AS-waiting-on-review+draft%3Afalse+label%3AT-compiler)
- "Replace dominators algorithm with simple Lengauer-Tarjan" [rust#85013](https://github.com/rust-lang/rust/pull/85013) (last comment: 3 months ago)
- Question from @**apiraino**: why people from wg-triage have been removing and adding `S-waiting-for-review` for the last 2 months? Is it meant to emit a "ping" reminder?
- "Refactor query forcing" [rust#78780](https://github.com/rust-lang/rust/pull/78780) (last comment: 3 months ago)
- assigned to @**Wesley Wiser**
- [Perf run results](https://github.com/rust-lang/rust/pull/78780#issuecomment-905701857): no runtime modification, and -8% on `rustc_query_impl` compile time
- "Update the x86_64-unknown-l4re-uclibc tier 3 target" [rust#85967](https://github.com/rust-lang/rust/pull/85967) (last comment: 3 months ago)
- [There is a review](https://github.com/rust-lang/rust/pull/85967#pullrequestreview-680959056) from June from @**Vadim Petrochenkov** which might need some discussion
- "Add basic checks for well-formedness of `fn`/`fn_mut` lang items" [rust#86246](https://github.com/rust-lang/rust/pull/86246) (last comment: 2 months ago)
- "Emit clearer diagnostics for parens around `for` loop heads" [rust#86422](https://github.com/rust-lang/rust/pull/86422) (last comment: 2 months ago)
## Issues of Note
### Short Summary
- [1 T-compiler P-critical issues](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-critical)
- [1 of those are unassigned](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-critical+no%3Aassignee)
- [77 T-compiler P-high issues](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-high)
- [53 of those are unassigned](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-high+no%3Aassignee)
- [1 P-critical, 1 P-high, 0 P-medium, 0 P-low regression-from-stable-to-beta](https://github.com/rust-lang/rust/labels/regression-from-stable-to-beta)
- [0 P-critical, 0 P-high, 1 P-medium, 2 P-low regression-from-stable-to-nightly](https://github.com/rust-lang/rust/labels/regression-from-stable-to-nightly)
- [1 P-critical, 46 P-high, 81 P-medium, 10 P-low regression-from-stable-to-stable](https://github.com/rust-lang/rust/labels/regression-from-stable-to-stable)
### P-critical
[T-compiler](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3AP-critical+label%3AT-compiler)
- "Type called union wreaks havoc since 1.54" [rust#88583](https://github.com/rust-lang/rust/issues/88583)
- opened by @**David Tolnay**
- [@**Josh Triplett** and @**pnkfelix** discussed](https://github.com/rust-lang/rust/issues/88583#issuecomment-914482165)
- they agree that a revert of [rust#84571](https://github.com/rust-lang/rust/pull/84571) is needed
- nominated to get attention on this revert
[T-rustdoc](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3AP-critical+label%3AT-rustdoc)
- No `P-critical` issues for `T-rustdoc` this time.
### P-high regressions
[P-high beta regressions](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3Aregression-from-stable-to-beta+label%3AP-high+-label%3AT-infra+-label%3AT-libs+-label%3AT-release+-label%3AT-rustdoc+-label%3AT-core)
- No `P-high` beta regressions this time.
[Unassigned P-high nightly regressions](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3Aregression-from-stable-to-nightly+label%3AP-high+no%3Aassignee+-label%3AT-infra+-label%3AT-libs+-label%3AT-release+-label%3AT-rustdoc+-label%3AT-core)
- No unassigned `P-high` nightly regressions this time.
## Performance logs
> [triage logs for 2021-09-7](https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-09-07.md)
A busy week, with lots of mixed changes, though in the end only a few were deemed significant enough to report here.
Triage done by **@pnkfelix**. 3 Regressions, 1 Improvements, 3 Mixed; 0 of them in rollups
57 comparisons made in total
#### Regressions
Shrink Session a bit [#88530](https://github.com/rust-lang/rust/issues/88530)
- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=64929313f53181636e4dd37e25836973205477e4&end=fcce644119cf4e8e36001368e514bb5ed67cb855&stat=instructions:u) (up to 2.6% on `full` builds of `deeply-nested-async`)
Concrete regions can show up in mir borrowck if the originated from there [#88533](https://github.com/rust-lang/rust/issues/88533)
- Very small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=29ef6cf1637aa8317f8911f93f14e18d404c1b0e&end=a3956106d12cebec91be0637759e29ab6908b4cd&stat=instructions:u) (up to 1.0% on `incr-patched: add static arr item` builds of `coercions`)
- This is a small regression to `coercions` and that may be noise. However, there are many others that are over 0.4% regression to instruction counts. The combination of those two factors led pnkfelix to think that we may want to take a second look at the effects of this PR.
Introduce `let...else` [#87688](https://github.com/rust-lang/rust/issues/87688)
- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=a3956106d12cebec91be0637759e29ab6908b4cd&end=c2a408840ad18f74280805535f0b7193528ff3df&stat=instructions:u) (up to -0.3% on `incr-unchanged` builds of `deeply-nested-closures`)
- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=a3956106d12cebec91be0637759e29ab6908b4cd&end=c2a408840ad18f74280805535f0b7193528ff3df&stat=instructions:u) (up to 0.4% on `full` builds of `issue-46449`)
- Small regression (approximately 1%) in instruction counts on several of the `*-doc` tests, found via human eye.
#### Improvements
- Move global analyses from lowering to resolution [#88597](https://github.com/rust-lang/rust/issues/88597)
#### Mixed
Preserve most sub-obligations in the projection cache [#85868](https://github.com/rust-lang/rust/issues/85868)
- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=b834c4c1bad7521af47f38f44a4048be0a1fe2ee&end=371f3cd3fe523d0b398ed1db1620667c53ba7d02&stat=instructions:u) (up to -6.9% on `incr-unchanged` builds of `deeply-nested`)
- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=b834c4c1bad7521af47f38f44a4048be0a1fe2ee&end=371f3cd3fe523d0b398ed1db1620667c53ba7d02&stat=instructions:u) (up to 9.4% on `full` builds of `deeply-nested`)
BTreeMap/BTreeSet::from_iter: use bulk building to improve the performance [#88448](https://github.com/rust-lang/rust/issues/88448)
- Large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=11bbb5231349a0a144d86d5c0c21061a06d1969d&end=ffaf857045f4f4d8bb563e0a5077f9b065f42916&stat=instructions:u) (up to -3.0% on `full` builds of `inflate`)
- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=11bbb5231349a0a144d86d5c0c21061a06d1969d&end=ffaf857045f4f4d8bb563e0a5077f9b065f42916&stat=instructions:u) (up to 4.5% on `incr-patched: println` builds of `clap-rs`)
Avoid invoking the hir_crate query to traverse the HIR [#88435](https://github.com/rust-lang/rust/issues/88435)
- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=e30b68353fe22b00f40d021e7914eeb78473b3c1&end=7849e3e9dda60e8ec826ee245c6b180e73911b37&stat=instructions:u) (up to -1.2% on `incr-patched: add static arr item` builds of `coercions`)
- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=e30b68353fe22b00f40d021e7914eeb78473b3c1&end=7849e3e9dda60e8ec826ee245c6b180e73911b37&stat=instructions:u) (up to 0.5% on `incr-unchanged` builds of `helloworld`)
- pnkfelix included this one as notable largely because the expected perf changes from [the actual PR](https://github.com/rust-lang/rust/pull/88435#issuecomment-907700333) largely showed slight improvements across the board, while after it landed on nightly, it is best categorized as "Mixed"
#### Untriaged Pull Requests
- [#88597 Move global analyses from lowering to resolution](https://github.com/rust-lang/rust/pull/88597)
- [#88552 Stop allocating vtable entries for non-object-safe methods](https://github.com/rust-lang/rust/pull/88552)
- [#88312 Treat types in unnormalized function signatures as well-formed](https://github.com/rust-lang/rust/pull/88312)
- [#87815 encode `generics_of` for fields and ty params](https://github.com/rust-lang/rust/pull/87815)
- [#87781 Remove box syntax from compiler and tools](https://github.com/rust-lang/rust/pull/87781)
- [#87640 Rollup of 9 pull requests](https://github.com/rust-lang/rust/pull/87640)
- [#87587 Various refactorings of the TAIT infrastructure](https://github.com/rust-lang/rust/pull/87587)
- [#87570 Upgrade to LLVM 13](https://github.com/rust-lang/rust/pull/87570)
- [#87244 Better diagnostics with mismatched types due to implicit static lifetime](https://github.com/rust-lang/rust/pull/87244)
- [#86898 Add fast path for Path::cmp that skips over long shared prefixes](https://github.com/rust-lang/rust/pull/86898)
- [#86777 Include terminators in instance size estimate](https://github.com/rust-lang/rust/pull/86777)
- [#86698 Move OnDiskCache to rustc_query_impl.](https://github.com/rust-lang/rust/pull/86698)
- [#86588 Rollup of 8 pull requests](https://github.com/rust-lang/rust/pull/86588)
- [#86034 Change entry point to 🛡️ against 💥 💥-payloads](https://github.com/rust-lang/rust/pull/86034)
- [#85556 Warn about unreachable code following an expression with an uninhabited type](https://github.com/rust-lang/rust/pull/85556)
- [#84560 Inline Iterator as IntoIterator.](https://github.com/rust-lang/rust/pull/84560)
- [#83302 Get piece unchecked in `write`](https://github.com/rust-lang/rust/pull/83302)
## Nominated Issues
[T-compiler](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AI-nominated+label%3AT-compiler)
- "Perform type inference in range pattern" [rust#88090](https://github.com/rust-lang/rust/pull/88090)
- (see `S-waiting-on-team`)
- "Type called union wreaks havoc since 1.54" [rust#88583](https://github.com/rust-lang/rust/issues/88583)
- (see `P-critical` list)
[RFC](https://github.com/rust-lang/rfcs/issues?q=is%3Aopen+label%3AI-nominated+label%3AT-compiler)
- No nominated RFCs for `T-compiler` this time.