Subteam report: compiler 2016-05-13
Highlights
The compiler team has all gathered together at Mozilla's offices in Mountain View in the first ever "rustc development sprint". We've been hacking away on MIR support as well as incremental compilation, and progress has been quite rapid. As of this writing, the hardest part of the backend work on incremental compilation appears to be nearing completion -- restructuring the backend to create the reusable codegen units. In MIR land, a number of optimization improvements have landed, and there is even preliminary work on implementing non-zeroing drop. Finally, we've had a number of good architectural discussions.
-- nmatsakis
Dashboard
RFC phase
- PR #1414: Add Rvalue-static-promotion RFC
- PR #1566: Procedural macros
- PR #1573: Supporting code generators with source maps and multiple source directories
- PR #1589: Best practices for bug fixes in the compiler
Implementation phase
- Issue #5016: implement "dynamic drop" semantics using flags on the stack rather than zeroing
- Issue #12634: Replace various intrinsic wrappers with intrinsic reexports
- Issue #15023: Better temporary lifetimes (tracking issue for RFC 66)
- Issue #15287: Implement Pattern Guards with Bind-By-Move
- Issue #20561: Tracking issue for Consistent no-prelude attribute (RFC 501)
- Issue #27060: repr(packed) allows invalid unaligned loads
High priority issues
- Issue #29149: Lifetime bounds in Copy impls are ignored
- Issue #29859: Cyclic traits allow arbitrary traits to be synthesized
- Issue #30829: Code no longer builds because of RFC 1214
- Issue #31299: Bogus error in beta and nightly: recursive type has infinite size
- Issue #31567:
Dropand leaking&mutreferences - Issue #31964: ICE on type mismatch: Index out of bounds
- Issue #33344: Obligation caching allows for unsound coinductive matching
- Issue #33364: ICE: OutputTypeParameterMismatch in failing to resolve associated type as tuple.
Needs decision
- Issue #29769: Mir: introduce overflow operations