aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlf Lilleengen <[email protected]>2025-09-22 10:38:20 +0200
committerGitHub <[email protected]>2025-09-22 10:38:20 +0200
commite9232bfad31c8a0c8567fa092a323f186bd99eb5 (patch)
tree914952e6ff6d434380b574a8c9f6b44c8cee979f
parentd1b55faace4b5059c726d94dd2d7f1ad3805ab48 (diff)
parent768182545aa600811c480a1ab298c590ce1093bc (diff)
Merge branch 'main' into add-nrf-rtc-driver
-rwxr-xr-x.github/ci/build-nightly.sh2
-rwxr-xr-x.github/ci/build-xtensa.sh2
-rwxr-xr-x.github/ci/build.sh2
-rwxr-xr-x.github/ci/crlf.sh17
-rwxr-xr-x.github/ci/doc.sh54
-rwxr-xr-x.github/ci/janitor.sh15
-rw-r--r--cyw43-pio/Cargo.toml3
-rw-r--r--embassy-boot-nrf/Cargo.toml3
-rw-r--r--embassy-boot/Cargo.toml2
-rw-r--r--embassy-embedded-hal/Cargo.toml1
-rw-r--r--embassy-executor/Cargo.toml6
-rw-r--r--embassy-executor/tests/ui/spawn_nonsend.stderr6
-rw-r--r--embassy-executor/tests/ui/unsafe_op_in_unsafe_task.stderr2
-rw-r--r--embassy-futures/Cargo.toml4
-rw-r--r--embassy-hal-internal/Cargo.toml3
-rw-r--r--embassy-imxrt/Cargo.toml2
-rw-r--r--embassy-net-driver-channel/Cargo.toml4
-rw-r--r--embassy-net-driver/Cargo.toml3
-rw-r--r--embassy-net-enc28j60/Cargo.toml4
-rw-r--r--embassy-net-wiznet/Cargo.toml3
-rw-r--r--embassy-net/Cargo.toml2
-rw-r--r--embassy-nrf/CHANGELOG.md2
-rw-r--r--embassy-nrf/Cargo.toml2
-rw-r--r--embassy-nrf/src/gpiote.rs18
-rw-r--r--embassy-nrf/src/timer.rs19
-rw-r--r--embassy-nxp/Cargo.toml1
-rw-r--r--embassy-rp/Cargo.toml4
-rw-r--r--embassy-stm32/Cargo.toml4
-rw-r--r--embassy-sync/Cargo.toml2
-rw-r--r--embassy-sync/tests/ui/sync_impl/lazy_lock_function.stderr8
-rw-r--r--embassy-time/Cargo.toml5
-rw-r--r--embassy-usb-dfu/Cargo.toml3
-rw-r--r--embassy-usb-driver/Cargo.toml3
-rw-r--r--embassy-usb-synopsys-otg/Cargo.toml4
-rw-r--r--embassy-usb/Cargo.toml1
-rw-r--r--examples/mimxrt1011/Cargo.toml2
-rw-r--r--examples/mimxrt1062-evk/Cargo.toml2
-rw-r--r--examples/mimxrt6/Cargo.toml2
-rw-r--r--rust-toolchain-nightly.toml2
-rw-r--r--rust-toolchain.toml2
-rw-r--r--tests/perf-client/Cargo.toml1
-rw-r--r--tests/perf-server/Cargo.toml1
-rw-r--r--tests/utils/Cargo.toml1
43 files changed, 141 insertions, 88 deletions
diff --git a/.github/ci/build-nightly.sh b/.github/ci/build-nightly.sh
index 2d7c4db3f..257d7ebd3 100755
--- a/.github/ci/build-nightly.sh
+++ b/.github/ci/build-nightly.sh
@@ -23,7 +23,7 @@ fi
23hashtime restore /ci/cache/filetime.json || true 23hashtime restore /ci/cache/filetime.json || true
24hashtime save /ci/cache/filetime.json 24hashtime save /ci/cache/filetime.json
25 25
26cargo install --git https://github.com/embassy-rs/cargo-embassy-devtool --locked --rev 280829ad163f1444999468a57d28fb7c412babbe 26cargo install --git https://github.com/embassy-rs/cargo-embassy-devtool --locked --rev 3ca80f7065acbe0b69b7da463fab60e744f9de79
27 27
28./ci-nightly.sh 28./ci-nightly.sh
29 29
diff --git a/.github/ci/build-xtensa.sh b/.github/ci/build-xtensa.sh
index b6626639d..339e28467 100755
--- a/.github/ci/build-xtensa.sh
+++ b/.github/ci/build-xtensa.sh
@@ -25,7 +25,7 @@ fi
25hashtime restore /ci/cache/filetime.json || true 25hashtime restore /ci/cache/filetime.json || true
26hashtime save /ci/cache/filetime.json 26hashtime save /ci/cache/filetime.json
27 27
28cargo install --git https://github.com/embassy-rs/cargo-embassy-devtool --locked --rev 280829ad163f1444999468a57d28fb7c412babbe 28cargo install --git https://github.com/embassy-rs/cargo-embassy-devtool --locked --rev 3ca80f7065acbe0b69b7da463fab60e744f9de79
29 29
30./ci-xtensa.sh 30./ci-xtensa.sh
31 31
diff --git a/.github/ci/build.sh b/.github/ci/build.sh
index 59bcefed6..d7201aedb 100755
--- a/.github/ci/build.sh
+++ b/.github/ci/build.sh
@@ -28,7 +28,7 @@ fi
28hashtime restore /ci/cache/filetime.json || true 28hashtime restore /ci/cache/filetime.json || true
29hashtime save /ci/cache/filetime.json 29hashtime save /ci/cache/filetime.json
30 30
31cargo install --git https://github.com/embassy-rs/cargo-embassy-devtool --locked --rev 280829ad163f1444999468a57d28fb7c412babbe 31cargo install --git https://github.com/embassy-rs/cargo-embassy-devtool --locked --rev 3ca80f7065acbe0b69b7da463fab60e744f9de79
32 32
33./ci.sh 33./ci.sh
34 34
diff --git a/.github/ci/crlf.sh b/.github/ci/crlf.sh
deleted file mode 100755
index 69838ce88..000000000
--- a/.github/ci/crlf.sh
+++ /dev/null
@@ -1,17 +0,0 @@
1#!/bin/bash
2## on push branch~=gh-readonly-queue/main/.*
3## on pull_request
4
5set -euo pipefail
6
7FILES_WITH_CRLF=$(find ! -path "./.git/*" -not -type d | xargs file -N | (grep " CRLF " || true))
8
9if [ -z "$FILES_WITH_CRLF" ]; then
10 echo -e "No files with CRLF endings found."
11 exit 0
12else
13 NR_FILES=$(echo "$FILES_WITH_CRLF" | wc -l)
14 echo -e "ERROR: Found ${NR_FILES} files with CRLF endings."
15 echo "$FILES_WITH_CRLF"
16 exit "$NR_FILES"
17fi
diff --git a/.github/ci/doc.sh b/.github/ci/doc.sh
index 876c261a1..70ce110d1 100755
--- a/.github/ci/doc.sh
+++ b/.github/ci/doc.sh
@@ -9,62 +9,14 @@ set -euxo pipefail
9export RUSTUP_HOME=/ci/cache/rustup 9export RUSTUP_HOME=/ci/cache/rustup
10export CARGO_HOME=/ci/cache/cargo 10export CARGO_HOME=/ci/cache/cargo
11export CARGO_TARGET_DIR=/ci/cache/target 11export CARGO_TARGET_DIR=/ci/cache/target
12export BUILDER_THREADS=4 12export PATH=$CARGO_HOME/bin:$PATH
13export BUILDER_COMPRESS=true
14mv rust-toolchain-nightly.toml rust-toolchain.toml 13mv rust-toolchain-nightly.toml rust-toolchain.toml
15 14
16# force rustup to download the toolchain before starting building. 15cargo install --git https://github.com/embassy-rs/cargo-embassy-devtool --locked --rev 3ca80f7065acbe0b69b7da463fab60e744f9de79
17# Otherwise, the docs builder is running multiple instances of cargo rustdoc concurrently.
18# They all see the toolchain is not installed and try to install it in parallel
19# which makes rustup very sad
20rustc --version > /dev/null
21 16
22docserver build -i ./embassy-boot -o webroot/crates/embassy-boot/git.zup 17cargo embassy-devtool doc -o webroot
23docserver build -i ./embassy-boot-nrf -o webroot/crates/embassy-boot-nrf/git.zup
24docserver build -i ./embassy-boot-rp -o webroot/crates/embassy-boot-rp/git.zup
25docserver build -i ./embassy-boot-stm32 -o webroot/crates/embassy-boot-stm32/git.zup
26docserver build -i ./embassy-embedded-hal -o webroot/crates/embassy-embedded-hal/git.zup
27docserver build -i ./embassy-executor -o webroot/crates/embassy-executor/git.zup
28docserver build -i ./embassy-futures -o webroot/crates/embassy-futures/git.zup
29docserver build -i ./embassy-nrf -o webroot/crates/embassy-nrf/git.zup
30docserver build -i ./embassy-rp -o webroot/crates/embassy-rp/git.zup
31docserver build -i ./embassy-mspm0 -o webroot/crates/embassy-mspm0/git.zup
32docserver build -i ./embassy-nxp -o webroot/crates/embassy-nxp/git.zup
33docserver build -i ./embassy-sync -o webroot/crates/embassy-sync/git.zup
34docserver build -i ./cyw43 -o webroot/crates/cyw43/git.zup
35docserver build -i ./cyw43-pio -o webroot/crates/cyw43-pio/git.zup
36docserver build -i ./embassy-stm32-wpan -o webroot/crates/embassy-stm32-wpan/git.zup --output-static webroot/static
37
38docserver build -i ./embassy-time -o webroot/crates/embassy-time/git.zup
39docserver build -i ./embassy-time-driver -o webroot/crates/embassy-time-driver/git.zup
40docserver build -i ./embassy-time-queue-utils -o webroot/crates/embassy-time-queue-utils/git.zup
41
42docserver build -i ./embassy-usb -o webroot/crates/embassy-usb/git.zup
43docserver build -i ./embassy-usb-dfu -o webroot/crates/embassy-usb-dfu/git.zup
44docserver build -i ./embassy-usb-driver -o webroot/crates/embassy-usb-driver/git.zup
45docserver build -i ./embassy-usb-logger -o webroot/crates/embassy-usb-logger/git.zup
46docserver build -i ./embassy-usb-synopsys-otg -o webroot/crates/embassy-usb-synopsys-otg/git.zup
47
48docserver build -i ./embassy-net -o webroot/crates/embassy-net/git.zup
49docserver build -i ./embassy-net-nrf91 -o webroot/crates/embassy-net-nrf91/git.zup
50docserver build -i ./embassy-net-driver -o webroot/crates/embassy-net-driver/git.zup
51docserver build -i ./embassy-net-driver-channel -o webroot/crates/embassy-net-driver-channel/git.zup
52docserver build -i ./embassy-net-wiznet -o webroot/crates/embassy-net-wiznet/git.zup
53docserver build -i ./embassy-net-ppp -o webroot/crates/embassy-net-ppp/git.zup
54docserver build -i ./embassy-net-tuntap -o webroot/crates/embassy-net-tuntap/git.zup
55docserver build -i ./embassy-net-enc28j60 -o webroot/crates/embassy-net-enc28j60/git.zup
56docserver build -i ./embassy-net-esp-hosted -o webroot/crates/embassy-net-esp-hosted/git.zup
57docserver build -i ./embassy-net-adin1110 -o webroot/crates/embassy-net-adin1110/git.zup
58 18
59export KUBECONFIG=/ci/secrets/kubeconfig.yml 19export KUBECONFIG=/ci/secrets/kubeconfig.yml
60POD=$(kubectl -n embassy get po -l app=docserver -o jsonpath={.items[0].metadata.name}) 20POD=$(kubectl -n embassy get po -l app=docserver -o jsonpath={.items[0].metadata.name})
61kubectl cp webroot/crates $POD:/data 21kubectl cp webroot/crates $POD:/data
62kubectl cp webroot/static $POD:/data 22kubectl cp webroot/static $POD:/data
63
64# build and upload stm32 last
65# so that it doesn't prevent other crates from getting docs updates when it breaks.
66
67rm -rf webroot
68docserver build -i ./embassy-stm32 -o webroot/crates/embassy-stm32/git.zup
69POD=$(kubectl -n embassy get po -l app=docserver -o jsonpath={.items[0].metadata.name})
70kubectl cp webroot/crates $POD:/data
diff --git a/.github/ci/janitor.sh b/.github/ci/janitor.sh
new file mode 100755
index 000000000..bd04f47fc
--- /dev/null
+++ b/.github/ci/janitor.sh
@@ -0,0 +1,15 @@
1#!/bin/bash
2## on push branch~=gh-readonly-queue/main/.*
3## on pull_request
4
5set -euo pipefail
6
7export RUSTUP_HOME=/ci/cache/rustup
8export CARGO_HOME=/ci/cache/cargo
9export CARGO_TARGET_DIR=/ci/cache/target
10export PATH=$CARGO_HOME/bin:$PATH
11
12cargo install --git https://github.com/embassy-rs/cargo-embassy-devtool --locked --rev 3ca80f7065acbe0b69b7da463fab60e744f9de79
13
14cargo embassy-devtool check-crlf
15cargo embassy-devtool check-manifest
diff --git a/cyw43-pio/Cargo.toml b/cyw43-pio/Cargo.toml
index 40dd02f61..6ab5c453e 100644
--- a/cyw43-pio/Cargo.toml
+++ b/cyw43-pio/Cargo.toml
@@ -15,6 +15,9 @@ embassy-rp = { version = "0.8.0", path = "../embassy-rp" }
15fixed = "1.23.1" 15fixed = "1.23.1"
16defmt = { version = "1.0.1", optional = true } 16defmt = { version = "1.0.1", optional = true }
17 17
18[features]
19defmt = ["dep:defmt"]
20
18[package.metadata.embassy] 21[package.metadata.embassy]
19build = [ 22build = [
20 {target = "thumbv6m-none-eabi", features = ["embassy-rp/rp2040"]}, 23 {target = "thumbv6m-none-eabi", features = ["embassy-rp/rp2040"]},
diff --git a/embassy-boot-nrf/Cargo.toml b/embassy-boot-nrf/Cargo.toml
index 3b631ef0c..49dff061a 100644
--- a/embassy-boot-nrf/Cargo.toml
+++ b/embassy-boot-nrf/Cargo.toml
@@ -52,6 +52,7 @@ defmt = [
52 "embassy-boot/defmt", 52 "embassy-boot/defmt",
53 "embassy-nrf/defmt", 53 "embassy-nrf/defmt",
54] 54]
55log = ["dep:log"]
55softdevice = [ 56softdevice = [
56 "nrf-softdevice-mbr", 57 "dep:nrf-softdevice-mbr",
57] 58]
diff --git a/embassy-boot/Cargo.toml b/embassy-boot/Cargo.toml
index ed0242c13..a18438c81 100644
--- a/embassy-boot/Cargo.toml
+++ b/embassy-boot/Cargo.toml
@@ -45,6 +45,8 @@ critical-section = { version = "1.1.1", features = ["std"] }
45ed25519-dalek = { version = "2", default-features = false, features = ["std", "rand_core", "digest"] } 45ed25519-dalek = { version = "2", default-features = false, features = ["std", "rand_core", "digest"] }
46 46
47[features] 47[features]
48defmt = ["dep:defmt"]
49log = ["dep:log"]
48ed25519-dalek = ["dep:ed25519-dalek", "_verify"] 50ed25519-dalek = ["dep:ed25519-dalek", "_verify"]
49ed25519-salty = ["dep:salty", "_verify"] 51ed25519-salty = ["dep:salty", "_verify"]
50flash-erase-zero = [] 52flash-erase-zero = []
diff --git a/embassy-embedded-hal/Cargo.toml b/embassy-embedded-hal/Cargo.toml
index a66e01717..8b8122567 100644
--- a/embassy-embedded-hal/Cargo.toml
+++ b/embassy-embedded-hal/Cargo.toml
@@ -25,6 +25,7 @@ src_base_git = "https://github.com/embassy-rs/embassy/blob/$COMMIT/embassy-embed
25target = "x86_64-unknown-linux-gnu" 25target = "x86_64-unknown-linux-gnu"
26 26
27[features] 27[features]
28defmt = ["dep:defmt"]
28time = ["dep:embassy-time"] 29time = ["dep:embassy-time"]
29 30
30[dependencies] 31[dependencies]
diff --git a/embassy-executor/Cargo.toml b/embassy-executor/Cargo.toml
index f6dce5c0e..61d060630 100644
--- a/embassy-executor/Cargo.toml
+++ b/embassy-executor/Cargo.toml
@@ -123,6 +123,12 @@ rustversion = "1.0.21"
123## Enable nightly-only features 123## Enable nightly-only features
124nightly = ["embassy-executor-macros/nightly"] 124nightly = ["embassy-executor-macros/nightly"]
125 125
126## Enable defmt logging
127defmt = ["dep:defmt"]
128
129## Enable log logging
130log = ["dep:log"]
131
126# Enables turbo wakers, which requires patching core. Not surfaced in the docs by default due to 132# Enables turbo wakers, which requires patching core. Not surfaced in the docs by default due to
127# being an complicated advanced and undocumented feature. 133# being an complicated advanced and undocumented feature.
128# See: https://github.com/embassy-rs/embassy/pull/1263 134# See: https://github.com/embassy-rs/embassy/pull/1263
diff --git a/embassy-executor/tests/ui/spawn_nonsend.stderr b/embassy-executor/tests/ui/spawn_nonsend.stderr
index 25bd7d78d..5a3131602 100644
--- a/embassy-executor/tests/ui/spawn_nonsend.stderr
+++ b/embassy-executor/tests/ui/spawn_nonsend.stderr
@@ -9,7 +9,7 @@ warning: unused import: `core::future::Future`
9error[E0277]: `*mut ()` cannot be sent between threads safely 9error[E0277]: `*mut ()` cannot be sent between threads safely
10 --> tests/ui/spawn_nonsend.rs:13:13 10 --> tests/ui/spawn_nonsend.rs:13:13
11 | 11 |
127 | #[embassy_executor::task] 12 7 | #[embassy_executor::task]
13 | ------------------------- within this `impl Sized` 13 | ------------------------- within this `impl Sized`
14... 14...
1513 | s.spawn(task(core::ptr::null_mut()).unwrap()); 1513 | s.spawn(task(core::ptr::null_mut()).unwrap());
@@ -21,7 +21,7 @@ error[E0277]: `*mut ()` cannot be sent between threads safely
21note: required because it's used within this closure 21note: required because it's used within this closure
22 --> tests/ui/spawn_nonsend.rs:7:1 22 --> tests/ui/spawn_nonsend.rs:7:1
23 | 23 |
247 | #[embassy_executor::task] 24 7 | #[embassy_executor::task]
25 | ^^^^^^^^^^^^^^^^^^^^^^^^^ 25 | ^^^^^^^^^^^^^^^^^^^^^^^^^
26note: required because it appears within the type `impl Sized` 26note: required because it appears within the type `impl Sized`
27 --> src/raw/mod.rs 27 --> src/raw/mod.rs
@@ -31,7 +31,7 @@ note: required because it appears within the type `impl Sized`
31note: required because it appears within the type `impl Sized` 31note: required because it appears within the type `impl Sized`
32 --> tests/ui/spawn_nonsend.rs:7:1 32 --> tests/ui/spawn_nonsend.rs:7:1
33 | 33 |
347 | #[embassy_executor::task] 34 7 | #[embassy_executor::task]
35 | ^^^^^^^^^^^^^^^^^^^^^^^^^ 35 | ^^^^^^^^^^^^^^^^^^^^^^^^^
36note: required by a bound in `SendSpawner::spawn` 36note: required by a bound in `SendSpawner::spawn`
37 --> src/spawner.rs 37 --> src/spawner.rs
diff --git a/embassy-executor/tests/ui/unsafe_op_in_unsafe_task.stderr b/embassy-executor/tests/ui/unsafe_op_in_unsafe_task.stderr
index d987a4b95..033395584 100644
--- a/embassy-executor/tests/ui/unsafe_op_in_unsafe_task.stderr
+++ b/embassy-executor/tests/ui/unsafe_op_in_unsafe_task.stderr
@@ -4,7 +4,7 @@ error[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::rea
47 | (&x as *const i32).read(); 47 | (&x as *const i32).read();
5 | ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function 5 | ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
6 | 6 |
7 = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html> 7 = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
8 = note: consult the function's documentation for information on how to avoid undefined behavior 8 = note: consult the function's documentation for information on how to avoid undefined behavior
9note: an unsafe function restricts its caller, but its body is safe by default 9note: an unsafe function restricts its caller, but its body is safe by default
10 --> tests/ui/unsafe_op_in_unsafe_task.rs:5:1 10 --> tests/ui/unsafe_op_in_unsafe_task.rs:5:1
diff --git a/embassy-futures/Cargo.toml b/embassy-futures/Cargo.toml
index 2d62b28e5..07d5219cf 100644
--- a/embassy-futures/Cargo.toml
+++ b/embassy-futures/Cargo.toml
@@ -26,3 +26,7 @@ features = ["defmt"]
26[dependencies] 26[dependencies]
27defmt = { version = "1.0.1", optional = true } 27defmt = { version = "1.0.1", optional = true }
28log = { version = "0.4.14", optional = true } 28log = { version = "0.4.14", optional = true }
29
30[features]
31defmt = ["dep:defmt"]
32log = ["dep:log"]
diff --git a/embassy-hal-internal/Cargo.toml b/embassy-hal-internal/Cargo.toml
index b4c52ccfa..11dcc2466 100644
--- a/embassy-hal-internal/Cargo.toml
+++ b/embassy-hal-internal/Cargo.toml
@@ -14,6 +14,9 @@ categories = [
14 14
15[features] 15[features]
16 16
17defmt = ["dep:defmt"]
18log = ["dep:log"]
19
17# Define the number of NVIC priority bits. 20# Define the number of NVIC priority bits.
18prio-bits-0 = [] 21prio-bits-0 = []
19prio-bits-1 = [] 22prio-bits-1 = []
diff --git a/embassy-imxrt/Cargo.toml b/embassy-imxrt/Cargo.toml
index 8a9c1252e..7561640dd 100644
--- a/embassy-imxrt/Cargo.toml
+++ b/embassy-imxrt/Cargo.toml
@@ -2,7 +2,7 @@
2name = "embassy-imxrt" 2name = "embassy-imxrt"
3version = "0.1.0" 3version = "0.1.0"
4edition = "2021" 4edition = "2021"
5license = "MIT" 5license = "MIT OR Apache-2.0"
6description = "Embassy Hardware Abstraction Layer (HAL) for the IMXRT microcontroller" 6description = "Embassy Hardware Abstraction Layer (HAL) for the IMXRT microcontroller"
7keywords = ["embedded", "async", "imxrt", "rt600", "embedded-hal"] 7keywords = ["embedded", "async", "imxrt", "rt600", "embedded-hal"]
8categories = ["embedded", "hardware-support", "no-std", "asynchronous"] 8categories = ["embedded", "hardware-support", "no-std", "asynchronous"]
diff --git a/embassy-net-driver-channel/Cargo.toml b/embassy-net-driver-channel/Cargo.toml
index cf498c59f..1e40c2d87 100644
--- a/embassy-net-driver-channel/Cargo.toml
+++ b/embassy-net-driver-channel/Cargo.toml
@@ -28,3 +28,7 @@ log = { version = "0.4.14", optional = true }
28embassy-sync = { version = "0.7.2", path = "../embassy-sync" } 28embassy-sync = { version = "0.7.2", path = "../embassy-sync" }
29embassy-futures = { version = "0.1.2", path = "../embassy-futures" } 29embassy-futures = { version = "0.1.2", path = "../embassy-futures" }
30embassy-net-driver = { version = "0.2.0", path = "../embassy-net-driver" } 30embassy-net-driver = { version = "0.2.0", path = "../embassy-net-driver" }
31
32[features]
33defmt = ["dep:defmt"]
34log = ["dep:log"]
diff --git a/embassy-net-driver/Cargo.toml b/embassy-net-driver/Cargo.toml
index 34bc6c91a..a36e412ad 100644
--- a/embassy-net-driver/Cargo.toml
+++ b/embassy-net-driver/Cargo.toml
@@ -23,3 +23,6 @@ features = ["defmt"]
23 23
24[dependencies] 24[dependencies]
25defmt = { version = "1.0.1", optional = true } 25defmt = { version = "1.0.1", optional = true }
26
27[features]
28defmt = ["dep:defmt"]
diff --git a/embassy-net-enc28j60/Cargo.toml b/embassy-net-enc28j60/Cargo.toml
index a3e3285a3..e7bad118b 100644
--- a/embassy-net-enc28j60/Cargo.toml
+++ b/embassy-net-enc28j60/Cargo.toml
@@ -19,6 +19,10 @@ embassy-futures = { version = "0.1.2", path = "../embassy-futures" }
19defmt = { version = "1.0.1", optional = true } 19defmt = { version = "1.0.1", optional = true }
20log = { version = "0.4.14", optional = true } 20log = { version = "0.4.14", optional = true }
21 21
22[features]
23defmt = ["dep:defmt", "embassy-net-driver/defmt"]
24log = ["dep:log"]
25
22[package.metadata.embassy_docs] 26[package.metadata.embassy_docs]
23src_base = "https://github.com/embassy-rs/embassy/blob/embassy-net-enc28j60-v$VERSION/embassy-net-enc28j60/src/" 27src_base = "https://github.com/embassy-rs/embassy/blob/embassy-net-enc28j60-v$VERSION/embassy-net-enc28j60/src/"
24src_base_git = "https://github.com/embassy-rs/embassy/blob/$COMMIT/embassy-net-enc28j60/src/" 28src_base_git = "https://github.com/embassy-rs/embassy/blob/$COMMIT/embassy-net-enc28j60/src/"
diff --git a/embassy-net-wiznet/Cargo.toml b/embassy-net-wiznet/Cargo.toml
index 36c349df1..6e6dccebd 100644
--- a/embassy-net-wiznet/Cargo.toml
+++ b/embassy-net-wiznet/Cargo.toml
@@ -17,6 +17,9 @@ embassy-time = { version = "0.5.0", path = "../embassy-time" }
17embassy-futures = { version = "0.1.2", path = "../embassy-futures" } 17embassy-futures = { version = "0.1.2", path = "../embassy-futures" }
18defmt = { version = "1.0.1", optional = true } 18defmt = { version = "1.0.1", optional = true }
19 19
20[features]
21defmt = ["dep:defmt", "embassy-net-driver-channel/defmt"]
22
20[package.metadata.embassy_docs] 23[package.metadata.embassy_docs]
21src_base = "https://github.com/embassy-rs/embassy/blob/embassy-net-wiznet-v$VERSION/embassy-net-wiznet/src/" 24src_base = "https://github.com/embassy-rs/embassy/blob/embassy-net-wiznet-v$VERSION/embassy-net-wiznet/src/"
22src_base_git = "https://github.com/embassy-rs/embassy/blob/$COMMIT/embassy-net-wiznet/src/" 25src_base_git = "https://github.com/embassy-rs/embassy/blob/$COMMIT/embassy-net-wiznet/src/"
diff --git a/embassy-net/Cargo.toml b/embassy-net/Cargo.toml
index 61a2c858a..31ce7e9a6 100644
--- a/embassy-net/Cargo.toml
+++ b/embassy-net/Cargo.toml
@@ -53,6 +53,8 @@ features = ["defmt", "tcp", "udp", "raw", "dns", "icmp", "dhcpv4", "proto-ipv6",
53[features] 53[features]
54## Enable defmt 54## Enable defmt
55defmt = ["dep:defmt", "smoltcp/defmt", "embassy-net-driver/defmt", "embassy-time/defmt", "heapless/defmt-03", "defmt?/ip_in_core"] 55defmt = ["dep:defmt", "smoltcp/defmt", "embassy-net-driver/defmt", "embassy-time/defmt", "heapless/defmt-03", "defmt?/ip_in_core"]
56## Enable log
57log = ["dep:log"]
56 58
57## Trace all raw received and transmitted packets using defmt or log. 59## Trace all raw received and transmitted packets using defmt or log.
58packet-trace = [] 60packet-trace = []
diff --git a/embassy-nrf/CHANGELOG.md b/embassy-nrf/CHANGELOG.md
index 7c783c2d4..0fedf9360 100644
--- a/embassy-nrf/CHANGELOG.md
+++ b/embassy-nrf/CHANGELOG.md
@@ -12,6 +12,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
12- changed: Add embassy-net-driver-channel implementation for IEEE 802.15.4 12- changed: Add embassy-net-driver-channel implementation for IEEE 802.15.4
13- changed: add persist() method for gpio and ppi 13- changed: add persist() method for gpio and ppi
14- added: basic RTC driver 14- added: basic RTC driver
15- changed: add persist() method for gpio, gpiote, timer and ppi
16- changed: impl Drop for Timer
15 17
16## 0.7.0 - 2025-08-26 18## 0.7.0 - 2025-08-26
17 19
diff --git a/embassy-nrf/Cargo.toml b/embassy-nrf/Cargo.toml
index 4afd28fbd..1af633500 100644
--- a/embassy-nrf/Cargo.toml
+++ b/embassy-nrf/Cargo.toml
@@ -66,6 +66,8 @@ time = ["dep:embassy-time", "embassy-embedded-hal/time"]
66 66
67## Enable defmt 67## Enable defmt
68defmt = ["dep:defmt", "embassy-hal-internal/defmt", "embassy-sync/defmt", "embassy-usb-driver/defmt", "embassy-embedded-hal/defmt"] 68defmt = ["dep:defmt", "embassy-hal-internal/defmt", "embassy-sync/defmt", "embassy-usb-driver/defmt", "embassy-embedded-hal/defmt"]
69## Enable log
70log = ["dep:log"]
69 71
70## Reexport the PAC for the currently enabled chip at `embassy_nrf::pac` (unstable) 72## Reexport the PAC for the currently enabled chip at `embassy_nrf::pac` (unstable)
71unstable-pac = [] 73unstable-pac = []
diff --git a/embassy-nrf/src/gpiote.rs b/embassy-nrf/src/gpiote.rs
index d169b49f9..43e43f0bf 100644
--- a/embassy-nrf/src/gpiote.rs
+++ b/embassy-nrf/src/gpiote.rs
@@ -193,6 +193,15 @@ pub struct InputChannel<'d> {
193 pin: Input<'d>, 193 pin: Input<'d>,
194} 194}
195 195
196impl InputChannel<'static> {
197 /// Persist the channel's configuration for the rest of the program's lifetime. This method
198 /// should be preferred over [`core::mem::forget()`] because the `'static` bound prevents
199 /// accidental reuse of the underlying peripheral.
200 pub fn persist(self) {
201 core::mem::forget(self);
202 }
203}
204
196impl<'d> Drop for InputChannel<'d> { 205impl<'d> Drop for InputChannel<'d> {
197 fn drop(&mut self) { 206 fn drop(&mut self) {
198 let g = regs(); 207 let g = regs();
@@ -263,6 +272,15 @@ pub struct OutputChannel<'d> {
263 _pin: Output<'d>, 272 _pin: Output<'d>,
264} 273}
265 274
275impl OutputChannel<'static> {
276 /// Persist the channel's configuration for the rest of the program's lifetime. This method
277 /// should be preferred over [`core::mem::forget()`] because the `'static` bound prevents
278 /// accidental reuse of the underlying peripheral.
279 pub fn persist(self) {
280 core::mem::forget(self);
281 }
282}
283
266impl<'d> Drop for OutputChannel<'d> { 284impl<'d> Drop for OutputChannel<'d> {
267 fn drop(&mut self) { 285 fn drop(&mut self) {
268 let g = regs(); 286 let g = regs();
diff --git a/embassy-nrf/src/timer.rs b/embassy-nrf/src/timer.rs
index de2875765..5d6afe49b 100644
--- a/embassy-nrf/src/timer.rs
+++ b/embassy-nrf/src/timer.rs
@@ -104,7 +104,7 @@ impl<'d, T: Instance> Timer<'d, T> {
104 Self::new_inner(timer, true) 104 Self::new_inner(timer, true)
105 } 105 }
106 106
107 fn new_inner(timer: Peri<'d, T>, _is_counter: bool) -> Self { 107 fn new_inner(timer: Peri<'d, T>, is_counter: bool) -> Self {
108 let regs = T::regs(); 108 let regs = T::regs();
109 109
110 let this = Self { _p: timer }; 110 let this = Self { _p: timer };
@@ -114,7 +114,7 @@ impl<'d, T: Instance> Timer<'d, T> {
114 this.stop(); 114 this.stop();
115 115
116 regs.mode().write(|w| { 116 regs.mode().write(|w| {
117 w.set_mode(match _is_counter { 117 w.set_mode(match is_counter {
118 #[cfg(not(feature = "_nrf51"))] 118 #[cfg(not(feature = "_nrf51"))]
119 true => vals::Mode::LOW_POWER_COUNTER, 119 true => vals::Mode::LOW_POWER_COUNTER,
120 #[cfg(feature = "_nrf51")] 120 #[cfg(feature = "_nrf51")]
@@ -218,6 +218,21 @@ impl<'d, T: Instance> Timer<'d, T> {
218 } 218 }
219} 219}
220 220
221impl<T: Instance> Timer<'static, T> {
222 /// Persist the timer's configuration for the rest of the program's lifetime. This method
223 /// should be preferred over [`core::mem::forget()`] because the `'static` bound prevents
224 /// accidental reuse of the underlying peripheral.
225 pub fn persist(self) {
226 core::mem::forget(self);
227 }
228}
229
230impl<'d, T: Instance> Drop for Timer<'d, T> {
231 fn drop(&mut self) {
232 self.stop();
233 }
234}
235
221/// A representation of a timer's Capture/Compare (CC) register. 236/// A representation of a timer's Capture/Compare (CC) register.
222/// 237///
223/// A CC register holds a 32-bit value. 238/// A CC register holds a 32-bit value.
diff --git a/embassy-nxp/Cargo.toml b/embassy-nxp/Cargo.toml
index 455915f29..073fdabe4 100644
--- a/embassy-nxp/Cargo.toml
+++ b/embassy-nxp/Cargo.toml
@@ -2,6 +2,7 @@
2name = "embassy-nxp" 2name = "embassy-nxp"
3version = "0.1.0" 3version = "0.1.0"
4edition = "2021" 4edition = "2021"
5license = "MIT OR Apache-2.0"
5 6
6publish = false 7publish = false
7 8
diff --git a/embassy-rp/Cargo.toml b/embassy-rp/Cargo.toml
index 101914a36..f6b0900f2 100644
--- a/embassy-rp/Cargo.toml
+++ b/embassy-rp/Cargo.toml
@@ -45,6 +45,10 @@ rt = [ "rp-pac/rt" ]
45 45
46## Enable [defmt support](https://docs.rs/defmt) and enables `defmt` debug-log messages and formatting in embassy drivers. 46## Enable [defmt support](https://docs.rs/defmt) and enables `defmt` debug-log messages and formatting in embassy drivers.
47defmt = ["dep:defmt", "embassy-usb-driver/defmt", "embassy-hal-internal/defmt"] 47defmt = ["dep:defmt", "embassy-usb-driver/defmt", "embassy-hal-internal/defmt"]
48## Enable log support
49log = ["dep:log"]
50## Enable chrono support
51chrono = ["dep:chrono"]
48 52
49## Configure the [`critical-section`](https://docs.rs/critical-section) crate to use an implementation that is safe for multicore use on rp2040. 53## Configure the [`critical-section`](https://docs.rs/critical-section) crate to use an implementation that is safe for multicore use on rp2040.
50critical-section-impl = ["critical-section/restore-state-u8"] 54critical-section-impl = ["critical-section/restore-state-u8"]
diff --git a/embassy-stm32/Cargo.toml b/embassy-stm32/Cargo.toml
index 6cd8ed262..369fabc50 100644
--- a/embassy-stm32/Cargo.toml
+++ b/embassy-stm32/Cargo.toml
@@ -225,6 +225,10 @@ defmt = [
225 "embassy-usb-synopsys-otg/defmt", 225 "embassy-usb-synopsys-otg/defmt",
226 "stm32-metapac/defmt" 226 "stm32-metapac/defmt"
227] 227]
228## Use log for logging
229log = ["dep:log"]
230## Enable chrono support
231chrono = ["dep:chrono"]
228 232
229exti = [] 233exti = []
230low-power = [ "dep:embassy-executor", "embassy-executor?/arch-cortex-m", "time" ] 234low-power = [ "dep:embassy-executor", "embassy-executor?/arch-cortex-m", "time" ]
diff --git a/embassy-sync/Cargo.toml b/embassy-sync/Cargo.toml
index 6494da727..64d76baba 100644
--- a/embassy-sync/Cargo.toml
+++ b/embassy-sync/Cargo.toml
@@ -27,6 +27,8 @@ src_base_git = "https://github.com/embassy-rs/embassy/blob/$COMMIT/embassy-sync/
27target = "thumbv7em-none-eabi" 27target = "thumbv7em-none-eabi"
28 28
29[features] 29[features]
30defmt = ["dep:defmt"]
31log = ["dep:log"]
30std = [] 32std = []
31turbowakers = [] 33turbowakers = []
32 34
diff --git a/embassy-sync/tests/ui/sync_impl/lazy_lock_function.stderr b/embassy-sync/tests/ui/sync_impl/lazy_lock_function.stderr
index daf79ad28..417fb8e31 100644
--- a/embassy-sync/tests/ui/sync_impl/lazy_lock_function.stderr
+++ b/embassy-sync/tests/ui/sync_impl/lazy_lock_function.stderr
@@ -1,10 +1,10 @@
1error[E0277]: `*const u8` cannot be shared between threads safely 1error[E0277]: `*const u8` cannot be shared between threads safely
2 --> tests/ui/sync_impl/lazy_lock_function.rs:8:16 2 --> tests/ui/sync_impl/lazy_lock_function.rs:8:16
3 | 3 |
46 | let closure_capturing_non_sync_variable = || unsafe { core::ptr::read(x_ptr) }; 4 6 | let closure_capturing_non_sync_variable = || unsafe { core::ptr::read(x_ptr) };
5 | -- within this `{closure@$DIR/tests/ui/sync_impl/lazy_lock_function.rs:6:47: 6:49}` 5 | -- within this `{closure@$DIR/tests/ui/sync_impl/lazy_lock_function.rs:6:47: 6:49}`
67 | 6 7 |
78 | check_sync(LazyLock::new(closure_capturing_non_sync_variable)); 7 8 | check_sync(LazyLock::new(closure_capturing_non_sync_variable));
8 | ---------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `*const u8` cannot be shared between threads safely 8 | ---------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `*const u8` cannot be shared between threads safely
9 | | 9 | |
10 | required by a bound introduced by this call 10 | required by a bound introduced by this call
@@ -14,7 +14,7 @@ error[E0277]: `*const u8` cannot be shared between threads safely
14note: required because it's used within this closure 14note: required because it's used within this closure
15 --> tests/ui/sync_impl/lazy_lock_function.rs:6:47 15 --> tests/ui/sync_impl/lazy_lock_function.rs:6:47
16 | 16 |
176 | let closure_capturing_non_sync_variable = || unsafe { core::ptr::read(x_ptr) }; 17 6 | let closure_capturing_non_sync_variable = || unsafe { core::ptr::read(x_ptr) };
18 | ^^ 18 | ^^
19 = note: required for `embassy_sync::lazy_lock::LazyLock<u8, {closure@$DIR/tests/ui/sync_impl/lazy_lock_function.rs:6:47: 6:49}>` to implement `Sync` 19 = note: required for `embassy_sync::lazy_lock::LazyLock<u8, {closure@$DIR/tests/ui/sync_impl/lazy_lock_function.rs:6:47: 6:49}>` to implement `Sync`
20note: required by a bound in `check_sync` 20note: required by a bound in `check_sync`
diff --git a/embassy-time/Cargo.toml b/embassy-time/Cargo.toml
index 2d7c3c1fa..bad6ecf97 100644
--- a/embassy-time/Cargo.toml
+++ b/embassy-time/Cargo.toml
@@ -31,6 +31,11 @@ target = "x86_64-unknown-linux-gnu"
31features = ["defmt", "std"] 31features = ["defmt", "std"]
32 32
33[features] 33[features]
34## Enable defmt
35defmt = ["dep:defmt"]
36## Enable log
37log = ["dep:log"]
38
34## Display the time since startup next to defmt log messages. 39## Display the time since startup next to defmt log messages.
35## At most 1 `defmt-timestamp-uptime-*` feature can be used. 40## At most 1 `defmt-timestamp-uptime-*` feature can be used.
36## `defmt-timestamp-uptime` is provided for backwards compatibility (provides the same format as `uptime-us`). 41## `defmt-timestamp-uptime` is provided for backwards compatibility (provides the same format as `uptime-us`).
diff --git a/embassy-usb-dfu/Cargo.toml b/embassy-usb-dfu/Cargo.toml
index 4a65c6895..e70ab970e 100644
--- a/embassy-usb-dfu/Cargo.toml
+++ b/embassy-usb-dfu/Cargo.toml
@@ -49,6 +49,9 @@ esp32c3-hal = { version = "0.13.0", optional = true, default-features = false }
49dfu = [] 49dfu = []
50application = [] 50application = []
51defmt = ["dep:defmt", "embassy-boot/defmt", "embassy-usb/defmt"] 51defmt = ["dep:defmt", "embassy-boot/defmt", "embassy-usb/defmt"]
52log = ["dep:log"]
53cortex-m = ["dep:cortex-m"]
54esp32c3-hal = ["dep:esp32c3-hal"]
52ed25519-dalek = ["embassy-boot/ed25519-dalek", "_verify"] 55ed25519-dalek = ["embassy-boot/ed25519-dalek", "_verify"]
53ed25519-salty = ["embassy-boot/ed25519-salty", "_verify"] 56ed25519-salty = ["embassy-boot/ed25519-salty", "_verify"]
54 57
diff --git a/embassy-usb-driver/Cargo.toml b/embassy-usb-driver/Cargo.toml
index de69bf694..6e4c31273 100644
--- a/embassy-usb-driver/Cargo.toml
+++ b/embassy-usb-driver/Cargo.toml
@@ -21,3 +21,6 @@ features = ["defmt"]
21[dependencies] 21[dependencies]
22embedded-io-async = "0.6.1" 22embedded-io-async = "0.6.1"
23defmt = { version = "1", optional = true } 23defmt = { version = "1", optional = true }
24
25[features]
26defmt = ["dep:defmt"]
diff --git a/embassy-usb-synopsys-otg/Cargo.toml b/embassy-usb-synopsys-otg/Cargo.toml
index ec518ac93..61b14a215 100644
--- a/embassy-usb-synopsys-otg/Cargo.toml
+++ b/embassy-usb-synopsys-otg/Cargo.toml
@@ -23,3 +23,7 @@ embassy-usb-driver = { version = "0.2.0", path = "../embassy-usb-driver" }
23 23
24defmt = { version = "1.0.1", optional = true } 24defmt = { version = "1.0.1", optional = true }
25log = { version = "0.4.14", optional = true } 25log = { version = "0.4.14", optional = true }
26
27[features]
28defmt = ["dep:defmt", "embassy-usb-driver/defmt"]
29log = ["dep:log"]
diff --git a/embassy-usb/Cargo.toml b/embassy-usb/Cargo.toml
index e309eec93..bff48c4a6 100644
--- a/embassy-usb/Cargo.toml
+++ b/embassy-usb/Cargo.toml
@@ -31,6 +31,7 @@ features = ["defmt", "usbd-hid"]
31 31
32[features] 32[features]
33defmt = ["dep:defmt", "embassy-usb-driver/defmt"] 33defmt = ["dep:defmt", "embassy-usb-driver/defmt"]
34log = ["dep:log"]
34usbd-hid = ["dep:usbd-hid", "dep:ssmarshal"] 35usbd-hid = ["dep:usbd-hid", "dep:ssmarshal"]
35default = ["usbd-hid"] 36default = ["usbd-hid"]
36 37
diff --git a/examples/mimxrt1011/Cargo.toml b/examples/mimxrt1011/Cargo.toml
index 488f3167b..3038f5d4d 100644
--- a/examples/mimxrt1011/Cargo.toml
+++ b/examples/mimxrt1011/Cargo.toml
@@ -2,7 +2,7 @@
2name = "embassy-imxrt1011-examples" 2name = "embassy-imxrt1011-examples"
3version = "0.1.0" 3version = "0.1.0"
4edition = "2021" 4edition = "2021"
5license = "MIT or Apache-2.0" 5license = "MIT OR Apache-2.0"
6publish = false 6publish = false
7 7
8[dependencies] 8[dependencies]
diff --git a/examples/mimxrt1062-evk/Cargo.toml b/examples/mimxrt1062-evk/Cargo.toml
index ec6c5c872..82a24490d 100644
--- a/examples/mimxrt1062-evk/Cargo.toml
+++ b/examples/mimxrt1062-evk/Cargo.toml
@@ -2,7 +2,7 @@
2name = "embassy-imxrt1062-evk-examples" 2name = "embassy-imxrt1062-evk-examples"
3version = "0.1.0" 3version = "0.1.0"
4edition = "2021" 4edition = "2021"
5license = "MIT or Apache-2.0" 5license = "MIT OR Apache-2.0"
6publish = false 6publish = false
7 7
8[dependencies] 8[dependencies]
diff --git a/examples/mimxrt6/Cargo.toml b/examples/mimxrt6/Cargo.toml
index 28de9d273..3f7ad8485 100644
--- a/examples/mimxrt6/Cargo.toml
+++ b/examples/mimxrt6/Cargo.toml
@@ -2,7 +2,7 @@
2name = "embassy-imxrt-examples" 2name = "embassy-imxrt-examples"
3version = "0.1.0" 3version = "0.1.0"
4edition = "2021" 4edition = "2021"
5license = "MIT or Apache-2.0" 5license = "MIT OR Apache-2.0"
6publish = false 6publish = false
7 7
8[dependencies] 8[dependencies]
diff --git a/rust-toolchain-nightly.toml b/rust-toolchain-nightly.toml
index 411cc6946..d3e88c7e1 100644
--- a/rust-toolchain-nightly.toml
+++ b/rust-toolchain-nightly.toml
@@ -1,5 +1,5 @@
1[toolchain] 1[toolchain]
2channel = "nightly-2025-06-29" 2channel = "nightly-2025-08-05"
3components = [ "rust-src", "rustfmt", "llvm-tools", "miri" ] 3components = [ "rust-src", "rustfmt", "llvm-tools", "miri" ]
4targets = [ 4targets = [
5 "thumbv7em-none-eabi", 5 "thumbv7em-none-eabi",
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
index e24864037..5d925c934 100644
--- a/rust-toolchain.toml
+++ b/rust-toolchain.toml
@@ -1,5 +1,5 @@
1[toolchain] 1[toolchain]
2channel = "1.88" 2channel = "1.90"
3components = [ "rust-src", "rustfmt", "llvm-tools" ] 3components = [ "rust-src", "rustfmt", "llvm-tools" ]
4targets = [ 4targets = [
5 "thumbv7em-none-eabi", 5 "thumbv7em-none-eabi",
diff --git a/tests/perf-client/Cargo.toml b/tests/perf-client/Cargo.toml
index 581b60d6f..c426fdd74 100644
--- a/tests/perf-client/Cargo.toml
+++ b/tests/perf-client/Cargo.toml
@@ -2,6 +2,7 @@
2name = "perf-client" 2name = "perf-client"
3version = "0.1.0" 3version = "0.1.0"
4edition = "2021" 4edition = "2021"
5license = "MIT OR Apache-2.0"
5publish = false 6publish = false
6 7
7[dependencies] 8[dependencies]
diff --git a/tests/perf-server/Cargo.toml b/tests/perf-server/Cargo.toml
index 22614a33a..f048eade2 100644
--- a/tests/perf-server/Cargo.toml
+++ b/tests/perf-server/Cargo.toml
@@ -2,6 +2,7 @@
2name = "perf-server" 2name = "perf-server"
3version = "0.1.0" 3version = "0.1.0"
4edition = "2021" 4edition = "2021"
5license = "MIT OR Apache-2.0"
5publish = false 6publish = false
6 7
7[dependencies] 8[dependencies]
diff --git a/tests/utils/Cargo.toml b/tests/utils/Cargo.toml
index f76feaa20..ddb990e0f 100644
--- a/tests/utils/Cargo.toml
+++ b/tests/utils/Cargo.toml
@@ -2,6 +2,7 @@
2name = "test-utils" 2name = "test-utils"
3version = "0.1.0" 3version = "0.1.0"
4edition = "2021" 4edition = "2021"
5license = "MIT OR Apache-2.0"
5publish = false 6publish = false
6 7
7[dependencies] 8[dependencies]