WebAssembly build pipeline, memory management, JS interop patterns, and AudioWorklet loading.
Use this skill when working with the WebAssembly build pipeline, JS-WASM interop, or WASM module loading.
.wasm via Emscripten or wasm-pack..wasm binary and a thin JS loader/bindings module.const module = await WebAssembly.instantiateStreaming(
fetch('/dsp.wasm'),
importObject,
);
AudioWorklet has no fetch(). Two options:
ArrayBufferpostMessagePrefer option 1 for smaller initial load.
new Float32Array(memory.buffer, offset, length)) to read/write.memory.grow().dsp_init, dsp_render, dsp_set_voice_mask).TextEncoder/TextDecoder with WASM memory views (avoid for hot paths).If using SharedArrayBuffer (for shared memory between threads):
Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp.