Compiler
Perhaps the most exciting thing going on right now is @huon’s PR implementing the groundwork for SIMD. We’ve also decided to merge the MIR RFC.
Lang
The following RFCs were promoted to final comment period:
- RFC #1229, which specifies that when the compiler is doing constant evaluation as a form of optimization, it should not report compilation errors for overflows or other problems that are encountered (warnings are ok). Otherwise, improvements in the constant evaluator can become breaking changes.
-
RFC #1234, which
modifies the DST coercion rules to permit
PhantomData
. The discussion has primarily focused on whether we can indeed make the rules even more accepting than that; conclusion was to leave this for future work.
Full list of T-lang RFCs in FCP.
Some fine fellow (ahem) also started a scintillating discussion on the interaction of type parameter fallback with integral fallback started on internals, which would benefit from more eyeballs:
Last week, we had a number of RFCs enter FCP. Unfortunately, we did not reach final decisions on very many of them, due to Felix Klock being out for some well-earned R&R. However, we did merge a few noncontroversial items:
We also decided to close several RFCs for prioritization reasons, even if the ideas espoused had merit:
- RFC 886, allowing "must use" on functions (by @huon).
- RFC 890, custom preludes (by @aturon).
-
RFC 1216, promote
!
to a type (by @canndrew).
Libs
Starting with the current release cycle (for 1.4), we are making some changes to the stabilization process:
-
All unstable APIs now map to tracking issues. The APIs will be tagged with the issue tracking them, so when you get an error that you need a feature gate, the compiler can also tell you which issue to subscribe to for stabilization. We’ll use these issues as a centralized place for discussing questions/concerns about APIs before they are stabilized.
-
Stabilization will be tied to our 6 week release cycles: at the beginning of the cycle, the team will announce a number of unstable features undergoing “final comment period” (heading either toward stabilization or deprecation). The comment period will last for the entire release cycle. One week before the release is cut, the team will make final decisions and land a PR accordingly.
This new process such give much more visibility into the feature pipeline and make the stabilization process easier to follow.
With that in mind, here are the features undergoing FCP for this cycle:
-
FCP Issue #27277:
Stabilisation of
result_expect
- FCP Issue #27736: Tracking issue for f{32,64}::from_str_radix
- FCP Issue #27764: Tracking issue for CStr => str conversions
- FCP Issue #27765: Tracking issue for collection append methods
- FCP Issue #27766: Tracking issue for collection split_off methods
- FCP Issue #27767: Tracking issue for VecDeque::retain
- FCP Issue #27768: Tracking issue for Box::{into_raw, from_raw}
- FCP Issue #27769: Tracking issue for CString::{from_ptr, into_ptr}
- FCP Issue #27771: Tracking issue for some Duration-taking functions
- FCP Issue #27773: Tracking issue for the socket timeout functions
- FCP Issue #27775: Tracking issue for converting slice iterators to slices
- FCP Issue #27776: Tracking issue for viewing Result/Option as slices
- FCP Issue #27785: Tracking issue for Box/String conversions
- FCP Issue #27792: Tracking issue for str::split_at
- FCP Issue #27795: Tracking issue for creating BTree{Map,Set} with a B
- FCP Issue #27797: Tracking issue for consumption into OS handles
In addition, this week we made the following decisions:
-
FCP PR #1195:
ordered query API
- Close, with the hope that we can find a way to achieve these goals with a smaller API surface
-
FCP PR #1192:
RFC for inclusive ranges with …
- Merge, with the extra field for
Iterator
being kept unstable for the time being.
- Merge, with the extra field for
Finally, the following RFC is entering FCP this week:
-
FCP PR #1198:
pretty print
Debug
of tuples, tuple structs and enum variants in a single line
Tools
These past two weeks saw a number of exciting events!
- Rust 1.2 was released, thanks to @brson for doing the release process!
- The main site is now hosted over https thanks to @edunham’s move from GitHub pages to Cloudfront!
-
make check
is now running for 64-bit MSVC. This means that all changes to the compiler must pass all tests on MSVC to land! Note that this is enabled by turning on unwinding for 64-bit MSVC which is in turn enabled by @vadimcn’s awesome work on unwinding. - The
cargo install
RFC has been merged. - @brson has released a tool for testing whether publishing your crate would cause a regression on reverse dependencies.
- multirust has gained a
which
command to locate where binaries are, thanks to @shaleh!