Hello everyone,
It is my pleasure to announce that we have now entered the final countdown for Rust 2018. We’ve just issued a new beta that is chock full of updates and we would dearly love people to spend some time testing it before we announce the final release (which takes place on December 6).
What’s new
Compared to the Preview 2 release, this new 1.31.0 beta includes all the features we stabilized in 1.31.0 and a lot of bug fixes. It also includes a number of improvements in the area of tooling:
- Rustfmt is now 1.0
- RLS and Clippy are no longer installed via “preview” components
Help us find bugs!
We would like help looking for bugs in this new beta, particularly in two areas:
- the module system implementation
- the RLS
As before, the best thing is to perform the Rust 2015 -> Rust 2018 migration on your local crates (instructions here) and let us know how it goes (in particular if you hit any problems). If you’ve already migated, then simply executing rustup update beta is already helpful (and working from beta, of course, not nightly)!
Pending for the next release
You may recall from the Preview 2 announcement that we were evaluating two variants for the module system (“anchored paths” vs “uniform paths”). This evaluation continues in the beta, which means that the compiler accepts only code that both variants would accept. You can use #![feature(uniform_paths)] on Nightly to try out the uniform paths variant. Based on the feedback receiver thus far, the current tentative plan is to stabilize uniform paths, but not as part of the initial Rust 2018 release (i.e., not until 1.32.0 at the earliest).
(The main difference between that two variants is that uniform_paths permits you to write use foo::bar to refer to either an external crate named foo or a local module. In other words, you no longer need to write use self::foo::bar (except for cases of ambiguity, where there exists an external crate and a local module). This means that paths in use statements and paths outside of use statements work roughly the same way. Note that this is a pure extension of the current beta behavior, which always requires use self::foo for local modules, but still errors in the case of ambiguity.)