Skip to content

Commit 00ff49c

Browse files
authored
Merge pull request #147 from aturon/roadmap-2017
2017 roadmap
2 parents 9dc1432 + 97624e2 commit 00ff49c

File tree

1 file changed

+125
-0
lines changed

1 file changed

+125
-0
lines changed

_posts/2017-02-06-roadmap.md

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
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

Comments
 (0)