2019-11-14
Announcements
-
Request for assistance: “Rustc panics (NoSolution): could not prove Binder(projection soup)” #65581
-
Request for assistance: “Rust 1.38 regressions weren’t fully triaged” #65577
-
Request for assistance: “Miscompilation with target-cpu=znver1 (AMD Ryzen 1000/2000 series) on Windows + LLVM 9.” #63959
-
@cjgillot replaced a lot of TypeFoldable impls with a derive #66384
-
The Infra team has finished evaluating GitHub Actions and we’re switching!
- This will have a signficant, positive impact on CI build time.
Backport nominations
-
“Fix two OOM issues related to ConstProp” #66394
- Approved for beta backport
-
“Do not ICE on trait aliases with missing obligations” #66392
- Approved for beta backport
-
“Do not ICE in if without else in async fn” #66391
- Approved for beta backport
-
“Fix ICE when trying to suggest Type<> instead of Type()” #66390
- Approved for beta backport
-
“Do not ICE on recovery from unmet associated type bound obligation” #66388
- Approved for beta backport
-
“find_deprecation: deprecation attr may be ill-formed meta.” #66381
- Approved for beta backport
-
“parser: don’t use unreachable!() in fn unexpected.” #66361
- Approved for beta backport
-
“Undo an assert causing an ICE until we fix the underlying problem” #66250
- Approved for beta backport
-
“Do not ICE with a precision flag in formatting str and no format arguments” #66093
- Approved for stable & beta backport
Working group sync
wg-polonius
-
Made a lot of progress on the completeness goals with move/initialization errors and subset errors both getting close to completion.
-
Fixed the last failure in the rustc test suite.
- There are still the same 2 OOMs as last time, we haven’t had much time to look at those yet.
-
Made diagnostics output match NLL in a lot more cases.
-
Did some cleanup in our terminology by picking better names for our atoms hopefully making it clearer in the process, and more work is planned here.
- “origin” instead of “region”
- “path” instead of “MovePath”
-
There is a polonius book now! It’s sparse at the moment but more documentation work is in-flight and planned.
-
The exploration and prototype on the rules offering more flow-sensitive precision for the analysis has also progressed a lot.
-
There’s also been some refactoring, and quite a bit of work on performance. Since the latter can step on the other work and vice-versa, we decided to focus on completeness first, and then after that has been achieved, re-adapt and land the optimization work.
-
@nikomatsakis did a presentation on Polonius at RustBelt Rust. Slides
-
@albins has finished their master’s thesis and is currently rewriting most of the draft.
-
We hope to have a “polonius work week” at the end of November to push the in-progress work over the finish line together.
wg-self-profile
-
We’ve nearly completed our long standing MVP goal!
- [@simulacrum] has done some nice work to polish the integration with perf.rlo
- We’ve added tracking for all the events we’re aware of that should be traced with the exception of trait selection.
- We could really use some input as to what would be helpful to track!
-
@mw has been working on some changes to the binary format we record events in.
- The new format is more compact so results in a smaller trace file and hopefully less runtime overhead.
- The new format is also more amenable to recording query keys, which is a highly requested feature.
-
@wesleywiser has added some crate level docs to make getting into the code easier.
-
@wesleywiser also added code to record process id, start time, and arguments to the trace file which we’ve started using.
-
@andjo403 has been a roll with a lot of great PRs!
- We now have a dedicated tool for generating flamegraphs directly so you don’t have to use the Perl scripts anymore.
- Some internal refactoring that makes adding new tools easier.
- Lots of work on the Chromium dev tools exporter:
- New option to collapse disjoint threads so it’s a little more manageable
- New option to filter out small events under a configurable threshold (necessary for very large compilations)
- :tada: :tada: You can now have multiple crate compilations in the same export file. This is similar to what cargo build -Z timings can do but much more detailed.
wg-rls-2.0
-
Work is procedding on splitting core of rust-analyzer into crates.
-
Find usages is implemented.
-
Macro expansion now can map source ranges to expanded ranges, so goto def correctly goes “inside” macro call.
-
More chalk an type inference work, specifically, support for closures.
-
There’s ongoing discussion about the general planning about rustc, rls, and rust-analyzer.