webassembly.fromExports¶
Summary¶
webassembly.fromExports wraps a raw exports object and returns a WasmModule.
Use it when a framework, loader, or host only gives you instance.exports, or when you want to wrap a manually assembled exports-like object without carrying around the full WebAssembly.Instance.
This API is for external WebAssembly modules, not WasmGPU's built-in driver memory.
Syntax¶
WasmGPU.webassembly.fromExports(exportsObject: WasmExportsLike, options?: WasmModuleOptions): WasmModule
const moduleRef = WasmGPU.webassembly.fromExports(exportsObject, options);
Parameters¶
| Name | Type | Required | Description |
|---|---|---|---|
exportsObject |
WasmExportsLike |
Yes | Raw exports object to wrap. It must be an object. |
options |
WasmModuleOptions |
No | Optional wrapper configuration, including a diagnostic name and default memory resolution source. |
Returns¶
WasmModule - Wrapper around the supplied exports object and its memory resolution rules.
Type Details¶
type WasmExportsLike = Record<string, unknown>;
type WasmModuleOptions = {
name?: string;
memory?: WebAssembly.Memory | string | null | undefined;
};
Descriptor Inputs¶
When you later create views or reads from the returned WasmModule, pointer and length inputs can be:
- numbers or bigints
- export-name strings
- callbacks
- descriptor objects that select functions, globals, or exports explicitly
Memory Resolution¶
- Pass an explicit
WebAssembly.Memorythroughoptions.memorywhen memory is not itself an export. - Pass a memory export name when the exports object exposes several memories or when you want a specific one.
- Omit
options.memoryonly when the exports object contains exactly one memory export.
Notes¶
- This is usually the most direct factory when you already have
instance.exports. WasmMemoryView.array(),bytes(), anddataView()expose live external memory views rather than copies. UseWasmMemoryView.copy()when you need an owned JavaScript copy.WasmMemoryViewrecreates cached typed views automatically after memory growth. Callrefresh()when an exported pointer, length, byte offset, dtype, or memory selection may have changed.- Range bounds and typed-array alignment are validated by the wrapper.
- External module memory may or may not be shared. These wrappers do not require
SharedArrayBuffer-backed memory. - This API is separate from WasmGPU.python, which focuses on ndarray-oriented Python-JS data transfer instead of reading foreign module memory directly.
Example¶
const moduleRef = WasmGPU.webassembly.fromExports(instance.exports, {
memory: "memory",
name: "example-exports"
});
const values = moduleRef.view({
ptr: "values_ptr",
length: "values_len",
dtype: "f32",
name: "values"
}).array();
console.log(values[0]);