From 97c52de2cf6c64b3fa4982bd0dd11fcdac23e22d Mon Sep 17 00:00:00 2001 From: Savanni D'Gerinel Date: Thu, 20 Apr 2023 09:40:59 -0400 Subject: [PATCH] Set up a demo wasm build --- flake.nix | 1 + kifu/hello-wasm/Cargo.lock | 126 +++++++++++++++++++++++++++++++++++++ kifu/hello-wasm/Cargo.toml | 12 ++++ kifu/hello-wasm/index.html | 15 +++++ kifu/hello-wasm/src/lib.rs | 27 ++++++++ rust-toolchain | 1 + 6 files changed, 182 insertions(+) create mode 100644 kifu/hello-wasm/Cargo.lock create mode 100644 kifu/hello-wasm/Cargo.toml create mode 100644 kifu/hello-wasm/index.html create mode 100644 kifu/hello-wasm/src/lib.rs diff --git a/flake.nix b/flake.nix index e223b90..c1ddcad 100644 --- a/flake.nix +++ b/flake.nix @@ -40,6 +40,7 @@ pkgs.rustup pkgs.cargo-nextest pkgs.crate2nix + pkgs.wasm-pack ]; LIBCLANG_PATH="${pkgs.llvmPackages.libclang.lib}/lib"; }; diff --git a/kifu/hello-wasm/Cargo.lock b/kifu/hello-wasm/Cargo.lock new file mode 100644 index 0000000..c602111 --- /dev/null +++ b/kifu/hello-wasm/Cargo.lock @@ -0,0 +1,126 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "bumpalo" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "hello-wasm" +version = "0.1.0" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "once_cell" +version = "1.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" + +[[package]] +name = "proc-macro2" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + +[[package]] +name = "wasm-bindgen" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" diff --git a/kifu/hello-wasm/Cargo.toml b/kifu/hello-wasm/Cargo.toml new file mode 100644 index 0000000..ca049a8 --- /dev/null +++ b/kifu/hello-wasm/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "hello-wasm" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +crate-type = ["cdylib"] + +[dependencies] +wasm-bindgen = "0.2" diff --git a/kifu/hello-wasm/index.html b/kifu/hello-wasm/index.html new file mode 100644 index 0000000..776dc83 --- /dev/null +++ b/kifu/hello-wasm/index.html @@ -0,0 +1,15 @@ + + + + + hello-wasm example + + + + + diff --git a/kifu/hello-wasm/src/lib.rs b/kifu/hello-wasm/src/lib.rs new file mode 100644 index 0000000..2a2c7c1 --- /dev/null +++ b/kifu/hello-wasm/src/lib.rs @@ -0,0 +1,27 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +extern "C" { + pub fn alert(s: &str); +} + +#[wasm_bindgen] +pub fn greet(name: &str) { + alert(&format!("Hello, {}!", name)); +} + +#[wasm_bindgen] +pub fn add(left: usize, right: usize) -> usize { + left + right +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_works() { + let result = add(2, 2); + assert_eq!(result, 4); + } +} diff --git a/rust-toolchain b/rust-toolchain index 864d3c4..6d69e1e 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1,2 +1,3 @@ [toolchain] channel = "1.68.2" +targets = [ "wasm32-unknown-unknown" ]