Espressif's Scott Mabin Announces "the First Vendor-Backed Rust SDK," Now Available as 1.0.0-beta0
"This has been a nearly six year long process to get to this point," says Mabin, "and we now feel we have a solid 1.0 strategy."
Espressif's Scott Mabin has announced a milestone for ongoing efforts to make Rust a first-class language for the company's microcontrollers: the release of esp-hal
in 1.0.0-beta.0 form, ahead of the first 1.0 release of the company's official Rust software development kit (SDK).
"We're excited to announce the 1.0.0-beta.0 release for esp-hal
, the first vendor-backed Rust SDK," Mabin explains in the company's announcement. "This has been a nearly six year long process to get to this point, and we now feel we have a solid 1.0 strategy."
Work to make Rust a first-class language for Espressif microcontrollers has been a long process. Back in 2023 Mabin unveiled a roadmap that included adding support for using esp-hal
to create applications for both the RISC-V and Tensilica Xtensa cores available on some ESP32 models and expanding on initial support for asynchronous operation with additional non-blocking peripheral drivers and network stacks β plus support for Espressif's latest devices, including the ESP32-P4.
"It has been possible to write embedded Rust applications on stable since 2018," Mabin explains. "Most of the ecosystem, however, revolved around chips using the Arm architecture, which posed a bit of an uphill battle for us. Espressif had just released its last Xtensa chip (the ESP32-S3) and was now bringing out RISC-V based chips.
"We spent the entirety of 2022 and most of 2023 working exclusively on chip support; making sure new chips were supported, and trying to support as many peripherals as possible. This seemed like a good idea at the time but by the end of 2023 we realized that trying to support everything that the chips can do (there is a lot, try looking at a reference manual if you're curious) whilst an admirable goal is likely unachievable in a reasonable time with the size of our team. We soon realized that API stability is far more important than having everything supported."
That led to a stabilization strategy, which paves the path to the release of esp-hal
1.0.0 proper: initialization of the hardware abstraction layer, "core" drivers for general-purpose input/output (GPIO), UART, SPI, and I2C buses, a time
module to provide Instant
, Duration
, and Rate
, a #[main]
macro, "a couple of miscellaneous system APIs," and support for configuration via esp-config
. Everything else, Mabin explains, will be "feature gated" under the unstable feature.
"With the scope limited," Mabin adds, "post-1.0 we can incrementally stabilize drivers, much like the Rust project itself does. This is quite a small amount to stabilize initially, however we feel it's enough to build a foundation on. It's expected that for most complex projects users will opt-in to the unstable
feature. Over time, as we stabilize more drivers, and eventually more crates, users will be able to remove the unstable
feature from their Cargo.toml
files."
More information on trying the beta out, and more information on the six-year history of the effort, is available in Mabin's blog post.