From 918377580e545f65126712a7810e788c935c06a7 Mon Sep 17 00:00:00 2001 From: Scott Mabin Date: Tue, 21 Oct 2025 15:52:25 +0100 Subject: [PATCH 01/11] eh1 draft --- content/blog/2025/10/esp-hal-1/index.md | 89 +++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 content/blog/2025/10/esp-hal-1/index.md diff --git a/content/blog/2025/10/esp-hal-1/index.md b/content/blog/2025/10/esp-hal-1/index.md new file mode 100644 index 000000000..e771e9679 --- /dev/null +++ b/content/blog/2025/10/esp-hal-1/index.md @@ -0,0 +1,89 @@ +--- +title: "esp-hal 1.0.0 release announcement" +date: 2025-10-30 +featureAsset: "img/featured/featured-rust.webp" +authors: + - scott-mabin +tags: + - Esp32 + - Rust + - Xtensa + - RISCV + - Announcement + +--- + +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! + +### What We're Stabilizing Today + +esp-hal is far from complete. We've spent many years researching and experimenting to get to this stage. 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: + +- Initializing the hal, `esp_hal::init` and the relevant configuration associated with that. +- Four "core" drivers to start: + - GPIO + - UART + - SPI + - I2C +- The `time` module, which provides `Instant`, `Duration`, and `Rate`. +- A couple of miscellaneous system APIs (SoC reset, etc.). +- `#[main]` macro. +- Additional configuration parameters beyond feature flags. + +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. + +### What About the Other `no_std` `esp-*` Crates? + +esp-hal is the foundation of many of the esp-rs ecosystem crates, [esp-radio] (previously known as esp-wifi) is our next stabilization target, and builds directly on top of esp-hal. The end goal is of course to have every `esp-*` crate with a 1.0+ release eventually. + +### Getting Started + +The first step is to read our specially curated [book], which explains the ecosystem, tooling and some key embedded concepts for esp-hal. + +As part of getting to 1.0, we've created our own project generation tool, [esp-generate] to bootstrap starting a project. This is explained fully in the [book], getting something building today should be as simple as: + +```bash +cargo install esp-generate +``` + +then run + +```bash +esp-generate +``` + +to launch the interactive project generation terminal user interface. + +### What’s Next? + +If you're a company using (or considering) Rust on our chips, please do contact rust.support@espressif.com, we'd love to hear from you! + +[^1]: There are some binary blobs to run the Wi-Fi driver which we link to. + + +[Espressif]: https://www.espressif.com/ +[Xtensa]: https://en.wikipedia.org/wiki/Tensilica +[ESP-IDF]: https://github.com/espressif/esp-idf +[probe-rs]: https://probe.rs/ +[embedded-test]: https://github.com/probe-rs/embedded-test +[embassy]: https://github.com/embassy-rs +[official Rust embedded book]: https://docs.rust-embedded.org/book/static-guarantees/typestate-programming.html +[the tracking issue]: https://github.com/espressif/llvm-project/issues/4 +[espflash]: https://github.com/esp-rs/espflash +[esp-hal]: https://github.com/esp-rs/esp-hal/tree/main/esp-hal +[esp-radio]: https://github.com/esp-rs/esp-hal/tree/main/esp-radio +[ESP-NOW]: https://www.espressif.com/en/solutions/low-power-solutions/esp-now +[xtensa-lx and xtensa-lx-rt]: https://github.com/esp-rs/esp-hal/tree/main/xtensa-lx-rt +[esp-generate]: https://github.com/esp-rs/esp-generate +[book]: https://github.com/esp-rs/book +[esp-config]: https://crates.io/crates/esp-config +[docs.espressif.com/projects/rust]: https://docs.espressif.com/projects/rust/index.html +[esp-hal 1.0 beta]: https://developer.espressif.com/blog/2025/02/rust-esp-hal-beta/ + + +[@ivmarkov]: https://github.com/ivmarkov +[@jessebraham]: https://github.com/jessebraham +[@BjoernQ]: https://github.com/BjoernQ +[@arjanmels]: https://github.com/arjanmels +[@t-moe]: https://github.com/t-moe +[@bugadani]: https://github.com/bugadani From 9adff74a9687a4ad6ab39514f6f43d4e1b9a24e4 Mon Sep 17 00:00:00 2001 From: Scott Mabin Date: Fri, 24 Oct 2025 13:25:50 +0100 Subject: [PATCH 02/11] eh1 draft2 --- content/blog/2025/10/esp-hal-1/index.md | 36 +++++++++++-------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/content/blog/2025/10/esp-hal-1/index.md b/content/blog/2025/10/esp-hal-1/index.md index e771e9679..74150fb28 100644 --- a/content/blog/2025/10/esp-hal-1/index.md +++ b/content/blog/2025/10/esp-hal-1/index.md @@ -17,7 +17,7 @@ In February this year, we announced the first [esp-hal 1.0 beta] release. Since ### What We're Stabilizing Today -esp-hal is far from complete. We've spent many years researching and experimenting to get to this stage. 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: +We've spent many years researching and experimenting to get to this stage (checkout 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: - Initializing the hal, `esp_hal::init` and the relevant configuration associated with that. - Four "core" drivers to start: @@ -25,22 +25,27 @@ esp-hal is far from complete. We've spent many years researching and experimenti - UART - SPI - I2C +- `Async` and `Blocking` support for the aforementioned drivers. - The `time` module, which provides `Instant`, `Duration`, and `Rate`. - A couple of miscellaneous system APIs (SoC reset, etc.). - `#[main]` macro. -- Additional configuration parameters beyond feature flags. +- Additional configuration mechanism beyond feature flags ([esp-config]). 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. ### What About the Other `no_std` `esp-*` Crates? -esp-hal is the foundation of many of the esp-rs ecosystem crates, [esp-radio] (previously known as esp-wifi) is our next stabilization target, and builds directly on top of esp-hal. The end goal is of course to have every `esp-*` crate with a 1.0+ release eventually. +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 WiFi, 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. + +### What about 2.0? + +We don't currently have plans for a 2.0. That is to say, we plan on staying on a 1.x version of esp-hal for as long as we can. Over time, we may find some things we missed initially and may wish to make breaking changes; in that case we'd reach for 2.0. We already did some [semver experiments] to explore 1.0/2.0 interop to avoid a complete split ecosystem. ### Getting Started The first step is to read our specially curated [book], which explains the ecosystem, tooling and some key embedded concepts for esp-hal. -As part of getting to 1.0, we've created our own project generation tool, [esp-generate] to bootstrap starting a project. This is explained fully in the [book], getting something building today should be as simple as: +As part of getting to 1.0, we've created our own project generation tool, [esp-generate] to bootstrap starting a project. This is explained fully in the [book], getting something running today should be as simple as: ```bash cargo install esp-generate @@ -54,21 +59,17 @@ esp-generate to launch the interactive project generation terminal user interface. +Once you've generated your project, connect your ESP32 and run `cargo run --release`! + ### What’s Next? -If you're a company using (or considering) Rust on our chips, please do contact rust.support@espressif.com, we'd love to hear from you! +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], overtime 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. -[^1]: There are some binary blobs to run the Wi-Fi driver which we link to. +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! +If you're a company using (or considering using) Rust on our devices, please do contact sales@espressif.com, we'd love to hear from you! [Espressif]: https://www.espressif.com/ -[Xtensa]: https://en.wikipedia.org/wiki/Tensilica -[ESP-IDF]: https://github.com/espressif/esp-idf -[probe-rs]: https://probe.rs/ -[embedded-test]: https://github.com/probe-rs/embedded-test -[embassy]: https://github.com/embassy-rs -[official Rust embedded book]: https://docs.rust-embedded.org/book/static-guarantees/typestate-programming.html -[the tracking issue]: https://github.com/espressif/llvm-project/issues/4 [espflash]: https://github.com/esp-rs/espflash [esp-hal]: https://github.com/esp-rs/esp-hal/tree/main/esp-hal [esp-radio]: https://github.com/esp-rs/esp-hal/tree/main/esp-radio @@ -79,11 +80,4 @@ If you're a company using (or considering) Rust on our chips, please do contact [esp-config]: https://crates.io/crates/esp-config [docs.espressif.com/projects/rust]: https://docs.espressif.com/projects/rust/index.html [esp-hal 1.0 beta]: https://developer.espressif.com/blog/2025/02/rust-esp-hal-beta/ - - -[@ivmarkov]: https://github.com/ivmarkov -[@jessebraham]: https://github.com/jessebraham -[@BjoernQ]: https://github.com/BjoernQ -[@arjanmels]: https://github.com/arjanmels -[@t-moe]: https://github.com/t-moe -[@bugadani]: https://github.com/bugadani +[semver experiments]: https://github.com/MabezDev/semver-playground \ No newline at end of file From 69485bcf69a968debd17499a311727f234327de2 Mon Sep 17 00:00:00 2001 From: Scott Mabin Date: Fri, 24 Oct 2025 13:46:39 +0100 Subject: [PATCH 03/11] draft 3 --- content/blog/2025/10/esp-hal-1/index.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/content/blog/2025/10/esp-hal-1/index.md b/content/blog/2025/10/esp-hal-1/index.md index 74150fb28..5f00533e4 100644 --- a/content/blog/2025/10/esp-hal-1/index.md +++ b/content/blog/2025/10/esp-hal-1/index.md @@ -25,13 +25,14 @@ We've spent many years researching and experimenting to get to this stage (check - UART - SPI - I2C -- `Async` and `Blocking` support for the aforementioned drivers. +- `Blocking` support for the aforementioned drivers. +- `Async` support for the aforementioned drivers, which work on any executor, including [embassy]'s!. - The `time` module, which provides `Instant`, `Duration`, and `Rate`. - A couple of miscellaneous system APIs (SoC reset, etc.). - `#[main]` macro. - Additional configuration mechanism beyond feature flags ([esp-config]). -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. +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. ### What About the Other `no_std` `esp-*` Crates? @@ -71,6 +72,7 @@ If you're a company using (or considering using) Rust on our devices, please do [Espressif]: https://www.espressif.com/ [espflash]: https://github.com/esp-rs/espflash +[embassy]: https://github.com/embassy-rs/embassy [esp-hal]: https://github.com/esp-rs/esp-hal/tree/main/esp-hal [esp-radio]: https://github.com/esp-rs/esp-hal/tree/main/esp-radio [ESP-NOW]: https://www.espressif.com/en/solutions/low-power-solutions/esp-now From 6d411164afc09a7ade65fef6072c2212f15bc8fd Mon Sep 17 00:00:00 2001 From: Scott Mabin Date: Thu, 30 Oct 2025 12:03:12 +0800 Subject: [PATCH 04/11] eh1 draft3 --- content/blog/2025/10/esp-hal-1/index.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/content/blog/2025/10/esp-hal-1/index.md b/content/blog/2025/10/esp-hal-1/index.md index 5f00533e4..98ab18e2d 100644 --- a/content/blog/2025/10/esp-hal-1/index.md +++ b/content/blog/2025/10/esp-hal-1/index.md @@ -25,8 +25,7 @@ We've spent many years researching and experimenting to get to this stage (check - UART - SPI - I2C -- `Blocking` support for the aforementioned drivers. -- `Async` support for the aforementioned drivers, which work on any executor, including [embassy]'s!. +- `Async` and `Blocking` modes for the aforementioned drivers. - The `time` module, which provides `Instant`, `Duration`, and `Rate`. - A couple of miscellaneous system APIs (SoC reset, etc.). - `#[main]` macro. @@ -38,10 +37,6 @@ With the exception of the list above, everything else in esp-hal is now feature 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 WiFi, 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. -### What about 2.0? - -We don't currently have plans for a 2.0. That is to say, we plan on staying on a 1.x version of esp-hal for as long as we can. Over time, we may find some things we missed initially and may wish to make breaking changes; in that case we'd reach for 2.0. We already did some [semver experiments] to explore 1.0/2.0 interop to avoid a complete split ecosystem. - ### Getting Started The first step is to read our specially curated [book], which explains the ecosystem, tooling and some key embedded concepts for esp-hal. @@ -49,7 +44,7 @@ The first step is to read our specially curated [book], which explains the ecosy As part of getting to 1.0, we've created our own project generation tool, [esp-generate] to bootstrap starting a project. This is explained fully in the [book], getting something running today should be as simple as: ```bash -cargo install esp-generate +cargo install esp-generate --locked ``` then run @@ -60,7 +55,7 @@ esp-generate to launch the interactive project generation terminal user interface. -Once you've generated your project, connect your ESP32 and run `cargo run --release`! +Once you've generated your project, connect your ESP32 and run `cargo run --release` from your new project directory! ### What’s Next? From 9df56917042fb50d8162f1b6a7b57f370953e30e Mon Sep 17 00:00:00 2001 From: Scott Mabin Date: Thu, 30 Oct 2025 15:02:31 +0800 Subject: [PATCH 05/11] eh1 draft4 --- content/blog/2025/10/esp-hal-1/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/blog/2025/10/esp-hal-1/index.md b/content/blog/2025/10/esp-hal-1/index.md index 98ab18e2d..05e5d9360 100644 --- a/content/blog/2025/10/esp-hal-1/index.md +++ b/content/blog/2025/10/esp-hal-1/index.md @@ -41,7 +41,7 @@ esp-hal is the foundation of many of the ecosystem crates, [esp-radio] (previous The first step is to read our specially curated [book], which explains the ecosystem, tooling and some key embedded concepts for esp-hal. -As part of getting to 1.0, we've created our own project generation tool, [esp-generate] to bootstrap starting a project. This is explained fully in the [book], getting something running today should be as simple as: +As part of getting to 1.0, we've created our own project generation tool, [esp-generate] to bootstrap starting a project. This is explained fully in the [book], but getting something running today should be as simple as: ```bash cargo install esp-generate --locked From 0d719c3aaaa6f6ecda9ca353398e13b6aa85d7f1 Mon Sep 17 00:00:00 2001 From: Scott Mabin Date: Thu, 30 Oct 2025 16:01:34 +0800 Subject: [PATCH 06/11] eh1 draft5 --- content/blog/2025/10/esp-hal-1/index.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/content/blog/2025/10/esp-hal-1/index.md b/content/blog/2025/10/esp-hal-1/index.md index 05e5d9360..503b88740 100644 --- a/content/blog/2025/10/esp-hal-1/index.md +++ b/content/blog/2025/10/esp-hal-1/index.md @@ -31,15 +31,19 @@ We've spent many years researching and experimenting to get to this stage (check - `#[main]` macro. - Additional configuration mechanism beyond feature flags ([esp-config]). -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. +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. -### What About the Other `no_std` `esp-*` Crates? +### What Does Unstable Mean for Drivers? -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 WiFi, 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. +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. + +### What About the Other `esp-*` Crates? + +`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 WiFi, 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. ### Getting Started -The first step is to read our specially curated [book], which explains the ecosystem, tooling and some key embedded concepts for esp-hal. +The first step is to read our specially curated [book], which explains the ecosystem, tooling and some key embedded concepts for `esp-hal`. As part of getting to 1.0, we've created our own project generation tool, [esp-generate] to bootstrap starting a project. This is explained fully in the [book], but getting something running today should be as simple as: @@ -59,7 +63,7 @@ Once you've generated your project, connect your ESP32 and run `cargo run --rele ### What’s Next? -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], overtime 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. +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`], overtime 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. 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! @@ -68,8 +72,8 @@ If you're a company using (or considering using) Rust on our devices, please do [Espressif]: https://www.espressif.com/ [espflash]: https://github.com/esp-rs/espflash [embassy]: https://github.com/embassy-rs/embassy -[esp-hal]: https://github.com/esp-rs/esp-hal/tree/main/esp-hal -[esp-radio]: https://github.com/esp-rs/esp-hal/tree/main/esp-radio +[`esp-hal`]: https://github.com/esp-rs/esp-hal/tree/main/esp-hal +[`esp-radio`]: https://github.com/esp-rs/esp-hal/tree/main/esp-radio [ESP-NOW]: https://www.espressif.com/en/solutions/low-power-solutions/esp-now [xtensa-lx and xtensa-lx-rt]: https://github.com/esp-rs/esp-hal/tree/main/xtensa-lx-rt [esp-generate]: https://github.com/esp-rs/esp-generate From f92d22f3c21038f421a7f8fc8f0684c18bdc5725 Mon Sep 17 00:00:00 2001 From: Scott Mabin Date: Thu, 30 Oct 2025 16:03:12 +0800 Subject: [PATCH 07/11] eh1 draft5 --- content/blog/2025/10/esp-hal-1/index.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/blog/2025/10/esp-hal-1/index.md b/content/blog/2025/10/esp-hal-1/index.md index 503b88740..64e80c9c9 100644 --- a/content/blog/2025/10/esp-hal-1/index.md +++ b/content/blog/2025/10/esp-hal-1/index.md @@ -13,11 +13,11 @@ tags: --- -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! +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! ### What We're Stabilizing Today -We've spent many years researching and experimenting to get to this stage (checkout 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: +We've spent many years researching and experimenting to get to this stage (checkout 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: - Initializing the hal, `esp_hal::init` and the relevant configuration associated with that. - Four "core" drivers to start: @@ -29,7 +29,7 @@ We've spent many years researching and experimenting to get to this stage (check - The `time` module, which provides `Instant`, `Duration`, and `Rate`. - A couple of miscellaneous system APIs (SoC reset, etc.). - `#[main]` macro. -- Additional configuration mechanism beyond feature flags ([esp-config]). +- Additional configuration mechanism beyond feature flags ([`esp-config`]). 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. @@ -45,7 +45,7 @@ Unstable in this case refers to API stability. There is varying levels of functi The first step is to read our specially curated [book], which explains the ecosystem, tooling and some key embedded concepts for `esp-hal`. -As part of getting to 1.0, we've created our own project generation tool, [esp-generate] to bootstrap starting a project. This is explained fully in the [book], but getting something running today should be as simple as: +As part of getting to 1.0, we've created our own project generation tool, [`esp-generate`] to bootstrap starting a project. This is explained fully in the [book], but getting something running today should be as simple as: ```bash cargo install esp-generate --locked @@ -76,9 +76,9 @@ If you're a company using (or considering using) Rust on our devices, please do [`esp-radio`]: https://github.com/esp-rs/esp-hal/tree/main/esp-radio [ESP-NOW]: https://www.espressif.com/en/solutions/low-power-solutions/esp-now [xtensa-lx and xtensa-lx-rt]: https://github.com/esp-rs/esp-hal/tree/main/xtensa-lx-rt -[esp-generate]: https://github.com/esp-rs/esp-generate +[`esp-generate`]: https://github.com/esp-rs/esp-generate [book]: https://github.com/esp-rs/book -[esp-config]: https://crates.io/crates/esp-config +[`esp-config`]: https://crates.io/crates/esp-config [docs.espressif.com/projects/rust]: https://docs.espressif.com/projects/rust/index.html -[esp-hal 1.0 beta]: https://developer.espressif.com/blog/2025/02/rust-esp-hal-beta/ +[`esp-hal` 1.0 beta]: https://developer.espressif.com/blog/2025/02/rust-esp-hal-beta/ [semver experiments]: https://github.com/MabezDev/semver-playground \ No newline at end of file From 353d8fa3feb63c2e50153cba82da6e2a27e7a628 Mon Sep 17 00:00:00 2001 From: Scott Mabin Date: Thu, 30 Oct 2025 16:12:47 +0800 Subject: [PATCH 08/11] eh1 draft6 --- content/blog/2025/10/esp-hal-1/index.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/content/blog/2025/10/esp-hal-1/index.md b/content/blog/2025/10/esp-hal-1/index.md index 64e80c9c9..e1956c141 100644 --- a/content/blog/2025/10/esp-hal-1/index.md +++ b/content/blog/2025/10/esp-hal-1/index.md @@ -26,6 +26,7 @@ We've spent many years researching and experimenting to get to this stage (check - SPI - I2C - `Async` and `Blocking` modes for the aforementioned drivers. + - Our `Async` drivers are compatible with many executors, including [Embassy]'s. - The `time` module, which provides `Instant`, `Duration`, and `Rate`. - A couple of miscellaneous system APIs (SoC reset, etc.). - `#[main]` macro. @@ -39,7 +40,7 @@ Unstable in this case refers to API stability. There is varying levels of functi ### What About the Other `esp-*` Crates? -`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 WiFi, 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. +`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 WiFi, 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. ### Getting Started @@ -61,6 +62,8 @@ to launch the interactive project generation terminal user interface. Once you've generated your project, connect your ESP32 and run `cargo run --release` from your new project directory! +To start building from your baseline project, check out our API documentation at [docs.espressif.com/projects/rust]. + ### What’s Next? 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`], overtime 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. @@ -69,16 +72,12 @@ This release would not have been possible without the help from the Rust communi If you're a company using (or considering using) Rust on our devices, please do contact sales@espressif.com, we'd love to hear from you! -[Espressif]: https://www.espressif.com/ -[espflash]: https://github.com/esp-rs/espflash -[embassy]: https://github.com/embassy-rs/embassy +[Embassy]: https://github.com/embassy-rs/embassy [`esp-hal`]: https://github.com/esp-rs/esp-hal/tree/main/esp-hal [`esp-radio`]: https://github.com/esp-rs/esp-hal/tree/main/esp-radio [ESP-NOW]: https://www.espressif.com/en/solutions/low-power-solutions/esp-now -[xtensa-lx and xtensa-lx-rt]: https://github.com/esp-rs/esp-hal/tree/main/xtensa-lx-rt [`esp-generate`]: https://github.com/esp-rs/esp-generate [book]: https://github.com/esp-rs/book [`esp-config`]: https://crates.io/crates/esp-config [docs.espressif.com/projects/rust]: https://docs.espressif.com/projects/rust/index.html -[`esp-hal` 1.0 beta]: https://developer.espressif.com/blog/2025/02/rust-esp-hal-beta/ -[semver experiments]: https://github.com/MabezDev/semver-playground \ No newline at end of file +[`esp-hal` 1.0 beta]: https://developer.espressif.com/blog/2025/02/rust-esp-hal-beta/ \ No newline at end of file From ad2bb9c64278a489c5f7e9c93153fb7bdb061e47 Mon Sep 17 00:00:00 2001 From: Scott Mabin Date: Thu, 30 Oct 2025 16:14:45 +0800 Subject: [PATCH 09/11] eh1 draft7 --- content/blog/2025/10/esp-hal-1/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/blog/2025/10/esp-hal-1/index.md b/content/blog/2025/10/esp-hal-1/index.md index e1956c141..8a0673d8e 100644 --- a/content/blog/2025/10/esp-hal-1/index.md +++ b/content/blog/2025/10/esp-hal-1/index.md @@ -19,7 +19,7 @@ In February this year, we announced the first [`esp-hal` 1.0 beta] release. Sinc We've spent many years researching and experimenting to get to this stage (checkout 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: -- Initializing the hal, `esp_hal::init` and the relevant configuration associated with that. +- Initializing the HAL, `esp_hal::init` and the relevant configuration associated with that. - Four "core" drivers to start: - GPIO - UART From 548a6d7c3fcf1f1fca1d50e985b9d74c12273d4c Mon Sep 17 00:00:00 2001 From: Scott Mabin Date: Thu, 30 Oct 2025 16:20:27 +0800 Subject: [PATCH 10/11] eh1 draft8 --- content/blog/2025/10/esp-hal-1/index.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/content/blog/2025/10/esp-hal-1/index.md b/content/blog/2025/10/esp-hal-1/index.md index 8a0673d8e..72489be01 100644 --- a/content/blog/2025/10/esp-hal-1/index.md +++ b/content/blog/2025/10/esp-hal-1/index.md @@ -17,7 +17,7 @@ In February this year, we announced the first [`esp-hal` 1.0 beta] release. Sinc ### What We're Stabilizing Today -We've spent many years researching and experimenting to get to this stage (checkout 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: +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: - Initializing the HAL, `esp_hal::init` and the relevant configuration associated with that. - Four "core" drivers to start: @@ -30,29 +30,29 @@ We've spent many years researching and experimenting to get to this stage (check - The `time` module, which provides `Instant`, `Duration`, and `Rate`. - A couple of miscellaneous system APIs (SoC reset, etc.). - `#[main]` macro. -- Additional configuration mechanism beyond feature flags ([`esp-config`]). +- Additional configuration mechanisms beyond feature flags ([`esp-config`]). -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. +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. ### What Does Unstable Mean for Drivers? -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. +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. ### What About the Other `esp-*` Crates? -`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 WiFi, 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. +`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. ### Getting Started The first step is to read our specially curated [book], which explains the ecosystem, tooling and some key embedded concepts for `esp-hal`. -As part of getting to 1.0, we've created our own project generation tool, [`esp-generate`] to bootstrap starting a project. This is explained fully in the [book], but getting something running today should be as simple as: +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: ```bash cargo install esp-generate --locked ``` -then run +Then run ```bash esp-generate @@ -66,9 +66,9 @@ To start building from your baseline project, check out our API documentation at ### What’s Next? -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`], overtime 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. +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. -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! +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! If you're a company using (or considering using) Rust on our devices, please do contact sales@espressif.com, we'd love to hear from you! From ac0131044071823f5b382c85f7bf7f86eed32407 Mon Sep 17 00:00:00 2001 From: Scott Mabin Date: Thu, 30 Oct 2025 16:40:13 +0800 Subject: [PATCH 11/11] eh1 draft9 --- content/blog/2025/10/esp-hal-1/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/blog/2025/10/esp-hal-1/index.md b/content/blog/2025/10/esp-hal-1/index.md index 72489be01..3c6bbbee0 100644 --- a/content/blog/2025/10/esp-hal-1/index.md +++ b/content/blog/2025/10/esp-hal-1/index.md @@ -10,6 +10,7 @@ tags: - Xtensa - RISCV - Announcement +summary: "Announcing esp-hal 1.0, the first Rust SDK for embedded devices." ---