--- tags: weekly, rustc --- # T-compiler Meeting Agenda 2020-06-04 [Tracking Issue](https://github.com/rust-lang/rust/issues/54818) ## Announcements - Today: 1.44 will be released :tada: - Tomorrow (Friday): We have our [planning meeting](https://forge.rust-lang.org/compiler/steering-meeting.html); you should [submit proposals!](https://forge.rust-lang.org/compiler/steering-meeting/submit.html) - Major Changes Proposals: - Seconded proposals (in FCP) - "RFC 2229 implementation plan" [#292](https://github.com/rust-lang/compiler-team/issues/292) - "create windows working group" [#293](https://github.com/rust-lang/compiler-team/issues/293) - "Remove Spans from HIR" [#294](https://github.com/rust-lang/compiler-team/issues/294) - "move leak-check to during coherence, candidate eval" [#295](https://github.com/rust-lang/compiler-team/issues/295) - "Introduce `ty_error`/`ty_error_with_message`/`ty_error_const` to construct error type or const" [#297](https://github.com/rust-lang/compiler-team/issues/297) - "`mv src/lib{std,core,alloc,test,etc} std/lib{std,core,alloc,test,etc}`" [#298](https://github.com/rust-lang/compiler-team/issues/298) - "Preserve `PlaceContext` through projections" [#300](https://github.com/rust-lang/compiler-team/issues/300) - New proposals (not seconded) - No new not seconded proposals - Old proposals (not seconded) - "Integration of the Cranelift backend with rustc" [#270](https://github.com/rust-lang/compiler-team/issues/270) - "Decentralize queries" [#277](https://github.com/rust-lang/compiler-team/issues/277) - "illumos toolchain builds" [#279](https://github.com/rust-lang/compiler-team/issues/279) - "Make `CONTRIBUTING.md` into a series of tutorials" [#296](https://github.com/rust-lang/compiler-team/issues/296) ## Beta-nominations No beta nominations this time for [`T-compiler`](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=label%3Abeta-nominated+label%3AT-compiler), [`libs-impl`](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=label%3Abeta-nominated+label%3Alibs-impl) and [`T-rustdoc`](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=label%3Abeta-nominated+label%3AT-rustdoc). ## Stable-nominations No stable nominations this time for [`T-compiler`](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=label%3Astable-nominated+label%3AT-compiler), [`libs-impl`](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=label%3Astable-nominated+label%3Alibs-impl) and [`T-rustdoc`](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=label%3Astable-nominated+label%3AT-rustdoc). ## PR's S-waiting-on-team [T-compiler S-waiting-on-team](https://github.com/rust-lang/rust/pulls?utf8=%E2%9C%93&q=is%3Aopen+label%3AS-waiting-on-team+label%3AT-compiler) - "Print environment variables accessed by rustc as special comments into depinfo files" [#71858](https://github.com/rust-lang/rust/pull/71858) - In FCP, disposition-merge - Assigned to @**simulacrum** - "Don't emit structure padding members if no padding is required." [#72541](https://github.com/rust-lang/rust/pull/72541) - This is also nominated for T-compiler - This needs discussion from some people with LLVM knowledge - It sounds like eddyb is saying supporting SPIR-V isn't viable so we shouldn't take this patch regardless. - Assigned to @**eddyb** - "Implement `--extern-location`" [#72603](https://github.com/rust-lang/rust/pull/72603) - This is also nominated for T-compiler and T-cargo - What process should we follow with this? MCP/RFC? - Assigned to @**Matthew Jasper** No [libs-impl S-waiting-on-team](https://github.com/rust-lang/rust/pulls?utf8=%E2%9C%93&q=is%3Aopen+label%3AS-waiting-on-team+label%3Alibs-impl). ## Issues of Note ### Short Summary - [4 P-critical issues](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+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+is%3Aissue+label%3AT-compiler+label%3AP-critical+no%3Aassignee) - [37 P-high issues](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+label%3AT-compiler+label%3AP-high+) - [16 of those are unassigned](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+label%3AT-compiler+label%3AP-high+no%3Aassignee) - [3 P-medium regression-from-stable-to-beta](https://github.com/rust-lang/rust/labels/regression-from-stable-to-beta) - All of them are unassigned. - [2 P-critical, 4 P-medium, 1 P-low regression-from-stable-to-nightly](https://github.com/rust-lang/rust/labels/regression-from-stable-to-nightly) - Only the P-criticals are assigned. - [71 regression-from-stable-to-stable](https://github.com/rust-lang/rust/labels/regression-from-stable-to-stable) - [17 of those are not prioritized](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3Aregression-from-stable-to-stable+-label%3AP-critical+-label%3AP-high+-label%3AP-medium+-label%3AP-low). There is one less `P-critical` issues and 3 less `P-high` issues in comparison with last week. ### P-critical - "Unsoundness due to variance of trait objects WRT associated types" [#71550](https://github.com/rust-lang/rust/issues/71550) - This issue is assigned to @**spastorino** and has an [PR open](https://github.com/rust-lang/rust/pull/71896). - Crater run from the fix suggested 16 non-spurious regressions. - Niko suspects we should land the PR, at the start of a release cycle. - We are starting a new cycle, so should we merge?. - "Trait object with non-static lifetime is accepted where static lifetime is expected and required" [#72315](https://github.com/rust-lang/rust/issues/72315) - This issue is related to the previous one, and fixed by the same [PR](https://github.com/rust-lang/rust/pull/71896). - "LLVM error: "Instruction does not dominate all uses!" on Windows" [#72470](https://github.com/rust-lang/rust/issues/72470) - Assigned to @**pnkfelix** - It is also a regression - supposedly injected by [PR #71840](https://github.com/rust-lang/rust/pull/71840) - Rejects valid code. - It's windows only. - This seems to indicate incorrect MIR being generated. - We've decided to revert. - "ICE when structurally matching a struct containing an associated type on latest Nightly." [#72896](https://github.com/rust-lang/rust/issues/72896) - Detected one day after the nightly release - Breaks valid code - Assigned to @**lcnr** ### Unassigned P-high regressions There are no unassigned P-high regressions. ## Performance logs [Triage done by njn](https://github.com/rust-lang/rustc-perf/tree/master/triage#triage-logs) Regressions - Nothing of note! Improvements - [perf: Revert accidental inclusion of a part of #69218](https://github.com/rust-lang/rust/pull/71996) ([instructions](https://perf.rust-lang.org/compare.html?start=2873165725c15e96dae521a412065c144d9c7a25&end=664fcd3f046e2a6824602da0fad81e3e2bb0d409&stat=instructions:u)) - [Pass more `Copy` types by value.](https://github.com/rust-lang/rust/pull/72494) ([instructions](https://perf.rust-lang.org/compare.html?start=664fcd3f046e2a6824602da0fad81e3e2bb0d409&end=45127211566c53bac386b66909a830649182ab7a&stat=instructions:u)): This fixes part of the regression from [#72055](https://github.com/rust-lang/rust/pull/72055) from last week. - [Rollup of 9 pull requests](https://github.com/rust-lang/rust/pull/72778) ([instructions](https://perf.rust-lang.org/compare.html?start=91fb72a8a9f53de2bcc5638c1358fcb552dba8ce&end=74e80468347471779be6060d8d7d6d04e98e467f&stat=instructions:u)) ## Nominated Issues [T-compiler I-nominated](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AI-nominated+label%3AT-compiler) - "tag/niche terminology cleanup" [#72497](https://github.com/rust-lang/rust/pull/72497) - Nominated to determine if this is the terminology we want to use. - Assigned to @**eddyb** - "Don't emit structure padding members if no padding is required." [#72541](https://github.com/rust-lang/rust/pull/72541) - Nominated to determine if this is a patch we want to take. - @**eddyb** writes: "I don't think supporting SPIR-V is a plausible goal for the Rust LLVM backend, given all the limitations I've heard about. It would require a lot of transformation of anything involving memory IIRC." - Assigned to @**eddyb** - "Implement `--extern-location`" [#72603](https://github.com/rust-lang/rust/pull/72603) - Nominated: - to determine what process should we follow with this. MCP/RFC? - for visbility on the feature and to elicit review feedback. - Assigned to @**Matthew Jasper** - "Cycle error through variance computation when using `-> _`." [#72730](https://github.com/rust-lang/rust/issues/72730) - (This is an issue) - @**eddyb** nominated "for discussion (on the topic of variance of "function item" types)." [libs-impl I-nominated](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AI-nominated+label%3Alibs-impl) - "`nth_back()` for `Zip` returns wrong values" [#68536](https://github.com/rust-lang/rust/issues/68536) - Nominated to determine how can we fix this problem and to raise awareness of it. ## WG checkins @*T-compiler/WG-meta* checkin by @**nikomatsakis** and @**spastorino**: >- Merged the MCP RFC >- Proposed meeting and elaborated some on the idea of "areas" of the compiler >- Renamed ICE Breaker groups to notify groups >- Working on creating a Windows notification group -- will likely pull the trigger soon @*WG-mir-opt* checkin by @**oli**: >## Major things >* "dumb" NRVO optimization #72205 >* Const prop now works on user variables #71518 >* Thread local storage accesses are now a dedicated runtime operation (mir rvalue) #71192 >* Unused reads of discriminants are now removed, just like unused normal reads #70595 >* SimplifyLocals optimization is now run repeatedly to a fixed point #70755 >* All mir-opt tests are now `--bless`able #70721 >* Fearlessly optimize away constants #70820 >* mir-opt-level 0 doesn't run optional optimizations anymore #70073 >* MIR drop generation at MIR building time reworked into a structured scheme instead of ad-hoc generation #71840 >* `Operand::Copy` of `&mut T` is unsound #72093 #72820 > * We now have a dedicated MIR validation pass that checks whether the result of your optimizations upholds a bunch of invariants. Please encode all invariants you can think of in this pass in addition to documentation. > >## Interesting snippets >* MIR can have multiple `return` terminators and everything is fine #72563 >* Make mir dumps less noisy #71200 >* More aggressively const prop aggregates, mutable variables and field accesses #72135 #71953 >* The `return` terminator is now treated as a read from `_0` (the return place) #72048 >* SimplifyArmIdentity can now run on mir-opt-level 1 #69756