Skip to content

AssemblyScript/wabt.js

Repository files navigation

wabt.js

wabt.js is a port of WABT to the Web, allowing you to manipulate WebAssembly modules using a JavaScript API.

Build status npm version npm nightly version

Usage

$> 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.

Usage with a CDN

  • 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.

API

  • 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.
  • ReadWasmOptions
    Options modifying the behavior of readWasm.

    • readDebugNames: boolean
      Reads textual names from the name section.
    • check: boolean
      Check for invalid modules (default: true).
  • ToTextOptions
    Options modifying the behavior of WasmModule#toText.

    • foldExprs: boolean
    • inlineExport: boolean
  • ToBinaryOptions
    Options modifying the behavior of WasmModule#toBinary.

    • log: boolean
    • canonicalize_lebs: boolean
    • relocatable: boolean
    • write_debug_names: boolean
  • ToBinaryResult
    Result object of WasmModule#toBinary.

    • buffer: Uint8Array
      The wasm binary buffer.
    • log: string
      Generated log output.
  • 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).

CLI

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

About

A buildbot for wabt.js, a port of WABT to the Web, with TypeScript support.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 6

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy