wabt.js is a port of WABT to the Web, allowing you to manipulate WebAssembly modules using a JavaScript API.
$> npm install wabt
require("wabt")().then(wabt => {
var wasm = ...; // a buffer holding the contents of a wasm file
var myModule = wabt.readWasm(wasm, { readDebugNames: true });
myModule.applyNames();
var wast = myModule.toText({ foldExprs: false, inlineExport: false });
console.log(wast);
});
The buildbot also publishes nightly versions once a day if there have been changes. The latest nightly can be installed through
$> npm install --save-exact wabt@nightly
or you can use one of the previous versions instead if necessary. Note the --save-exact
when using a nightly.
- From GitHub via jsDelivr:
https://cdn.jsdelivr.net/gh/AssemblyScript/wabt.js@VERSION/index.js
- From npm via jsDelivr:
https://cdn.jsdelivr.net/npm/wabt@VERSION/index.js
- From npm via UNPKG:
https://unpkg.com/wabt@VERSION/index.js
Replace VERSION
with a specific version or omit it (not recommended in production) to use main/latest.
-
parseWat(filename:
string
, buffer:string | Uint8Array
, options?:WasmFeatures
):WasmModule
Parses a WebAssembly text format source to a module. -
readWasm(buffer:
Uint8Array
, options:ReadWasmOptions & WasmFeatures
):WasmModule
Reads a WebAssembly binary to a module. -
WasmModule
A class representing a WebAssembly module.-
validate():
void
Validates the module. Throws if not valid. -
resolveNames():
void
Resolves names to indexes. -
generateNames():
void
Generates textual names for function types, globals, labels etc. -
applyNames():
void
Applies textual names. Throws on error. -
toText(options:
ToTextOptions
):string
Converts the module to wat text format. -
toBinary(options:
ToBinaryOptions
):ToBinaryResult
Converts the module to a wasm binary. -
destroy():
void
Disposes the module and frees its resources.
-
validate():
-
ReadWasmOptions
Options modifying the behavior ofreadWasm
.-
readDebugNames:
boolean
Reads textual names from the name section.
-
readDebugNames:
-
ToTextOptions
Options modifying the behavior ofWasmModule#toText
.-
foldExprs:
boolean
-
inlineExport:
boolean
-
foldExprs:
-
ToBinaryOptions
Options modifying the behavior ofWasmModule#toBinary
.-
log:
boolean
-
canonicalize_lebs:
boolean
-
relocatable:
boolean
-
write_debug_names:
boolean
-
log:
-
ToBinaryResult
Result object ofWasmModule#toBinary
.-
buffer:
Uint8Array
The wasm binary buffer. -
log:
string
Generated log output.
-
buffer:
-
WasmFeatures
WebAssembly features to legalize. Finished features are enabled by default.-
exceptions:
boolean
Exception handling (proposal). -
mutable_globals:
boolean
Import/Export mutable globals (proposal). -
sat_float_to_int:
boolean
Non-trapping Float-to-int Conversions (proposal). -
sign_extension:
boolean
Sign-extension operators (proposal). -
simd:
boolean
128-bit packed SIMD (proposal). -
threads:
boolean
Threading (proposal). -
function_references:
boolean
Typed function references (proposal). -
multi_value:
boolean
Multi-value (proposal). -
tail_call:
boolean
Tail Call (proposal). -
bulk_memory:
boolean
Bulk Memory Operations and Conditional Segment Initialization (proposal). -
reference_types:
boolean
Reference Types (proposal). -
annotations:
boolean
Custom Annotation Syntax for the Wasm Text Format (proposal). -
code_metadata:
boolean
Code metadata (convention). -
gc:
boolean
Garbage collection (proposal). -
memory64:
boolean
64-bit memory (proposal). -
extended_const:
boolean
Extended constant expressions (proposal). -
relaxed_simd:
boolean
Relaxed SIMD (proposal).
-
exceptions:
Node.js ports of the following command line tools are included in the package as well:
- wasm2c converts a WebAssembly binary file to a C source and header.
- wasm2wat translates from WebAssembly binary format to text format.
- wat2wasm translates from WebAssembly text format to binary format.
- wasm-decompile decompiles a wasm binary into readable C-like syntax.
- wasm-interp decodes and runs a WebAssembly binary file using a stack-based interpreter.
- wasm-objdump prints information about a wasm binary. Similiar to objdump.
- wasm-stats shows stats for a WebAssembly module.
- wasm-strip removes sections of a WebAssembly binary file.
- wasm-validate validates a file in WebAssembly binary format.
The tools can also be run ad hoc (without explicitly installing the package), for example with:
$> npx -p wabt wasm2wat myModule.wasm -o myModule.wat