From e2d6b9c54f0b00c39c9e2bbafa87ad129e766f36 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Fri, 8 Jul 2022 00:36:47 +0800 Subject: [PATCH] feat: add deno_rust_wasm_import_functions --- .../.gitignore | 1 + .../.rustfmt.toml | 3 + .../Cargo.lock | 126 +++++++++++++++ .../Cargo.toml | 4 + .../deno_rust_wasm_import_functions/deno.json | 5 + .../deno_rust_wasm_import_functions/justfile | 9 ++ .../lib/rs_lib.generated.js | 148 ++++++++++++++++++ .../lib/rs_lib_bg.wasm | Bin 0 -> 16535 bytes .../deno_rust_wasm_import_functions/main.js | 8 + .../rs_lib/Cargo.toml | 16 ++ .../rs_lib/src/lib.rs | 12 ++ 11 files changed, 332 insertions(+) create mode 100644 __wasm/deno_rust_wasm_import_functions/.gitignore create mode 100644 __wasm/deno_rust_wasm_import_functions/.rustfmt.toml create mode 100644 __wasm/deno_rust_wasm_import_functions/Cargo.lock create mode 100644 __wasm/deno_rust_wasm_import_functions/Cargo.toml create mode 100644 __wasm/deno_rust_wasm_import_functions/deno.json create mode 100644 __wasm/deno_rust_wasm_import_functions/justfile create mode 100644 __wasm/deno_rust_wasm_import_functions/lib/rs_lib.generated.js create mode 100644 __wasm/deno_rust_wasm_import_functions/lib/rs_lib_bg.wasm create mode 100644 __wasm/deno_rust_wasm_import_functions/main.js create mode 100644 __wasm/deno_rust_wasm_import_functions/rs_lib/Cargo.toml create mode 100644 __wasm/deno_rust_wasm_import_functions/rs_lib/src/lib.rs diff --git a/__wasm/deno_rust_wasm_import_functions/.gitignore b/__wasm/deno_rust_wasm_import_functions/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/__wasm/deno_rust_wasm_import_functions/.gitignore @@ -0,0 +1 @@ +/target diff --git a/__wasm/deno_rust_wasm_import_functions/.rustfmt.toml b/__wasm/deno_rust_wasm_import_functions/.rustfmt.toml new file mode 100644 index 0000000..9bb8d9d --- /dev/null +++ b/__wasm/deno_rust_wasm_import_functions/.rustfmt.toml @@ -0,0 +1,3 @@ +max_width = 80 +tab_spaces = 2 +edition = "2021" diff --git a/__wasm/deno_rust_wasm_import_functions/Cargo.lock b/__wasm/deno_rust_wasm_import_functions/Cargo.lock new file mode 100644 index 0000000..1e925d7 --- /dev/null +++ b/__wasm/deno_rust_wasm_import_functions/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.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "proc-macro2" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rs_lib" +version = "0.0.0" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "syn" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" + +[[package]] +name = "wasm-bindgen" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be" diff --git a/__wasm/deno_rust_wasm_import_functions/Cargo.toml b/__wasm/deno_rust_wasm_import_functions/Cargo.toml new file mode 100644 index 0000000..3c579d8 --- /dev/null +++ b/__wasm/deno_rust_wasm_import_functions/Cargo.toml @@ -0,0 +1,4 @@ +[workspace] +members = [ + "rs_lib", +] diff --git a/__wasm/deno_rust_wasm_import_functions/deno.json b/__wasm/deno_rust_wasm_import_functions/deno.json new file mode 100644 index 0000000..ea91683 --- /dev/null +++ b/__wasm/deno_rust_wasm_import_functions/deno.json @@ -0,0 +1,5 @@ +{ + "tasks": { + "wasmbuild": "deno run -A https://deno.land/x/wasmbuild@0.8.2/main.ts" + } +} diff --git a/__wasm/deno_rust_wasm_import_functions/justfile b/__wasm/deno_rust_wasm_import_functions/justfile new file mode 100644 index 0000000..2c77c71 --- /dev/null +++ b/__wasm/deno_rust_wasm_import_functions/justfile @@ -0,0 +1,9 @@ +_: + @just --list + +build_wasm: + deno task wasmbuild + +run *ARGS: + deno run --allow-read main.js {{ ARGS }} + diff --git a/__wasm/deno_rust_wasm_import_functions/lib/rs_lib.generated.js b/__wasm/deno_rust_wasm_import_functions/lib/rs_lib.generated.js new file mode 100644 index 0000000..5167395 --- /dev/null +++ b/__wasm/deno_rust_wasm_import_functions/lib/rs_lib.generated.js @@ -0,0 +1,148 @@ +// @generated file from wasmbuild -- do not edit +// deno-lint-ignore-file +// deno-fmt-ignore-file +// source-hash: 509bffc30c487fb405bbe67e9580cb31f09f9858 +let wasm; +let cachedInt32Memory0; + +const cachedTextDecoder = new TextDecoder("utf-8", { + ignoreBOM: true, + fatal: true, +}); + +cachedTextDecoder.decode(); + +let cachedUint8Memory0; +function getUint8Memory0() { + if (cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8Memory0; +} + +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} +/** + * @param {number} a + * @param {number} b + */ +export function alert_sum(a, b) { + wasm.alert_sum(a, b); +} + +const imports = { + __wbindgen_placeholder__: { + __wbg_alert_1d2369aa1e130bee: function (arg0, arg1) { + alert(getStringFromWasm0(arg0, arg1)); + }, + }, +}; + +const wasm_url = new URL("rs_lib_bg.wasm", import.meta.url); + +/** + * Decompression callback + * + * @callback decompressCallback + * @param {Uint8Array} compressed + * @return {Uint8Array} decompressed + */ + +/** Instantiates an instance of the Wasm module returning its functions. + * @remarks It is safe to call this multiple times and once successfully + * loaded it will always return a reference to the same object. + * @param {decompressCallback=} transform + */ +export async function instantiate(transform) { + return (await instantiateWithInstance(transform)).exports; +} + +let instanceWithExports; +let lastLoadPromise; + +/** Instantiates an instance of the Wasm module along with its exports. + * @remarks It is safe to call this multiple times and once successfully + * loaded it will always return a reference to the same object. + * @param {decompressCallback=} transform + * @returns {Promise<{ + * instance: WebAssembly.Instance; + * exports: { alert_sum: typeof alert_sum } + * }>} + */ +export function instantiateWithInstance(transform) { + if (instanceWithExports != null) { + return Promise.resolve(instanceWithExports); + } + if (lastLoadPromise == null) { + lastLoadPromise = (async () => { + try { + const instance = (await instantiateModule(transform)).instance; + wasm = instance.exports; + cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + instanceWithExports = { + instance, + exports: getWasmInstanceExports(), + }; + return instanceWithExports; + } finally { + lastLoadPromise = null; + } + })(); + } + return lastLoadPromise; +} + +function getWasmInstanceExports() { + return { alert_sum }; +} + +/** Gets if the Wasm module has been instantiated. */ +export function isInstantiated() { + return instanceWithExports != null; +} + +async function instantiateModule(transform) { + switch (wasm_url.protocol) { + case "file:": { + if (typeof Deno !== "object") { + throw new Error("file urls are not supported in this environment"); + } + + if ("permissions" in Deno) { + Deno.permissions.request({ name: "read", path: wasm_url }); + } + const wasmCode = await Deno.readFile(wasm_url); + return WebAssembly.instantiate( + !transform ? wasmCode : transform(wasmCode), + imports, + ); + } + case "https:": + case "http:": { + if (typeof Deno === "object" && "permissions" in Deno) { + Deno.permissions.request({ name: "net", host: wasm_url.host }); + } + const wasmResponse = await fetch(wasm_url); + if (transform) { + const wasmCode = new Uint8Array(await wasmResponse.arrayBuffer()); + return WebAssembly.instantiate(transform(wasmCode), imports); + } + if ( + wasmResponse.headers.get("content-type")?.toLowerCase().startsWith( + "application/wasm", + ) + ) { + return WebAssembly.instantiateStreaming(wasmResponse, imports); + } else { + return WebAssembly.instantiate( + await wasmResponse.arrayBuffer(), + imports, + ); + } + } + default: + throw new Error(`Unsupported protocol: ${wasm_url.protocol}`); + } +} diff --git a/__wasm/deno_rust_wasm_import_functions/lib/rs_lib_bg.wasm b/__wasm/deno_rust_wasm_import_functions/lib/rs_lib_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..b99af63c1028b3b2740c8ddf7c99e5dc4c5dccc4 GIT binary patch literal 16535 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 literal 0 HcmV?d00001 diff --git a/__wasm/deno_rust_wasm_import_functions/main.js b/__wasm/deno_rust_wasm_import_functions/main.js new file mode 100644 index 0000000..bef5642 --- /dev/null +++ b/__wasm/deno_rust_wasm_import_functions/main.js @@ -0,0 +1,8 @@ +import { instantiate } from "./lib/rs_lib.generated.js"; +const { alert_sum } = await instantiate(); + +async function main() { + alert_sum(100, 200); +} + +await main(); diff --git a/__wasm/deno_rust_wasm_import_functions/rs_lib/Cargo.toml b/__wasm/deno_rust_wasm_import_functions/rs_lib/Cargo.toml new file mode 100644 index 0000000..128f45f --- /dev/null +++ b/__wasm/deno_rust_wasm_import_functions/rs_lib/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "rs_lib" +version = "0.0.0" +edition = "2021" + +[lib] +crate_type = ["cdylib"] + +[profile.release] +codegen-units = 1 +incremental = true +lto = true +opt-level = "z" + +[dependencies] +wasm-bindgen = "=0.2.81" diff --git a/__wasm/deno_rust_wasm_import_functions/rs_lib/src/lib.rs b/__wasm/deno_rust_wasm_import_functions/rs_lib/src/lib.rs new file mode 100644 index 0000000..6f2d9e3 --- /dev/null +++ b/__wasm/deno_rust_wasm_import_functions/rs_lib/src/lib.rs @@ -0,0 +1,12 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +extern { + fn alert(s: &str); +} + +#[wasm_bindgen] +pub fn alert_sum(a: i32, b: i32) { + alert(&format!("{} plus {} is {}", a, b, a + b)); +} +