Skip to content

Commit 941cb2a

Browse files
committed
This year in embedded Rust
1 parent 0f34b53 commit 941cb2a

File tree

1 file changed

+131
-0
lines changed

1 file changed

+131
-0
lines changed
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
+++
2+
title = "This year in embedded Rust"
3+
date = 2018-11-14
4+
draft = false
5+
in_search_index = true
6+
template = "page.html"
7+
+++
8+
9+
This year the [embedded WG] set out to build the solid foundation that the
10+
embedded Rust ecosystem requires to thrive. As we approach the date of the 2018
11+
edition release we reflect on our progress and share our achievements with you
12+
in this post.
13+
14+
[embedded WG]: https://github.com/rust-embedded/wg
15+
16+
## Embedded Rust on stable
17+
18+
Stability -- AKA "my crate should not break when moving to a newer toolchain" --
19+
was the single most requested feature by the embedded community during the 2018
20+
roadmap planning phase.
21+
22+
Embedded development has been tied to the nightly
23+
channel since its very beginning, and the people that have been doing embedded
24+
development for a while have endured many breaking changes. Thankfully, those
25+
days are over: Rust 1.30 marks the first stable release where you can build
26+
fully working embedded programs without relying on unstable features.
27+
28+
Furthermore, we now have some [unit][] [tests] that check embedded code in the
29+
compiler test suite so unintentional breakage will be caught before it makes its
30+
way into the nightly channel.
31+
32+
[unit]: https://github.com/rust-lang/rust/pull/53996
33+
[tests]: https://github.com/rust-lang/rust/pull/53190
34+
35+
## A smooth starting point
36+
37+
"How do I get started with embedded Rust?" has been a common question on IRC for
38+
a long time. It has not been an easy question to answer, though: maintaining
39+
documentation that relies on unstable features for a long period of time has
40+
been an uphill battle so newcomers have often run into outdated docs.
41+
42+
But now that stable embedded Rust is here we have put together an authoritative
43+
resource for getting started with embedded Rust: [the embedded Rust book]. We
44+
have put a lot of effort in making the first experience as frictionless as
45+
possible with the help of [templates] and [tooling].
46+
47+
[the embedded Rust book]: https://docs.rust-embedded.org/book
48+
[templates]: https://github.com/rust-embedded/cortex-m-quickstart
49+
[tooling]: https://github.com/rust-embedded/cargo-binutils
50+
51+
The embedded Rust book is not just a getting started guide; it's also meant
52+
to be the document that teaches you how to effectively use the language to write
53+
correct embedded software. We are currently amassing all our hard earned
54+
experience into patterns and tips that we are adding to this book.
55+
56+
## Resources for everyone
57+
58+
The embedded Rust book is aimed at people that have some experience with
59+
embedded development, but we recognize that Rust has great potential for
60+
becoming people's first choice for getting their feet wet with embedded
61+
development so we have updated and will continue to work on resources, like [the
62+
Discovery book], that are aimed at that demographic.
63+
64+
[the Discovery book]: https://docs.rust-embedded.org/discovery
65+
66+
We also recognize that the target audience for embedded Rust has different
67+
levels of expertise with embedded systems and a varied set of interests
68+
so we are also building advances resources like [the embedonomicon]
69+
and collecting more targeted resources, like crates, in the
70+
[awesome-embedded-rust] list. You can find these and other of our resources in
71+
our [docs webpage][docs].
72+
73+
[the embedonomicon]: https://docs.rust-embedded.org/embedonomicon
74+
[awesome-embedded-rust]: https://github.com/rust-embedded/awesome-embedded-rust
75+
[docs]: https://docs.rust-embedded.org
76+
77+
## An organized community effort
78+
79+
All this has been accomplished with the hard work of many volunteers, both [WG
80+
members] and other community members. The WG members, in particular, are
81+
committed to maintaining the [core crates] and [documentation] that the
82+
ecosystem relies on. All these resources have been taken under the umbrella of
83+
the [rust-embedded] organization.
84+
85+
[WG members]: https://github.com/rust-embedded/wg#organization
86+
[rust-embedded]: https://github.com/rust-embedded
87+
[core crates]: https://github.com/rust-embedded/wg#projects-1
88+
[documentation]: https://github.com/rust-embedded/wg#projects-8
89+
90+
## WG teams
91+
92+
The embedded space is huge: there are several architectures used in
93+
this space, many application areas, and embedded developers work with different
94+
sets of constraints: real-time constraints, memory constraints, energy / power
95+
constraints, etc.
96+
97+
For this reason we have been creating and growing specialized teams within the
98+
WG by adding members with different areas of expertise. This ensures that we
99+
have different perspectives when making API design decisions in core crates and
100+
when communicating the needs of the embedded community to the other Rust teams.
101+
Having specialized teams also means that the crates developed by the org can be
102+
assigned to the people with the right technical background.
103+
104+
## On the upcoming 2018 edition
105+
106+
In this last sprint towards the 2018 edition we are focusing our efforts in
107+
our [documentation][docs]!
108+
109+
You can help us by proofreading our docs, reporting errors, giving feedback on
110+
the existing content, requesting new topics and writing about topics that have
111+
not yet been covered. Every little bit of help is greatly appreciated!
112+
113+
One important note: our documentation makes use of the 2018 edition which
114+
requires you to use the beta channel until 1.31 is released in early December.
115+
We suggest that you use the beta channel until then to get the best experience.
116+
117+
## Beyond 2018
118+
119+
Our work doesn't stop the day Rust 1.31 comes out; the 2018 edition is just the
120+
starting line of embedded Rust. As we continue to learn how to effectively use
121+
Rust for embedded development we'll continue to refine and expand our
122+
documentation as well as the core crates we maintain and develop.
123+
124+
Also, at this point in time ARM Cortex-M is our most mature target architecture
125+
and the majority of crates on crates.io target this architecture, but we have
126+
laid the groundwork for supporting other targets like bare metal ARM Cortex-A,
127+
ARM Cortex-R, MSP430 and RISCV. We'll continue to work on getting these
128+
targets on parity with the ARM Cortex-M target during the next year.
129+
130+
Here's to a 2019 with *more* embedded Rust success stories (yes, "more"; wait
131+
for the upcoming revamped rust-lang website ;-). Happy embedded hacking!

0 commit comments

Comments
 (0)