|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "Rust's 2017 roadmap" |
| 4 | +author: Aaron Turon |
| 5 | +description: "What the Rust community hopes to get done in 2017" |
| 6 | +--- |
| 7 | + |
| 8 | +Starting with 2017, Rust is following an [open roadmap process] for setting our |
| 9 | +aims for the year. The process is coordinated with [the survey] and |
| 10 | +[production user outreach], to make sure our goals are aligned with the needs of |
| 11 | +Rust's users. It culminates in a [community-wide discussion] and ultimately |
| 12 | +[an RFC] laying out a vision. |
| 13 | + |
| 14 | +[open roadmap process]: https://github.com/rust-lang/rfcs/pull/1728 |
| 15 | +[the survey]: https://blog.rust-lang.org/2016/06/30/State-of-Rust-Survey-2016.html |
| 16 | +[production user outreach]: https://internals.rust-lang.org/t/2016-rust-commercial-user-survey-results/4317 |
| 17 | +[community-wide discussion]: https://internals.rust-lang.org/t/setting-our-vision-for-the-2017-cycle/3958?u=aturon |
| 18 | +[an RFC]: https://github.com/rust-lang/rfcs/pull/1774 |
| 19 | + |
| 20 | +**This year, the overarching theme is *productivity*, especially for early-stage |
| 21 | +Rust users**. From tooling to libraries to documentation to the core language, |
| 22 | +we want to make it easier to get things done with Rust. |
| 23 | + |
| 24 | +A focus on productivity might seem at odds with some of Rust's other |
| 25 | +goals. After all, Rust has focused on reliability and performance, and it's easy |
| 26 | +to imagine that achieving those aims forces compromises elsewhere—like the |
| 27 | +learning curve, or developer productivity. Is "fighting with the borrow checker" |
| 28 | +an inherent rite of passage for budding Rustaceans? Does removing papercuts and |
| 29 | +small complexities entail glossing over safety holes or performance cliffs? |
| 30 | + |
| 31 | +Our approach with Rust has always been to bend the curve around tradeoffs, as |
| 32 | +embodied in the various pillars we've talked about on this blog: |
| 33 | + |
| 34 | +- [Memory safety without garbage collection](http://blog.rust-lang.org/2015/04/10/Fearless-Concurrency.html) |
| 35 | +- [Concurrency without data races](http://blog.rust-lang.org/2015/04/10/Fearless-Concurrency.html) |
| 36 | +- [Abstraction without overhead](http://blog.rust-lang.org/2015/05/11/traits.html) |
| 37 | +- [Stability without stagnation](http://blog.rust-lang.org/2014/10/30/Stability.html) |
| 38 | + |
| 39 | +In the core language we've sometimes been able to leverage things like Rust's |
| 40 | +ownership model to make features easier to use. For example, [closures in Rust], |
| 41 | +unlike those in C++, do not require explicit "capture clauses"; Rust's ownership |
| 42 | +tracking means that we can automatically infer whether to move or borrow data |
| 43 | +into the closure, without sacrificing reliability or performance. We've also |
| 44 | +been working to make the language easier to learn by improving the |
| 45 | +[compiler's error messages]. And [Cargo] is an example of early focus on |
| 46 | +productivity that has only enhanced the power of systems programming with Rust, |
| 47 | +allowing for [OS](http://os.phil-opp.com/) |
| 48 | +[projects](https://intermezzos.github.io/) to easily build and leverage an |
| 49 | +ecosystem of shared libraries. There's so much more we can do along these lines! |
| 50 | + |
| 51 | +[Cargo]: https://blog.rust-lang.org/2016/05/05/cargo-pillars.html |
| 52 | +[closures in Rust]: http://huonw.github.io/blog/2015/05/finding-closure-in-rust/ |
| 53 | +[compiler's error messages]: https://blog.rust-lang.org/2016/08/10/Shape-of-errors-to-come.html |
| 54 | + |
| 55 | +In short, **productivity should be a core value of Rust**, and we should work |
| 56 | +creatively to improve it while retaining Rust's other core values. By the end of |
| 57 | +2017, we want to have earned the slogan: |
| 58 | + |
| 59 | +- Rust: fast, reliable, productive—pick three. |
| 60 | + |
| 61 | +## The roadmap |
| 62 | + |
| 63 | +With that framing in mind, here's Rust's vision for 2017 in a nutshell. Each |
| 64 | +statement links to a corresponding tracker with more details: |
| 65 | + |
| 66 | +* [**Rust should have a lower learning curve**](https://github.com/rust-lang/rust-roadmap/issues/3). Plans |
| 67 | + include a [new book](https://github.com/aturon/rust-roadmap/issues/7), |
| 68 | + collecting examples and patterns, improving errors, |
| 69 | + [improving the core language](https://github.com/aturon/rust-roadmap/issues/17), |
| 70 | + and [building IDEs](https://github.com/rust-lang/rust-roadmap/issues/2). |
| 71 | + |
| 72 | +* [**Rust should have a pleasant edit-compile-debug cycle**](https://github.com/rust-lang/rust-roadmap/issues/1). Plans |
| 73 | + include |
| 74 | + [incremental compilation](https://blog.rust-lang.org/2016/09/08/incremental.html) and |
| 75 | + a [trait system overhaul](https://github.com/aturon/rust-roadmap/issues/8). |
| 76 | + |
| 77 | +* [**Rust should provide a solid, but basic IDE experience**](https://github.com/rust-lang/rust-roadmap/issues/2). Plans |
| 78 | + are focused on the |
| 79 | + [Rust language service](https://github.com/aturon/rust-roadmap/issues/6). |
| 80 | + |
| 81 | +* [**Rust should provide easy access to high quality crates**](https://github.com/rust-lang/rust-roadmap/issues/9). Plans |
| 82 | + include |
| 83 | + [crate categories](https://www.reddit.com/r/rust/comments/5r72aj/cratesio_has_categories/), |
| 84 | + [crate ranking](https://github.com/rust-lang/rfcs/pull/1824), open-ended |
| 85 | + testing and benchmarking frameworks, new API and documentation guidelines, and |
| 86 | + [guidelines for unsafe code](https://github.com/rust-lang/rfcs/pull/1643). |
| 87 | + |
| 88 | +* [**Rust should be well-equipped for writing robust, high-scale servers**](https://github.com/rust-lang/rust-roadmap/issues/10). Plans |
| 89 | + mostly focus on the [Tokio project](http://tokio.rs/) for asynchronous I/O and |
| 90 | + potentially |
| 91 | + [async/await notation](https://github.com/rust-lang/rfcs/pull/1823). |
| 92 | + |
| 93 | +* [**Rust should have 1.0-level crates for essential tasks**](https://github.com/rust-lang/rust-roadmap/issues/11). Plans |
| 94 | + are under way to focus the libs team and the community on a number of |
| 95 | + important existing crates, to help polish them to 1.0 quality by the end of |
| 96 | + the year. |
| 97 | + |
| 98 | +* [**Rust should integrate easily into large build systems**](https://github.com/rust-lang/rust-roadmap/issues/12). Plans |
| 99 | + include working with large companies incorporating Rust to understand how best |
| 100 | + to equip Cargo to smooth the process. |
| 101 | + |
| 102 | +* [**Rust's community should provide mentoring at all levels**](https://github.com/rust-lang/rust-roadmap/issues/13). Plans |
| 103 | + include the |
| 104 | + [RustBridge project](https://github.com/rust-community/rustbridge/) and new |
| 105 | + [team shepherds](https://internals.rust-lang.org/t/language-team-shepherds/4595). |
| 106 | + |
| 107 | +In addition to these primary goals, we have highlighted two areas we'd like to explore, but where the end point is less clear: |
| 108 | + |
| 109 | +* [Integration with other languages, running the gamut from C to JavaScript](https://github.com/rust-lang/rust-roadmap/issues/14). |
| 110 | +* [Usage in resource-constrained environments](https://github.com/rust-lang/rust-roadmap/issues/15). |
| 111 | + |
| 112 | +The various Rust subteams are actively working on projects tied to these |
| 113 | +goals. You can track progress or jump in by watching and commenting on the |
| 114 | +[roadmap tracker](https://github.com/rust-lang/rust-roadmap). And a fully |
| 115 | +detailed rationale for the roadmap is in |
| 116 | +[the RFC](https://github.com/rust-lang/rfcs/pull/1774). |
| 117 | + |
| 118 | +As the year progresses, expect to see many more blog posts announcing |
| 119 | +roadmap-related initiatives and milestones. Around the end of the year, we'll |
| 120 | +publish a **retrospective** aggregating the progress of the year and providing a |
| 121 | +guide to the current state of Rust. |
| 122 | + |
| 123 | +In the meantime—please |
| 124 | +[get involved](https://github.com/rust-lang/rust-roadmap)! We have ambitious |
| 125 | +goals for the year, and we need all the help we can get. |
0 commit comments