diff --git a/esp-hal-procmacros/Cargo.toml b/esp-hal-procmacros/Cargo.toml
index 7cb9f6a4f7d..cea67bd4929 100644
--- a/esp-hal-procmacros/Cargo.toml
+++ b/esp-hal-procmacros/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name         = "esp-hal-procmacros"
-version      = "0.9.0"
+version      = "0.10.0"
 edition      = "2021"
 rust-version = "1.76.0"
 description  = "Procedural macros for esp-hal"
@@ -17,12 +17,12 @@ proc-macro = true
 darling           = "0.20.8"
 document-features = "0.2.8"
 litrs             = "0.4.1"
-object            = { version = "0.33.0", optional = true }
+object            = { version = "0.35.0", optional = true }
 proc-macro-crate  = "3.1.0"
 proc-macro-error  = "1.0.4"
-proc-macro2       = "1.0.78"
-quote             = "1.0.35"
-syn               = { version = "2.0.52", features = ["extra-traits", "full"] }
+proc-macro2       = "1.0.80"
+quote             = "1.0.36"
+syn               = { version = "2.0.59", features = ["extra-traits", "full"] }
 
 [features]
 ## Provide a `#[main]` procmacro to mark the entry point for Embassy applications.
diff --git a/esp-hal-smartled/Cargo.toml b/esp-hal-smartled/Cargo.toml
index 2166abde658..ae0acf15339 100644
--- a/esp-hal-smartled/Cargo.toml
+++ b/esp-hal-smartled/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name         = "esp-hal-smartled"
-version      = "0.9.0"
+version      = "0.10.0"
 edition      = "2021"
 rust-version = "1.76.0"
 description  = "RMT adapter for smartleds"
@@ -14,7 +14,7 @@ targets  = ["riscv32imc-unknown-none-elf"]
 [dependencies]
 defmt             = { version = "0.3.6", optional = true }
 document-features = "0.2.8"
-esp-hal           = { version = "0.16.0", path = "../esp-hal" }
+esp-hal           = { version = "0.17.0", path = "../esp-hal" }
 fugit             = "0.3.7"
 smart-leds-trait  = "0.3.0"
 
diff --git a/esp-hal/CHANGELOG.md b/esp-hal/CHANGELOG.md
index f0586c18e70..3e4f8cf34d2 100644
--- a/esp-hal/CHANGELOG.md
+++ b/esp-hal/CHANGELOG.md
@@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
-## [Unreleased]
+## [0.17.0] - 2024-04-18
 
 ### Added
 
@@ -531,7 +531,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ## [0.1.0] - 2022-08-05
 
-[Unreleased]: https://github.com/esp-rs/esp-hal/compare/v0.16.1...HEAD
+[0.17.0]: https://github.com/esp-rs/esp-hal/compare/v0.16.1...v0.17.0
 [0.16.1]: https://github.com/esp-rs/esp-hal/compare/v0.16.0...v0.16.1
 [0.16.0]: https://github.com/esp-rs/esp-hal/compare/v0.15.0...v0.16.0
 [0.15.0]: https://github.com/esp-rs/esp-hal/compare/v0.14.1...v0.15.0
diff --git a/esp-hal/Cargo.toml b/esp-hal/Cargo.toml
index da3dd06da14..5aae91486d3 100644
--- a/esp-hal/Cargo.toml
+++ b/esp-hal/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name          = "esp-hal"
-version       = "0.16.1"
+version       = "0.17.0"
 edition       = "2021"
 rust-version  = "1.76.0"
 description   = "Bare-metal HAL for Espressif devices"
@@ -15,8 +15,8 @@ features       = ["embedded-hal", "esp32c6"]
 rustdoc-args   = ["--cfg", "docsrs"]
 
 [dependencies]
-bitflags             = "2.4.2"
-bitfield             = "0.14.0"
+bitflags             = "2.5.0"
+bitfield             = "0.15.0"
 cfg-if               = "1.0.0"
 critical-section     = "1.1.2"
 defmt                = { version = "0.3.6", optional = true }
@@ -40,9 +40,9 @@ log                  = { version = "0.4.21", optional = true }
 nb                   = "1.1.0"
 paste                = "1.0.14"
 portable-atomic      = { version = "1.6.0", default-features = false }
-procmacros           = { version = "0.9.0", features = ["enum-dispatch", "interrupt", "ram"], package = "esp-hal-procmacros", path = "../esp-hal-procmacros" }
+procmacros           = { version = "0.10.0", features = ["enum-dispatch", "interrupt", "ram"], package = "esp-hal-procmacros", path = "../esp-hal-procmacros" }
 riscv                = { version = "0.11.1", optional = true }
-strum                = { version = "0.26.1", default-features = false, features = ["derive"] }
+strum                = { version = "0.26.2", default-features = false, features = ["derive"] }
 void                 = { version = "1.0.2", default-features = false }
 usb-device           = { version = "0.3.2", optional = true }
 rand_core            = "0.6.4"
