What's on tap for Mozilla's Rust in 2016
Its development team is thinking big: faster and more efficient compiling, fewer missing features, and more ways for Rust to run on multiple platforms.
Rust is being positioned as a way to perform system-level programming, but with far more memory safety and behavioral protection built into the language than with C. In the words of a blog post that appeared last Friday on Rust's development blog, "You can hack without fear."
In that post, Nicholas Matsakis and Aaron Turon of the Rust team outlined several major objectives for Rust to tackle through 2016. They claimed that the goals came from discussions with "the core team, early production users, and the broader community" to find out what would be most critical for Rust to begin offering soon. (Matt Asay of InfoWorld cited the community around Rust as one of its big draws.)
Under the category of "infrastructure investments," Matsakis and Turon talk about improving compilation. Some of this is about better integration with existing IDEs, or ensuring the Rust compiler doesn't regress between revisions. This last is done with the Crater testing tool, which checks to see if commonly used "crates" (software packages, in Rust lingo) are not compiling correctly against the most recent version of the Rust compiler.
Even more intriguing, however, is incremental compilation -- a way to have Rust only recompile the parts of a codebase within a crate that have actually changed. If done right, this could push Rust towards the kinds of compilation times seen with Go, as fast compilation has long been one of that language's selling points.
The blog also noted where a few gaps in the language could be closed over, such as specialization, a feature that allows "a more complete toolkit for zero-cost abstraction." Abstraction in higher-level languages (whether C++ or Python) typically comes at some performance cost, so the claim here is that Rust will be able to provide some functions found in other languages without undue costs in performance.
In "Branching out: taking Rust to new places," the authors state, "We're shooting for push-button cross-compiles." The idea here is that building Rust binaries for other platforms should be as easy as specifying a command-line flag, meaning that a developer working on an x86 Linux box could build binaries for ARM without needing to build on ARM itself.
Another "new place" is other languages -- specifically, allowing Rust code to talk to other languages by way of a C-compatible API. The challenge there is working with language environments that have advanced garbage collection, such as the V8 engine for JavaScript. Rust's plan there is to add extensions to the Rust compiler so any code that needs integration with garbage collection can obtain it on demand.
Most of these changes are either about the environment around the language -- compilation, deployment, etc. -- and not about breaking existing functionality. Rust was notoriously unstable before its 1.0 release, so the best news about all these forward-thinking features is how they don't also bring with them a return to the days of the language as a moving target.