1
1
# Cortex-M library development now possible on beta and the path towards stable embedded Rust
2
2
3
- > 2018-05-12
3
+ > 2018-05-13
4
+
5
+ > ** TL;DR**
6
+ >
7
+ > * 1.27 = embedded (Cortex-M) * library* development on stable
8
+ > * 1.28 or 1.29 = embedded (Cortex-M) * application* development on stable
9
+ > * We are making breaking changes in the ecosystem in order to move towards development on the
10
+ > stable channel
11
+ > * If you are a crate maintainer / author, make sure you test your crates with the new versions of
12
+ > ` cortex-m ` (and similar) on the current ` beta ` release of Rust
13
+ > * If the latest version of a dependency doesn't compile on ` beta ` , file an issue and/or ping us on
14
+ > the #rust-embedded IRC channel
15
+ > * Thanks for your patience!
4
16
5
17
We are happy to announce that * library* development for the Cortex-M targets is now possible on the
6
18
beta channel! :tada :
@@ -107,7 +119,8 @@ Legend: `crate-name` - link to CHANGELOG - link to stabilization PR - ~removed u
107
119
[ ch10 ] : https://github.com/japaric/stm32f30x/blob/master/CHANGELOG.md#v070---2018-05-12
108
120
[ p10 ] : https://github.com/japaric/stm32f30x/pull/16
109
121
110
- - [ ` svd2rust ` ] [ c11 ] - [ CHANGELOG] [ ch11 ] - [ PR] [ p11 ]
122
+ - [ ` svd2rust ` ] [ c11 ] (output of) - [ CHANGELOG] [ ch11 ] - [ PR] [ p11 ] - ~ const_fn~ ~ global_asm!~
123
+ ~ try_from~ ~ use_extern_macros~ ~ used~
111
124
112
125
[ c11 ] : https://crates.io/crates/svd2rust/0.13.0
113
126
[ ch11 ] : https://github.com/japaric/svd2rust/blob/master/CHANGELOG.md#v0130---2018-05-12
@@ -136,7 +149,7 @@ beta.
136
149
137
150
If you are the author of a Cortex-M device crate, a crate generated using ` svd2rust ` , moving it to
138
151
stable only requires regenerating it using ` svd2rust ` v0.13.0. Do note that the generation process
139
- [ has changed] for the Cortex-M target, and make sure you bump the minor version when you publish a
152
+ [ has changed] for the Cortex-M target; also make sure you bump the minor version when you publish a
140
153
new version.
141
154
142
155
[ has changed ] : https://docs.rs/svd2rust/0.13.0/svd2rust/#usage
@@ -147,6 +160,19 @@ you publish a new version of your crate -- bumping the version of the `embedded-
147
160
breaking change (drivers that depend on ` embedded-hal ` v0.1.0 can't be used with HAL implementation
148
161
crates that depend on ` embedded-hal ` v0.2.0).
149
162
163
+ If you are porting an application to the newest ` cortex-m-* ` crates you may hit these errors:
164
+
165
+ - "error: requires ` start ` lang_item" on binary crates. You need to switch from the standard ` main `
166
+ interface to ` #![no_main] ` + ` entry! ` . Use the [ examples] [ qse ] in the quickstart template as a
167
+ reference.
168
+
169
+ [ qse ] : https://docs.rs/cortex-m-quickstart/0.3.0/cortex_m_quickstart/examples/_0_minimal/index.html
170
+
171
+ - "error[ E0015] : calls in statics are limited to constant functions, tuple structs and tuple
172
+ variants". ` const fn ` is not a stable feature so it's not used in the API by default. The
173
+ ` cortex-m ` provides a ` "const-fn" ` feature to opt into this unstable feature and expose ` const `
174
+ functions in the API; other dependencies should / probably provide a similar feature.
175
+
150
176
## What does this all mean for you?
151
177
152
178
To those of you who have been doing embedded development on nightly: things will get * much easier*
0 commit comments