@@ -52,22 +52,22 @@ xtensa-lx            = { version = "0.9.0", optional = true }
 # IMPORTANT:
 # Each supported device MUST have its PAC included below along with a
 # corresponding feature.
-esp32   = { git = "https://github.com/esp-rs/esp-pacs", rev = "f6b5e6b", features = ["critical-section", "rt"], optional = true }
-esp32c2 = { git = "https://github.com/esp-rs/esp-pacs", rev = "f6b5e6b", features = ["critical-section", "rt"], optional = true }
-esp32c3 = { git = "https://github.com/esp-rs/esp-pacs", rev = "f6b5e6b", features = ["critical-section", "rt"], optional = true }
-esp32c6 = { git = "https://github.com/esp-rs/esp-pacs", rev = "f6b5e6b", features = ["critical-section", "rt"], optional = true }
-esp32h2 = { git = "https://github.com/esp-rs/esp-pacs", rev = "f6b5e6b", features = ["critical-section", "rt"], optional = true }
-esp32s2 = { git = "https://github.com/esp-rs/esp-pacs", rev = "f6b5e6b", features = ["critical-section", "rt"], optional = true }
-esp32s3 = { git = "https://github.com/esp-rs/esp-pacs", rev = "f6b5e6b", features = ["critical-section", "rt"], optional = true }
+esp32   = { version = "0.30.0", features = ["critical-section", "rt"], optional = true }
+esp32c2 = { version = "0.19.0", features = ["critical-section", "rt"], optional = true }
+esp32c3 = { version = "0.22.0", features = ["critical-section", "rt"], optional = true }
+esp32c6 = { version = "0.13.0", features = ["critical-section", "rt"], optional = true }
+esp32h2 = { version = "0.9.0",  features = ["critical-section", "rt"], optional = true }
+esp32s2 = { version = "0.21.0", features = ["critical-section", "rt"], optional = true }
+esp32s3 = { version = "0.25.0", features = ["critical-section", "rt"], optional = true }
 
 [target.'cfg(target_arch = "riscv32")'.dependencies]
-esp-riscv-rt = { version = "0.7.0", path = "../esp-riscv-rt" }
+esp-riscv-rt = { version = "0.8.0", path = "../esp-riscv-rt" }
 
 [target.'cfg(target_arch = "xtensa")'.dependencies]
 xtensa-lx-rt = "0.16.0"
 
 [build-dependencies]
-basic-toml   = "0.1.8"
+basic-toml   = "0.1.9"
 cfg-if       = "1.0.0"
 esp-build    = { version = "0.1.0", path = "../esp-build" }
 esp-metadata = { version = "0.1.0", path = "../esp-metadata" }
diff --git a/esp-riscv-rt/CHANGELOG.md b/esp-riscv-rt/CHANGELOG.md
index c2dc5f0e1dd..a0852d10b15 100644
--- a/esp-riscv-rt/CHANGELOG.md
+++ b/esp-riscv-rt/CHANGELOG.md
@@ -5,15 +5,16 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
-## Unreleased
-
-### Added
+## 0.8.0 - 2024-04-18
 
 ### Fixed
 
+- Ensure we don't strongly define cpu int handlers (#1324)
+- Discard interrupt symbols from LTO so that LTO doesn't end up rebinding them (#1327)
+
 ### Changed
 
-### Removed
+- Remove the `direct-vectoring` & `interrupt-preemption` features and enable them by default (#1310)
 
 ## 0.7.0 - 2024-03-08
 
diff --git a/esp-riscv-rt/Cargo.toml b/esp-riscv-rt/Cargo.toml
index 6a6d9208332..ae45b80ca12 100644
--- a/esp-riscv-rt/Cargo.toml
+++ b/esp-riscv-rt/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name         = "esp-riscv-rt"
-version      = "0.7.0"
+version      = "0.8.0"
 edition      = "2021"
 rust-version = "1.65"
 description  = "Minimal runtime / startup for RISC-V CPUs from Espressif"
diff --git a/examples/Cargo.toml b/examples/Cargo.toml
index b466900e099..e05057899ec 100644
--- a/examples/Cargo.toml
+++ b/examples/Cargo.toml
@@ -24,8 +24,8 @@ embedded-io-async   = "0.6.1"
 embedded-can        = "0.4.1"
 esp-alloc           = { version = "0.3.0", path = "../esp-alloc" }
 esp-backtrace       = { version = "0.11.1", features = ["exception-handler", "panic-handler", "println"] }
-esp-hal             = { version = "0.16.0", path = "../esp-hal", features = ["log"] }
-esp-hal-smartled    = { version = "0.9.0",  path = "../esp-hal-smartled", optional = true }
+esp-hal             = { version = "0.17.0", path = "../esp-hal", features = ["log"] }
+esp-hal-smartled    = { version = "0.10.0",  path = "../esp-hal-smartled", optional = true }
 esp-println         = { version = "0.9.1", features = ["log"] }
 fugit               = "0.3.7"
 heapless            = "0.8.0"