Skip to content

Commit 27b3086

Browse files
bors[bot]japaric
andcommitted
Merge #25
25: This year in embedded Rust r=jamesmunns a=japaric This is the blog post I mentioned during the last meeting. I'd like to publish it next Wednesday. All kind of feedback is welcomed! Let me know if there's something you'd like to see mentioned in this post. Blockers for publishing this: - [x] docs.rust-embedded.org links should be up and running. This seems good to go for now but has been a bit flaky. We should keep an eye on it. cc @rust-embedded/infrastructure - [x] book: remove empty chapters, chapter title freeze as per rust-embedded/book#52, move type state under static guarantees @jamesmunns - [x] book/getting-started: add semihosting section. @japaric - [x] book/getting-started: add registers section. @japaric / @thejpster -- see rust-embedded/book#76 - **[postponed]** book/getting-started: add ~device /~ interrupt section but this is blocked on svd2rust 0.14.0 so may not happen until after the blog post. @therealprof will work on this. - [x] book/peripherals: merge the current getting-started/registers into this chapter. @jamesmunns / @thejpster -- see rust-embedded/book#76 - [x] rename new-book. @ryankurte Additionally we might want to include these two in this post: - **[postponed]** awesome-embedded-rust: "does this compile on stable?" community effort. What: Make an issue with instructions (add version badge to each crate in the list?) and link to it from the blog post. I suggested this before. @rust-embedded/resources do you want to tackle this? - [x] wg: 2019 wishlist What: Make an issue collecting people thoughts on what should we focus on next year: ecosystem gaps that need to be filled, docs that need to be written, unstable stuff that should prioritized for stabilization, language feature requests. @rust-embedded/all thoughts? we'll probably have the "call for 2019 blog post" soon, in any case. Should we run an informal survey ourselves, or just watch over the incoming blog posts? Co-authored-by: Jorge Aparicio <[email protected]>
2 parents 0f34b53 + 788b35e commit 27b3086

File tree

1 file changed

+140
-0
lines changed

1 file changed

+140
-0
lines changed
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
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+
Finally, we'd love to hear what **you** would like to see happen in the embedded
131+
space in 2019. We are collecting a ["wishlist"] of things the embedded community
132+
would like to see get done, fixed and / or stabilized in 2019. Need some API in
133+
core to be stabilized? Would like to get some Cargo bug / papercut fixed? Let us
134+
know and we'll look into making it happen! We'll use this data to set out an
135+
embedded Rust roadmap for 2019.
136+
137+
["wishlist"]: https://github.com/rust-embedded/wg/issues/256
138+
139+
Here's to a 2019 with *more* embedded Rust success stories (yes, "more"; wait
140+
for the upcoming revamped rust-lang website ;-)). Happy embedded hacking!

0 commit comments

Comments
 (0)