owned this note
owned this note
Published
Linked with GitHub
---
tags: weekly, rustc
---
# T-compiler Meeting Agenda 2020-08-27
[Tracking Issue](https://github.com/rust-lang/rust/issues/54818)
## Announcements
- Rust 1.46 is being released today! :tada: :tada: :tada:
- Crater run for 1.46 [rust#75142](https://github.com/rust-lang/rust/issues/75142) came back clear. In particular we wanted to check if [rust#75494](https://github.com/rust-lang/rust/issues/75494) was ok.
- Tomorrow (friday 28th) we have [our planning meeting](https://forge.rust-lang.org/compiler/steering-meeting.html)
- New MCPs (take a look, see if you like them!)
- "Add StatementKind::Call to MIR" [compiler-team#348](https://github.com/rust-lang/compiler-team/issues/348)
- "Require users to confirm they know RUSTC_BOOTSTRAP is unsupported before using it" [compiler-team#350](https://github.com/rust-lang/compiler-team/issues/350)
- Old MCPs (not seconded, take a look)
- "Integration of the Cranelift backend with rustc" [compiler-team#270](https://github.com/rust-lang/compiler-team/issues/270)
- "Decentralize queries" [compiler-team#277](https://github.com/rust-lang/compiler-team/issues/277)
- "Infer hidden types without replacing with an inference variable" [compiler-team#325](https://github.com/rust-lang/compiler-team/issues/325)
- "Uplift `temporary-cstring-as-ptr` lint from `clippy` into rustc" [compiler-team#346](https://github.com/rust-lang/compiler-team/issues/346)
- "Uplift `drop-bounds` lint from clippy into rustc" [compiler-team#347](https://github.com/rust-lang/compiler-team/issues/347)
- Pending FCP requests (check your boxes!)
- No pending FCP requests this time.
- Things in FCP (make sure you're good with it)
- "Auto-generate lint documentation" [compiler-team#349](https://github.com/rust-lang/compiler-team/issues/349)
- "Don't build tools by default with `x.py build`" [compiler-team#351](https://github.com/rust-lang/compiler-team/issues/351)
- Accepted MCPs
- "Move the compiler to a new `compiler/` directory" [compiler-team#336](https://github.com/rust-lang/compiler-team/issues/336)
- "Form t-compiler/wg-parser-library" [compiler-team#338](https://github.com/rust-lang/compiler-team/issues/338)
- "Stabilise `link-self-contained` option" [compiler-team#343](https://github.com/rust-lang/compiler-team/issues/343)
- "Moving `#[cfg(test)]` modules into a separate files to save recompiling the `std` crate" [compiler-team#344](https://github.com/rust-lang/compiler-team/issues/344)
- "Add a lint for attempting to mutate a `const` item" [compiler-team#345](https://github.com/rust-lang/compiler-team/issues/345)
- Finalized FCPs (disposition merge)
- "stabilize ptr_offset_from" [rust#74238](https://github.com/rust-lang/rust/pull/74238)
- "Stabilize Range[Inclusive]::is_empty" [rust#75132](https://github.com/rust-lang/rust/pull/75132)
### WG checkins
@*WG-diagnostics* checkin by @**Esteban Küber**
>- More gracefully handle patterns used in an incorrect manner (all combinations of struct variant/enum variant/unit variant that do not correspond to their declaration) with structured suggestions and pointing at definitions
>- From fasterthanli.me (amos)'s last two articles we've gotten 3 diagnostics improvements
cleaning up parser errors (regression from a refactor some time back, reduced amount of parse errors inside struct definitions significantly)
- structured suggestions for methods missing `self` receiver
- more structured suggestions for boxed trait objects instead of impl Trait on non-coerceable tail expressions
>- Fix parser regression: `{block} &&true` is a valid tail expression in an `fn foo() -> &&bool`. This was introduced a couple of releases back, will be fixed in 1.47.
>- We detect `===/!==` and `for foo of bar` (JS syntax) and suggest correct syntax
>- Various clean ups, rewordings, fixing of ICEs and silencing of redundant errors
>- Further various cleanups of `::` -> `:` typos (continue to hate the type ascription syntax, but I'll cope)
>- Removal of type path string comparisons from diagnostics code and instead use "diagnostic_item"s.
>- Further work on lifetime errors caused by implicit`'static` lifetimes with targeted diagnostics
>- Tweak errors on arguments caused by Sized requirements and suggest to borrow
>- Detect `foo.collect::Vec<_>();` and suggest `foo.collect::<Vec<_>>();`
>- Provide suggestions for some moved value errors
>
>Changes requiring to be signed off (or closed)
>
>- [rust#74130](https://github.com/rust-lang/rust/pull/74130)
>- [rust#71481](https://github.com/rust-lang/rust/pull/71481)
>
>Feeling fancy and wanting to highlight still unmerged change that I'm proud of:
>
>- [rust#75931](https://github.com/rust-lang/rust/pull/75931) Suggest `if let x = y` when encountering `if x = y`
>
>Kind of major change announcement:
>
>- [rust#75138](https://github.com/rust-lang/rust/pull/75138) moves a lot of the error handling logic "out of the happy path"
by using structs to describe the error situation and having a scheme for rendering said structs.
@*WG-async-foundations* checkin by @**nikomatsakis** and @**tmandry**
> Work on the compiler has, I believe, been slow lately. There has been progress towards an RFC for the `Stream` trait and experiments for a lint around values that should be live over yields. -- nikomatsakis, who may be a bit behindCheckin text
## Beta-nominations
[T-compiler](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Abeta-nominated+-label%3Abeta-accepted+label%3AT-compiler)
- "Account for async functions when suggesting new named lifetime" [rust#75867](https://github.com/rust-lang/rust/pull/75867)
- Opened by @**Esteban Küber**, reviewed by @**pickfire**
- Fixes [rust#75850](https://github.com/rust-lang/rust/issues/75850)
- Nominating for beta backport simply because it is already in stable, but there's no harm on letting this ride the train.
- Assigned P-low
- "Fix another clashing_extern_declarations false positive." [rust#75885](https://github.com/rust-lang/rust/pull/75885)
- Opened by @**jumbatm**, reviewed by @**nagisa** and @**lcnr**
- Fixes [rust#75739](https://github.com/rust-lang/rust/issues/75739)
- [Backport reasons](https://github.com/rust-lang/rust/pull/75885#issuecomment-679270849)
[libs-impl](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Abeta-nominated+-label%3Abeta-accepted+label%3Alibs-impl)
- No beta nominations for `libs-impl` this time.
[T-rustdoc](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Abeta-nominated+-label%3Abeta-accepted+label%3AT-rustdoc)
- No beta nominations for `T-rustdoc` this time.
:back: / :shrug: / :hand:
## Stable-nominations
[T-compiler](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Astable-nominated+-label%3Astable-accepted+label%3AT-compiler)
- No stable nominations for `T-compiler` this time.
[libs-impl](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Astable-nominated+-label%3Astable-accepted+label%3Alibs-impl)
- No stable nominations for `libs-impl` this time.
[T-rustdoc](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Astable-nominated+-label%3Astable-accepted+label%3AT-rustdoc)
- 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)
- No PRs waiting on `T-compiler` this time.
[libs-impl](https://github.com/rust-lang/rust/pulls?utf8=%E2%9C%93&q=is%3Aopen+label%3AS-waiting-on-team+label%3Alibs-impl)
- No PRs waiting on `libs-impl` this time.
## Issues of Note
### Short Summary
- [0 T-compiler P-critical issues](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3AT-compiler+label%3AP-critical+)
- [0 of those are unassigned](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3AT-compiler+label%3AP-critical+no%3Aassignee)
- [50 T-compiler P-high issues](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3AT-compiler+label%3AP-high+)
- [30 of those are unassigned](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3AT-compiler+label%3AP-high+no%3Aassignee)
- [0 P-critical, 2 P-high, 1 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, 2 P-high, 6 P-medium, 1 P-low regression-from-stable-to-nightly](https://github.com/rust-lang/rust/labels/regression-from-stable-to-nightly)
- [0 P-critical, 16 P-high, 54 P-medium, 6 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)
- No `P-critical` issues for `T-compiler` this time.
[libs-impl](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3AP-critical+label%3Alibs-impl)
- No `P-critical` issues for `libs-impl` this time.
[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.
### Unassigned P-high regressions
[Beta regressions](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3Aregression-from-stable-to-beta+P-high+no%3Aassignee)
- "libtest panics when running `should_panic` tests under QEMU armv7 " [rust#74820](https://github.com/rust-lang/rust/issues/74820)
- Discussed last week
- Cargo lib skeleton + should_panic test code fails on QEMU armv7
- It seems to be caused by [rust#72746](https://github.com/rust-lang/rust/pull/72746) by @**tmandry**
- Seems to be specific to QEMU, [see comment](https://github.com/rust-lang/rust/issues/74820#issuecomment-673977399)
- "diagnostics: "one type is more general" for two identical types?" [rust#75791](https://github.com/rust-lang/rust/issues/75791)
- Very confusing error message
- @**matthiaskrgr** suggested that it may have regressed on [rust#73643](https://github.com/rust-lang/rust/pull/73643) which is a rollup.
[Nightly regressions](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3Aregression-from-stable-to-nightly+P-high+no%3Aassignee)
- "Type mismatch in function arguments E0631, E0271 are falsely recognized as E0308 mismatched types" [rust#74400](https://github.com/rust-lang/rust/issues/74400)
- Discussed last week
- Regressed on [rust#73643](https://github.com/rust-lang/rust/pull/73643) which is a rollup, likely to be [rust#72493](https://github.com/rust-lang/rust/pull/72493)
## Performance logs
This week saw an upgrade to LLVM 11, which resulted in large speedups to
optimized builds. This offsets the slowdown we observed as part of the [upgrade
to LLVM 10][llvm-10-results]. Many thanks to rust-lang and LLVM contributor
[@nikic](https://github.com/nikic) for their work to measure [LLVM
performance][llvm-fast]. That upgrade did cause slight regressions to check and
debug builds, but on the whole it is a significant win for compile times.
Triage done by @ecstaticmorse.
Revision range: [67e7b9b8cf776222825dbbd4cb1e39b7765ef27c..03017003c77d782cf7ed841a05d7c628a9b93f25][range]
[llvm-10-results]: https://perf.rust-lang.org/compare.html?start=0aa6751c19d3ba80df5b0b02c00bf44e13c97e80&end=82911b3bba76e73afe2881b732fe6b0edb35d5d3&stat=instructions:u
[llvm-fast]: https://nikic.github.io/2020/05/10/Make-LLVM-fast-again.html
[range]: https://perf.rust-lang.org/?start=67e7b9b8cf776222825dbbd4cb1e39b7765ef27c&end=03017003c77d782cf7ed841a05d7c628a9b93f25&absolute=false&stat=instructions%3Au
1 Regression, 4 Improvements, 0 of them in rollups.
#### Regressions
[#75555](https://github.com/rust-lang/rust/pull/75555) Cargo update (almost) all the things!
- [A very small regression](https://perf.rust-lang.org/compare.html?start=30f0a07684f6c1f5df62d69e9519d82e13d6bf2d&end=1656582822a80139d725e56f00c564f4f58f2883&stat=instructions:u)
#### Improvements
[#75145](https://github.com/rust-lang/rust/pull/75145) Reference lang items during AST lowering
- [An improvement of ~3% on `await-call-tree`](https://perf.rust-lang.org/compare.html?start=33c96b4d9782cf6364e47cb2c904e66b06c22bb4&end=792c645ca7d11a8d254df307d019c5bf01445c37&stat=instructions:u)
- Coupled with small improvements across the board
[#75590](https://github.com/rust-lang/rust/pull/75590) Add a packed/tagged pointer abstraction and utilize it for ParamEnv
- [A small improvement on `keccak`/`inflate`](https://perf.rust-lang.org/compare.html?start=9900178cba95369cd5822c8ce579edcc89ffeb76&end=32c654a9795b0d88541e56ba9da4150e34f1d5f9&stat=instructions:u)
[#73526](https://github.com/rust-lang/rust/pull/73526) Upgrade to LLVM 11 (rc2)
- [An improvement on optimized builds](https://perf.rust-lang.org/compare.html?start=e482c86b9de32c6392cb83aa97d72e22425163f9&end=7ce71c362be9a89e7897ac066aba6e3e6f747800&stat=instructions:u)
- Tempered by a small regression on debug and check builds.
[#75813](https://github.com/rust-lang/rust/pull/75813) Lazy decoding of DefPathTable from crate metadata (non-incremental case)
- [A major improvement on small crates, especially on check builds](https://perf.rust-lang.org/compare.html?start=7ce71c362be9a89e7897ac066aba6e3e6f747800&end=d5abc8d3b2e14c8793182b427520497a90b6de83&stat=instructions:u)
#### Nags requiring follow up
None
## Nominated Issues
[T-compiler](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AI-nominated+label%3AT-compiler)
- "Unsizing coercion does not normalize associated types in structs." [rust#75899](https://github.com/rust-lang/rust/issues/75899)
- Opened and nominated by @**eddyb**
- "Add aarch64-pc-windows-msvc to CI" [rust#75914](https://github.com/rust-lang/rust/pull/75914)
- PR by @**arlosi**, reviewed by @**Ryan Levick**
- This one seems more a T-infra nomination
- @**Pietro Albini** may have wanted to notify the compiler team about this
- The infrastructure team approved allocating a dedicated builder for this!
[libs-impl](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AI-nominated+label%3Alibs-impl)
- No nominated issues for `libs-impl` this time.