What to expect from Rust in 2017
New Year's Resolution concept image via Shutterstock
Rust had its one year anniversary in May this year but even though they celebrated a handful of achievements such as 11,894 commits by 702 contributors added to the core repository, 88 RFCs merged, 18 compiler targets introduced and nine releases shipped, they are ready to put the suggestions they received in the State of Rust survey into practice.
One of the goals of the State of Rust 2016 survey was to understand what’s getting in the way of people using Rust. According to the feedback they received from over 1,900 people, the top challenges are the learning curve, the immaturity of the language and libraries, and the immaturity of the tools.
It appears that 1 in 4 people commented on the learning curve when talking about Rust’s challenges — to make things easier for potential users, there are a few initiatives in the making, including a new Rust book, an O’Reilly book, improvements to Rust error messages, as well as improvements to the borrow checker to give fewer false warnings. As far as the immaturity of the language and libraries is concerned,” the consensus formed around the need to move the ecosystem onto the stable language and away from requiring the nightly builds of the compiler.”
Finally, one of the reasons why people are not willing to give Rust a chance is the immaturity of the tools, with an emphasis on the lack of strong IDE support. According to the team, there are some early experiments in this department, namely Racer and rustw, as well as a number of IDE plugins. They have also been investing in other tooling muscles, including a new installer with cross-compilation support.
Rust’s New Year’s resolutions
Let’s take a look at what this programming language wishes to accomplish in 2017:
- Rust should have a lower learning curve
- Rust’s compiler should be significantly faster
- Rust should have basic IDE support
- Rust’s core ecosystem should be maturing
- Rust should have 1.0-level libraries for concurrency and parallelism
- Rust should be well-equipped for writing servers
- Rust should provide a more seamless FFI story
- Rust’s community should provide mentoring at all levels
Aaron Turon, Research Engineering Manager at Mozilla, explained in a blog post that the above-mentioned vision statements are “deliberately a bit vague because their hope is to have a robust, community-wide discussion oriented mainly around the problems, ultimately leading to a more crisp set of vision statements with rationales and goals.”
The learning curve could be solved with things like improved docs/training materials; improved compiler errors; language improvements, while the edit-compile-test cycle (which is rather slow) can be sped up by pushing incremental compilation up through the earliest stages of the compiler —depending on how far they want to take IDE support. Speaking of IDE support, 1 in 4 survey respondents mentioned requiring IDE support before using Rust seriously. Turon acknowledged that “compiler integration227 has yet to get off the ground, and there’s a lot of room to do more.”
Furthermore, the immaturity of the core ecosystem can be gradually solved by focusing on the following: discoverability/curation; 1.0 releases of “core” crates; surveying “batteries included” stdlibs for gaps in Rust’s ecosystem; tooling and guidelines to encourage crate quality. The immaturity of libraries is another problem — Turon admitted that “getting their concurrency/asynchrony/parallelism story in 1.0 shape seems like a particularly important segment of the ecosystem to focus on.”
Two other resolutions are to make sure Rust is well-equipped for writing servers and to provide a more seamless FFI story. Plus, Rust could “do a lot more to help grow people into roles in the project, including pulling together important work items at all level of expertise to direct people to, providing mentoring, and having a clearer on-ramp to the various official Rust teams.”
The list of goals for 2017 does not stop here, though. Rust can up its game by adding compiler/platform targets, making Cargo work well in more contexts, producing more API bindings for core platform libraries and improving the story for programming embedded systems/OSes. A more robust project infrastructure, more systematic outreach/evangelism and a revamped web presence could also help Rust increase the number of users.