Skip to content

Commit c54562c

Browse files
Sync Merge: eh1 (#589)
* eh1 draft * eh1 draft2 * draft 3 * eh1 draft3 * eh1 draft4 * eh1 draft5 * eh1 draft5 * eh1 draft6 * eh1 draft7 * eh1 draft8 * eh1 draft9 --------- Co-authored-by: Scott Mabin <[email protected]>
1 parent 3492f4c commit c54562c

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
---
2+
title: "esp-hal 1.0.0 release announcement"
3+
date: 2025-10-30
4+
featureAsset: "img/featured/featured-rust.webp"
5+
authors:
6+
- scott-mabin
7+
tags:
8+
- Esp32
9+
- Rust
10+
- Xtensa
11+
- RISCV
12+
- Announcement
13+
summary: "Announcing esp-hal 1.0, the first Rust SDK for embedded devices."
14+
15+
---
16+
17+
In February this year, we announced the first [`esp-hal` 1.0 beta] release. Since then we've been hard at work, polishing and preparing for the full release. Today, the Rust team at Espressif is excited to announce the official `1.0.0` release for `esp-hal`, the _first_ vendor-backed Rust SDK!
18+
19+
### What We're Stabilizing Today
20+
21+
We've spent many years researching and experimenting to get to this stage (check out the [`esp-hal` 1.0 beta] blog post for the longer story!). However, to get a stable foundation to build from, the experimentation eventually needs to make way for stability. To achieve this, we've decided to limit the scope of 1.0 stabilization to:
22+
23+
- Initializing the HAL, `esp_hal::init` and the relevant configuration associated with that.
24+
- Four "core" drivers to start:
25+
- GPIO
26+
- UART
27+
- SPI
28+
- I2C
29+
- `Async` and `Blocking` modes for the aforementioned drivers.
30+
- Our `Async` drivers are compatible with many executors, including [Embassy]'s.
31+
- The `time` module, which provides `Instant`, `Duration`, and `Rate`.
32+
- A couple of miscellaneous system APIs (SoC reset, etc.).
33+
- `#[main]` macro.
34+
- Additional configuration mechanisms beyond feature flags ([`esp-config`]).
35+
36+
With the exception of the list above, everything else in `esp-hal` is now feature-gated behind the `unstable` feature. With the scope limited, post 1.0 we can incrementally stabilize drivers, much like the Rust project itself does, building on 1.0's foundation.
37+
38+
### What Does Unstable Mean for Drivers?
39+
40+
Unstable in this case refers to API stability. There is varying levels of functionality for unstable drivers, however, they are suitable for most common use cases. Using them, reporting feedback, and/or contributing to improving them will aid their stabilization.
41+
42+
### What About the Other `esp-*` Crates?
43+
44+
`esp-hal` is the foundation of many of the ecosystem crates. [`esp-radio`] (previously known as `esp-wifi`) is our next stabilization target, which will enable the use of Wi-Fi, Bluetooth, [ESP-NOW] and IEEE802.15.4 on the ESP32 family of devices. The end goal is of course to have every `esp-*` crate with a 1.0+ release eventually.
45+
46+
### Getting Started
47+
48+
The first step is to read our specially curated [book], which explains the ecosystem, tooling and some key embedded concepts for `esp-hal`.
49+
50+
As part of getting to 1.0, we've created our own project generation tool, [`esp-generate`] to bootstrap a project. This is explained fully in the [book], but getting something running today should be as simple as:
51+
52+
```bash
53+
cargo install esp-generate --locked
54+
```
55+
56+
Then run
57+
58+
```bash
59+
esp-generate
60+
```
61+
62+
to launch the interactive project generation terminal user interface.
63+
64+
Once you've generated your project, connect your ESP32 and run `cargo run --release` from your new project directory!
65+
66+
To start building from your baseline project, check out our API documentation at [docs.espressif.com/projects/rust].
67+
68+
### What’s Next?
69+
70+
This is just the start. We plan on stabilizing all `esp-hal` related crates, next up is [`esp-radio`]. We'll continue developing [`esp-hal`]; over time we'll stabilize more drivers beyond the core set that we're starting with today. We'll continue to add support for new devices, such as the newly released ESP32-C5, as they go into mass production.
71+
72+
This release would not have been possible without the help from the Rust community, the embedded working group, and of course the ESP community and contributors which have heavily impacted how we’ve developed our Rust offering. I would also like to thank Espressif, and in particular the Rust team for their hard work in getting us to where we are today!
73+
74+
If you're a company using (or considering using) Rust on our devices, please do contact [email protected], we'd love to hear from you!
75+
76+
[Embassy]: https://github.com/embassy-rs/embassy
77+
[`esp-hal`]: https://github.com/esp-rs/esp-hal/tree/main/esp-hal
78+
[`esp-radio`]: https://github.com/esp-rs/esp-hal/tree/main/esp-radio
79+
[ESP-NOW]: https://www.espressif.com/en/solutions/low-power-solutions/esp-now
80+
[`esp-generate`]: https://github.com/esp-rs/esp-generate
81+
[book]: https://github.com/esp-rs/book
82+
[`esp-config`]: https://crates.io/crates/esp-config
83+
[docs.espressif.com/projects/rust]: https://docs.espressif.com/projects/rust/index.html
84+
[`esp-hal` 1.0 beta]: https://developer.espressif.com/blog/2025/02/rust-esp-hal-beta/

0 commit comments

Comments
 (0)