From b28534553a2f0bf2daa48e2d069e38dfd65b913b Mon Sep 17 00:00:00 2001 From: Denis Loginov Date: Tue, 23 Sep 2025 15:27:01 -0400 Subject: [PATCH 1/4] Add Dockerfile for tests --- .dockerignore | 8 ++++++++ Dockerfile | 6 ++++++ 2 files changed, 14 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..2a75b70 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +.git* +target/ + +*.lock +*.md +*.txt +.dockerignore +Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..beca10a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,6 @@ +FROM rustlang/rust:nightly + +WORKDIR /app +COPY . . + +RUN cargo test From 3ea37b3cdd93cc468042d880303f71a9cb99630b Mon Sep 17 00:00:00 2001 From: Denis Loginov Date: Tue, 23 Sep 2025 23:11:08 -0400 Subject: [PATCH 2/4] Initial adaptation to wasm32 --- .cargo/config.toml | 2 ++ .dockerignore | 2 +- Dockerfile | 6 ------ Dockerfile.test | 10 ++++++++++ src/barriers.rs | 9 +++++++++ src/lib.rs | 3 +++ 6 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 .cargo/config.toml delete mode 100644 Dockerfile create mode 100644 Dockerfile.test diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..8a35bfa --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,2 @@ +[target.wasm32-unknown-unknown] +runner = "wasmtime run" diff --git a/.dockerignore b/.dockerignore index 2a75b70..ad3fd8f 100644 --- a/.dockerignore +++ b/.dockerignore @@ -5,4 +5,4 @@ target/ *.md *.txt .dockerignore -Dockerfile +Dockerfile* diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index beca10a..0000000 --- a/Dockerfile +++ /dev/null @@ -1,6 +0,0 @@ -FROM rustlang/rust:nightly - -WORKDIR /app -COPY . . - -RUN cargo test diff --git a/Dockerfile.test b/Dockerfile.test new file mode 100644 index 0000000..ed159c2 --- /dev/null +++ b/Dockerfile.test @@ -0,0 +1,10 @@ +FROM rustlang/rust:nightly + +RUN rustup target add wasm32-unknown-unknown && \ + cargo install wasmtime-cli + +WORKDIR /app +COPY . . + +RUN cargo test +RUN cargo test --target wasm32-unknown-unknown diff --git a/src/barriers.rs b/src/barriers.rs index 45b3ae0..eecfc14 100644 --- a/src/barriers.rs +++ b/src/barriers.rs @@ -157,6 +157,7 @@ #[inline(always)] pub fn optimization_barrier_u8(mut value: u8) -> u8 { unsafe { + #[cfg(not(target_arch = "wasm32"))] std::arch::asm!( // Rust requires us to use every register defined, so we use it inside of a comment. "/* optimization_barrier_u8 {unused} */", @@ -169,6 +170,14 @@ pub fn optimization_barrier_u8(mut value: u8) -> u8 { // Since the assembly block is a no-op, we easily uphold all of these invariants. options(pure, nomem, nostack, preserves_flags) ); + + // WebAssembly only supports local class + #[cfg(target_arch = "wasm32")] + std::arch::asm!( + "/* optimization_barrier_u8 {unused} */", + unused = inout(local) value, + options(pure, nomem, nostack, preserves_flags) + ); } value diff --git a/src/lib.rs b/src/lib.rs index da67333..7cae6a1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -21,6 +21,9 @@ //! page](https://www.chosenplaintext.ca/open-source/rust-timing-shield/getting-started) for more //! information. +#![feature(min_specialization)] +#![cfg_attr(target_arch = "wasm32", feature(asm_experimental_arch))] + #[cfg(test)] extern crate quickcheck; From 7a71acae0c87e41afb8b7a5ff003d4771015d7cc Mon Sep 17 00:00:00 2001 From: Denis Loginov Date: Fri, 26 Sep 2025 17:01:24 -0400 Subject: [PATCH 3/4] Remove min_specialization --- src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 7cae6a1..ea1bf8d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -21,7 +21,6 @@ //! page](https://www.chosenplaintext.ca/open-source/rust-timing-shield/getting-started) for more //! information. -#![feature(min_specialization)] #![cfg_attr(target_arch = "wasm32", feature(asm_experimental_arch))] #[cfg(test)] From 3d7fa1dbf473a188ce01b602265fb995a9d5b99b Mon Sep 17 00:00:00 2001 From: Denis Loginov Date: Fri, 26 Sep 2025 17:02:12 -0400 Subject: [PATCH 4/4] Remove blank space --- src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index ea1bf8d..d18e966 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -22,7 +22,6 @@ //! information. #![cfg_attr(target_arch = "wasm32", feature(asm_experimental_arch))] - #[cfg(test)] extern crate quickcheck;