8,197
stars
+6+6+51
842
forks
–
watchers
–
prs
–
issues
–
releases
–
discussions
README
WABT: The WebAssembly Binary Toolkit WABT (we pronounce it "wabbit") is a suite of tools for WebAssembly, including: - wat2wasm: translate from WebAssembly text format to the WebAssembly binary format - wasm2wat: the inverse of wat2wasm, translate from the binary format back to the text format (also known as a .wat) - wasm-objdump: print information about a wasm binary. Similiar to objdump. - wasm-interp: decode and run a WebAssembly binary file using a stack-based interpreter - wat-desugar: parse .wat text form as supported by the spec interpreter (s-expressions, flat syntax, or mixed) and print "canonical" flat format - wasm2c: convert a WebAssembly binary file to a C source and header - wasm-strip: remove sections of a WebAssembly binary file - wasm-validate: validate a file in the WebAssembly binary format - wast2json: convert a file in the wasm spec test format to a JSON file and associated wasm binary files - wasm-stats: output stats for a module - spectest-interp: read a Spectest JSON file, and run its tests in the interpreter These tools are intended for use in (or for development of) toolchains or other systems that want to manipulate WebAssembly files. Unlike the WebAssembly spec interpreter (which is written to be as simple, declarative and "speccy" as possible), they are written in C/C++ and designed for easier integration into other systems. Unlike Binaryen these tools do not aim to provide an optimization platform or a higher-level compiler target; instead they aim for full fidelity and compliance with the spec (e.g. 1:1 round-trips with no changes to instructions). Online Demos Wabt has been compiled to JavaScript via emscripten. Some of the functionality is available in the following demos: - index - wat2wasm - wasm2wat Supported Proposals Proposal: Name and link to the WebAssembly proposal repo flag: Flag to pass to the tool to enable/disable support for the feature default: Whether the feature is enabled by default binary: Whether wabt can read/write the binary format text: Whether wabt can read/write the text format validate: Whether wabt can validate the syntax interpret: Whether wabt can execute these operations in wasm-interp or spectest-interp wasm2c: Whether wasm2c supports these operations | Proposal | flag | default | binary | text | validate | interpret | wasm2c | | --------------------- | --------------------------- | - | - | - | - | - | - | | [exception handling][]| --disable-exceptions | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [mutable globals][] | --disable-mutable-globals | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [nontrapping float-to-int conversions][] | --disable-saturating-float-to-int | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [sign extension][] | --disable-sign-extension | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [simd][] | --disable-simd | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [threads][] | --enable-threads | | ✓ | ✓ | ✓ | ✓ | | | [multi-value][] | --disable-multi-value | ✓ | ✓ |