The Rust language is on track for several key new capabilities this year. A draft roadmap for the Mozilla-sponsored language would polish and stabilize all existing features, including impl Trait
, macros 2.0, SIMD, generators, custom registries in the Cargo package manager, and nonlexical lifetimes, as well as revamp modules. And tools such as the Rust Language Server (RLS), the rustfmt
code formatter, libraries, and documentation would be brought to 1.0 release status. The Rust 2018 release, aka Epoch, might also have build-system integration improvements.
Where to download Rust
Rust 2018 will likely ship in September, according Mozilla’s draft roadmap. An alpha build is available now.
You can run rustup install nightly
to get the nightly distribution, which includes the current alpha release. Developers already on the nightly channel do not need to update the compiler.
New features expected in Rust in 2018
Because the intent is to have only stable features in Rust 2018, Mozilla may deliver other new capabilities separately from Rust 2018. Such “unstable” features could include outside Aconst
generics, generic associated types, and specialization, permitting multiple impl blocks to apply to the same trait as long as one of the blocks is more specific than the other.
Mozilla’s work this year on the Rust compiler is set complete language features and make improvements to compile times and error messages. Building the rustfix
tool, to read and apply messages from rustc
and third-party lint tools, is also a goal. Rust’s library ecosystem, meanwhile, would get investments in quality, discoverability, and domain-specific content.
The draft roadmap focuses on four domains for Rust this year:
- The WebAssembly portable code format.
- Network services, which is the language’s predominant production usage domain.
- CLI (command-line interface) apps, which could benefit from Rust’s portability, ergonomics, and reliability.
- Embedded devices.
Rust’s developers are seeking feedback on the following new features:
- The
rustfix
migration experience, which features a tool to smooth migrations between editions of the language. Withrustfix
, some code can be automatically rewritten to comply with new capabilities and idioms. - Module system changes, in which the system has been overhauled for simplicity.
- In-band lifetimes, which drop an explicit lifetime parameter declaration in favor of a new lifetime name to connect lifetimes.