2019-12-12
Announcements
@pnkfelix posted an RFC about future-incompat lints RFC 2834
@eddyb landed some additional caching for trait selection which gives some nice speedups #66821
Const eval now has support for
if
/match
and a PR forloop
/while
is open.
Backport nominations
resolve: Always resolve visibilities on impl items #67236
- Approved for beta backport
resolve: Resolve visibilities on fields with non-builtin attributes #67106
- Approved for beta backport
Working group sync
wg-meta
Work has generally slowed down since the launch of the ICE breakers group.
Some planning for a new “reducer” group has begun.
wg-mir-opt
MIR does not know about static items anymore. Instead we just have a constant whose value is
&YOUR_STATIC
,&raw mut YOUR_MUT_STATIC
or&raw YOUR_EXTERN_STATIC
. This simplifies a lot of logic in the MIR and will (together with the next bullet point) allowPlaceBase
to just be aLocal
(so a u32 index for a local to be accessed). #66587@spastorino is about to finish a PR that removes promoteds from the list of things that are
Place
s in MIRmir::Body
does not contain interior mutability components anymore. It used to have a cache of some information on the MIR CFG that could get cleared and reinitialized as required. This is abstracted away in theBodyCache
type.Promoteds inside constants and statics are now actually separated from their constant’s
mir::Body
instead of having a scheme around removingStorageDead
statements #66642Cross crate inlining now preserves debug info #66789
There is a new MIR optimization eliminating basic blocks that are unreachable because they are match arms of uninhabited variants #65694
There is a new MIR optimization to work around the problem that LLVM can’t figure out trivial match arms like
Ok(x) => Ok(x)
#66282The const prop optimization now runs on all builds (even debug builds) because this gives quite some nice build time improvements #66074
We had a mir-opt room at RustFest, which was a total success and people loved it.