wabt.js

wabt.js 的构建机器人,它是 WABT 的 web 移植版,支持 TypeScript。「A buildbot for wabt.js, a port of WABT to the Web, with TypeScript support.」

Github stars Tracking Chart

wabt.js

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



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.
  • 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-opcodecnt counts opcode usage for instructions.
  • 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

Overview

Name With OwnerAssemblyScript/wabt.js
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 3)
Platform
License:Apache License 2.0
Release Count440
Last Release Namev1.0.34 (Posted on )
First Release Namev0.0.13 (Posted on )
Created At2017-06-22 10:04:32
Pushed At2024-05-06 18:59:42
Last Commit At
Stargazers Count140
Watchers Count8
Fork Count12
Commits Count511
Has Issues Enabled
Issues Count30
Issue Open Count15
Pull Requests Count5
Pull Requests Open Count1
Pull Requests Close Count9
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top