From bef7bf0bb4095f69cf5356463e4ff11a72c7b87e Mon Sep 17 00:00:00 2001 From: Eduard-Mihai Burtescu Date: Wed, 22 Mar 2023 18:41:15 +0200 Subject: [PATCH] `run-wasm` helper (`cargo-run-wasm`) for testing the wgpu runner on the web. --- .cargo/config | 4 + Cargo.lock | 248 +++++++++++++++++++++++++++++++++- Cargo.toml | 1 + deny.toml | 1 + examples/run-wasm/Cargo.toml | 12 ++ examples/run-wasm/src/main.rs | 3 + 6 files changed, 266 insertions(+), 3 deletions(-) create mode 100644 examples/run-wasm/Cargo.toml create mode 100644 examples/run-wasm/src/main.rs diff --git a/.cargo/config b/.cargo/config index 22dcbe588c..fe7fd9ebac 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,5 +1,9 @@ [alias] compiletest = "run --release -p compiletests --" +run-wasm = ["run", "--release", "-p", "run-wasm", "--"] + +[target.'cfg(target_arch = "wasm32")'] +rustflags = ["--cfg=web_sys_unstable_apis"] [target.'cfg(all())'] rustflags = [ diff --git a/Cargo.lock b/Cargo.lock index 8eae1512a5..9a424212e6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -201,6 +201,16 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "base64" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" +dependencies = [ + "byteorder", + "safemem", +] + [[package]] name = "base64" version = "0.13.0" @@ -304,6 +314,18 @@ dependencies = [ "vec_map", ] +[[package]] +name = "cargo-run-wasm" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc1e37cf14ef470ed74ec2a8b95e51b8623bcf6f76d24f233ebaeb209f766230" +dependencies = [ + "devserver_lib", + "pico-args", + "serde_json", + "wasm-bindgen-cli-support", +] + [[package]] name = "cc" version = "1.0.72" @@ -593,6 +615,12 @@ dependencies = [ "syn", ] +[[package]] +name = "devserver_lib" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb4b71acc1405be2431a93892a79a0d82ed5ba6885649ddbdfc62caa4d67b1c" + [[package]] name = "diff" version = "0.1.12" @@ -1070,6 +1098,12 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +[[package]] +name = "id-arena" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" + [[package]] name = "indexmap" version = "1.9.2" @@ -1216,6 +1250,12 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +[[package]] +name = "leb128" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" + [[package]] name = "libc" version = "0.2.140" @@ -1703,6 +1743,12 @@ dependencies = [ "indexmap", ] +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + [[package]] name = "pin-project-lite" version = "0.2.7" @@ -1736,7 +1782,7 @@ version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd39bc6cdc9355ad1dc5eeedefee696bb35c34caf21768741e81826c0bbd7225" dependencies = [ - "base64", + "base64 0.13.0", "indexmap", "line-wrap", "serde", @@ -1969,6 +2015,13 @@ dependencies = [ "spirv", ] +[[package]] +name = "run-wasm" +version = "0.0.0" +dependencies = [ + "cargo-run-wasm", +] + [[package]] name = "rustc-demangle" version = "0.1.21" @@ -2152,9 +2205,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.73" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcbd0344bc6533bc7ec56df11d42fb70f1b912351c0825ccb7211b59d8af7cf5" +checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" dependencies = [ "itoa 1.0.1", "ryu", @@ -2573,6 +2626,32 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "walrus" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eb08e48cde54c05f363d984bb54ce374f49e242def9468d2e1b6c2372d291f8" +dependencies = [ + "anyhow", + "id-arena", + "leb128", + "log", + "walrus-macro", + "wasmparser 0.77.0", +] + +[[package]] +name = "walrus-macro" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e5bd22c71e77d60140b0bd5be56155a37e5bd14e24f5f87298040d0cc40d7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "wasi" version = "0.10.2+wasi-snapshot-preview1" @@ -2604,6 +2683,41 @@ dependencies = [ "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-cli-support" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d4780c659b883a19ddb7ced365db19f7f45cd182d832ee14de2b7ef52e88a9f" +dependencies = [ + "anyhow", + "base64 0.9.3", + "log", + "rustc-demangle", + "serde_json", + "tempfile", + "unicode-ident", + "walrus", + "wasm-bindgen-externref-xform", + "wasm-bindgen-multi-value-xform", + "wasm-bindgen-shared", + "wasm-bindgen-threads-xform", + "wasm-bindgen-wasm-conventions", + "wasm-bindgen-wasm-interpreter", + "wit-text", + "wit-validator", + "wit-walrus", +] + +[[package]] +name = "wasm-bindgen-externref-xform" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d154c3843bf3b635b602ad41b56f505f8f1a25f8a0133fca4bbd0918d74efdc" +dependencies = [ + "anyhow", + "walrus", +] + [[package]] name = "wasm-bindgen-futures" version = "0.4.34" @@ -2639,12 +2753,76 @@ dependencies = [ "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-multi-value-xform" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00a577fbd4be358ef8095432189b5c2e6b6e71f5081797c2032572f77d65d26" +dependencies = [ + "anyhow", + "walrus", +] + [[package]] name = "wasm-bindgen-shared" version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +[[package]] +name = "wasm-bindgen-threads-xform" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aa93941bae037b7b4fac4ecfc132294b828036c5990a806d0e6fd9284297d94" +dependencies = [ + "anyhow", + "walrus", + "wasm-bindgen-wasm-conventions", +] + +[[package]] +name = "wasm-bindgen-wasm-conventions" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8f5de325048d945c90600fdf66b13521f3340d85971287775c36aa99c04466b" +dependencies = [ + "anyhow", + "walrus", +] + +[[package]] +name = "wasm-bindgen-wasm-interpreter" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f695df44962e3a107436282232a2daa185b8453c16be8ddfb637cd2601f31128" +dependencies = [ + "anyhow", + "log", + "walrus", + "wasm-bindgen-wasm-conventions", +] + +[[package]] +name = "wasmparser" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a950e6a618f62147fd514ff445b2a0b53120d382751960797f85f058c7eda9b9" + +[[package]] +name = "wasmparser" +version = "0.77.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35c86d22e720a07d954ebbed772d01180501afe7d03d464f413bb5f8914a8d6" + +[[package]] +name = "wast" +version = "21.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b1844f66a2bc8526d71690104c0e78a8e59ffa1597b7245769d174ebb91deb5" +dependencies = [ + "leb128", +] + [[package]] name = "wayland-client" version = "0.29.5" @@ -3052,6 +3230,70 @@ dependencies = [ "x11-dl", ] +[[package]] +name = "wit-parser" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f5fd97866f4b9c8e1ed57bcf9446f3d0d8ba37e2dd01c3c612c046c053b06f7" +dependencies = [ + "anyhow", + "leb128", + "wit-schema-version", +] + +[[package]] +name = "wit-schema-version" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfee4a6a4716eefa0682e7a3b836152e894a3e4f34a9d6c2c3e1c94429bfe36a" + +[[package]] +name = "wit-text" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33358e95c77d660f1c7c07f4a93c2bd89768965e844e3c50730bb4b42658df5f" +dependencies = [ + "anyhow", + "wast", + "wit-writer", +] + +[[package]] +name = "wit-validator" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c11d93d925420e7872b226c4161849c32be38385ccab026b88df99d8ddc6ba6" +dependencies = [ + "anyhow", + "wasmparser 0.59.0", + "wit-parser", + "wit-schema-version", +] + +[[package]] +name = "wit-walrus" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad559e3e4c6404b2a6a675d44129d62a3836e3b951b90112fa1c5feb852757cd" +dependencies = [ + "anyhow", + "id-arena", + "walrus", + "wit-parser", + "wit-schema-version", + "wit-writer", +] + +[[package]] +name = "wit-writer" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2ad01ba5e9cbcff799a0689e56a153776ea694cec777f605938cb9880d41a09" +dependencies = [ + "leb128", + "wit-schema-version", +] + [[package]] name = "x11-dl" version = "2.19.1" diff --git a/Cargo.toml b/Cargo.toml index 2035cee7e7..a5cffb9b50 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,6 +11,7 @@ members = [ "examples/shaders/compute-shader", "examples/shaders/mouse-shader", "examples/multibuilder", + "examples/run-wasm", "crates/rustc_codegen_spirv", "crates/rustc_codegen_spirv-types", diff --git a/deny.toml b/deny.toml index cbf284509c..8e303aa864 100644 --- a/deny.toml +++ b/deny.toml @@ -36,6 +36,7 @@ skip-tree = [ { name = "example-runner-ash", version = "0.0.0", depth = 20 }, { name = "example-runner-cpu", version = "0.0.0", depth = 20 }, { name = "example-runner-wgpu", version = "0.0.0", depth = 20 }, + { name = "run-wasm", version = "0.0.0", depth = 20 }, { name = "compiletests", version = "0.0.0", depth = 20 }, { name = "compiletests-deps-helper", version = "0.0.0", depth = 20 }, ] diff --git a/examples/run-wasm/Cargo.toml b/examples/run-wasm/Cargo.toml new file mode 100644 index 0000000000..c3baa1b20d --- /dev/null +++ b/examples/run-wasm/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "run-wasm" +description = "cargo-run-wasm helper/wrapper (see cargo-run-wasm docs)" +version = "0.0.0" +publish = false +authors.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true + +[dependencies] +cargo-run-wasm = "0.3.2" diff --git a/examples/run-wasm/src/main.rs b/examples/run-wasm/src/main.rs new file mode 100644 index 0000000000..6961358d9b --- /dev/null +++ b/examples/run-wasm/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + cargo_run_wasm::run_wasm_with_css("body { margin: 0px; }"); +}