Description
This is a P-high embedded-WG issue that needs to be fixed to make embedded Rust work on stable.
Targets like thumbv7m-none-eabi
need to use Xargo, which requires nightly, because there's no
pre-compiled core
crate (i.e. rustup target add thumbv7m-none-eabi
doesn't work).
To fastest way to remove this nightly dependency is to provide a rust-std
component (pre-compiled
core) for the embedded targets. Then users would be able to use rustup target thumbv7m-none-eabi; cargo build --target thumbv7m-none-eabi
for embedded development.
The embedded targets rustc
currently supports are:
thumbv6m-none-eabi
thumbv7m-none-eabi
thumbv7em-none-eabi
thumbv7em-none-eabihf
msp430-none-elf
The Thumb targets have a more stable LLVM backend so we can commit to always building core
for
that target. The MSP430 backend is slightly less stable so we don't want to block the PR pipeline if
building core
for the MSP430 target breaks.
This issue can be split in two parts:
- Enabling
rust-std
builds for the 4 Thumb targets. Gating oncore
building for those targets. - Create some mechanism to let
core
/std
build fail, and enablerust-std
builds for the
MSP430 target. We won't gate oncore
building for the MSP430 target.
cc @alexcrichton who can give more info about how to implement this
cc @pftbest