From fe86710af73ddb949ddb32830449fb8d3a72c23f Mon Sep 17 00:00:00 2001 From: Connor Fitzgerald Date: Wed, 20 Aug 2025 17:16:58 -0400 Subject: [PATCH] Properly enable getrandom in nanorand (#8098) --- .cargo/config.toml | 4 ++++ .github/workflows/ci.yml | 5 +++++ Cargo.lock | 6 ++++++ Cargo.toml | 1 + examples/features/Cargo.toml | 3 ++- examples/features/src/repeated_compute/mod.rs | 4 +++- 6 files changed, 21 insertions(+), 2 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index b97153d60..16bb81503 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,2 +1,6 @@ [alias] xtask = "run -p wgpu-xtask --" + +# Needed until https://github.com/rust-random/getrandom/issues/675 is resolved. +[target.wasm32-unknown-unknown] +rustflags = ["--cfg", "getrandom_backend=\"wasm_js\""] diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 92c45fa7a..cc913c35f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -261,6 +261,8 @@ jobs: run: | set -e + export RUSTFLAGS="$RUSTFLAGS --cfg getrandom_backend=\"wasm_js\"" + # build for WebGPU cargo clippy --target ${{ matrix.target }} ${{ matrix.extra-flags }} --tests --features glsl,spirv,fragile-send-sync-non-atomic-wasm cargo clippy --target ${{ matrix.target }} ${{ matrix.extra-flags }} --tests --features glsl,spirv @@ -487,6 +489,9 @@ jobs: - name: Execute tests run: | cd wgpu + + export RUSTFLAGS="$RUSTFLAGS --cfg getrandom_backend=\"wasm_js\"" + wasm-pack test --headless --chrome --no-default-features --features wgsl,webgl,web --workspace gpu-test: diff --git a/Cargo.lock b/Cargo.lock index 2d3f7dcd1..f4812d64f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1724,9 +1724,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", ] [[package]] @@ -2581,6 +2583,9 @@ name = "nanorand" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e3d189da485332e96ba8a5ef646a311871abd7915bf06ac848a9117f19cf6e4" +dependencies = [ + "getrandom 0.3.3", +] [[package]] name = "nanoserde" @@ -5044,6 +5049,7 @@ dependencies = [ "env_logger", "fern", "flume", + "getrandom 0.3.3", "glam", "ktx2", "log", diff --git a/Cargo.toml b/Cargo.toml index c07c3986f..ceea21bb8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -116,6 +116,7 @@ env_logger = { version = "0.11", default-features = false } fern = "0.7" flume = "0.11" futures-lite = "2" +getrandom = "0.3" glam = "0.30" glob = "0.3" half = { version = "2.5", default-features = false } # We require 2.5 to have `Arbitrary` support. diff --git a/examples/features/Cargo.toml b/examples/features/Cargo.toml index b11ba7fc8..85c777f48 100644 --- a/examples/features/Cargo.toml +++ b/examples/features/Cargo.toml @@ -35,10 +35,11 @@ bytemuck.workspace = true cfg-if.workspace = true encase = { workspace = true, features = ["glam"] } flume.workspace = true +getrandom = { workspace = true, features = ["wasm_js"] } glam = { workspace = true, features = ["bytemuck"] } ktx2.workspace = true log.workspace = true -nanorand = { workspace = true, features = ["tls"] } +nanorand = { workspace = true, features = ["getrandom"] } noise.workspace = true obj.workspace = true png.workspace = true diff --git a/examples/features/src/repeated_compute/mod.rs b/examples/features/src/repeated_compute/mod.rs index 2b9b19995..f6104d948 100644 --- a/examples/features/src/repeated_compute/mod.rs +++ b/examples/features/src/repeated_compute/mod.rs @@ -13,9 +13,11 @@ async fn run() { let mut numbers = [0u32; 256]; let context = WgpuContext::new(size_of_val(&numbers)).await; + let mut rand = nanorand::WyRand::new(); + for _ in 0..10 { for p in numbers.iter_mut() { - *p = nanorand::tls_rng().generate::() as u32; + *p = rand.generate::() as u32; } compute(&mut numbers, &context).await;