8000 GitHub - WebAssembly/wabt: The WebAssembly Binary Toolkit
[go: up one dir, main page]

Skip to content

WebAssembly/wabt

Github CI Status

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
  • wasm-decompile: decompile a wasm binary into readable C-like syntax.
  • 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:

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 --enable-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 âś“ âś“ âś“ âś“ âś“ âś“
tail-call --enable-tail-call âś“ âś“ âś“ âś“ âś“
bulk memory --disable-bulk-memory âś“ âś“ âś“ âś“ âś“ âś“
reference types --disable-reference-types âś“ âś“ âś“ âś“ âś“ âś“
annotations --enable-annotations âś“
memory64 --enable-memory64 âś“ âś“ âś“ âś“ âś“
multi-memory --enable-multi-memory âś“ âś“ âś“ âś“ âś“
extended-const --enable-extended-const âś“ âś“ âś“ âś“ âś“
relaxed-simd --enable-relaxed-simd âś“ âś“ âś“ âś“
custom-page-sizes --enable-custom-page-sizes âś“ âś“ âś“ âś“ âś“

Cloning