const wasmCode = await Deno.readFile("./test_wasm/target/wasm32-unknown-unknown/debug/test_wasm.wasm"); const wasmModule = new WebAssembly.Module(wasmCode); const wasmInstance = new WebAssembly.Instance(wasmModule); const linearMemory = wasmInstance.exports.memory; function writeString() { let s = "hello world !"; let encoded = new TextEncoder().encode(s); let ptr = wasmInstance.exports.malloc(encoded.length); const mem = new Uint8Array(linearMemory.buffer, ptr); for (let i = 0; i < encoded.length; i++) { mem[i] = encoded[i]; } return ptr; } // from https://tilman.xyz/blog/2019/12/building-webassembly-for-deno/ function readString(memory, ptr) { const mem = new Uint8Array(memory.buffer, ptr); let length; for (length = 0; mem[length] !== 0; length ++); return new TextDecoder("utf-8").decode(new Uint8Array(mem.buffer, ptr, length)); } let ptr = writeString(); console.log("DECODED:\n" + readString(linearMemory, ptr) + " @" + ptr); let ptr2 = wasmInstance.exports.to_uppercase(ptr); console.log("DECODED:\n" + readString(linearMemory, ptr2) + " @" + ptr2);