Skip to main content

A Python wrapper for the WebAssembly Binary Toolkit (WABT)

Project description

wabt.py

wabt.py is a Python wrapper for the WebAssembly Binary Toolkit (WABT). It allows you to interact with WABT tools programmatically, making it easy to work with WebAssembly binaries and text formats in Python.

Features

  • Run WABT tools programmatically: Includes support for tools like wat2wasm, wasm2wat, wasm-validate, wasm-decompile, and more.
  • Cross-platform support: Works on Windows, macOS, and Linux.
  • Automatic updates: Automatically downloads and updates the latest WABT binaries.
  • Simple API: Provides a Pythonic interface for interacting with WABT tools.

Installation

You can install wabt via pip:

pip install wabt

Usage

Initialize WABT

To use the library, first initialize the Wabt class. This will ensure the latest WABT binaries are downloaded and ready to use.

from wabt import Wabt

Initialize WABT

wabt = Wabt()

Convert WAT to WASM

Convert a WebAssembly text file (.wat) to a binary file (.wasm).

wabt.wat_to_wasm("example.wat", output="example.wasm")

Convert WASM to WAT

Convert a WebAssembly binary file (.wasm) to a text file (.wat).

wabt.wasm_to_wat("example.wasm", output="example.wat")

Validate a WASM File

Validate a WebAssembly binary file.

output = wabt.wasm_validate("example.wasm")
print(output)

Decompile a WASM File

Decompile a WebAssembly binary file into a human-readable format.

wabt.wasm_decompile("example.wasm", output="example.dcmp")

Run Spectest Interpreter

Run a Spectest JSON file in the interpreter.

wabt.spectest_interp("test.json")

List of Supported Tools

The following WABT tools are supported:

  • wat2wasm: Convert WAT (WebAssembly Text) to WASM (WebAssembly Binary).
  • wasm2wat: Convert WASM to WAT.
  • wasm-validate: Validate a WebAssembly binary file.
  • wasm-decompile: Decompile a WebAssembly binary file.
  • wasm-interp: Run a WebAssembly binary in a stack-based interpreter.
  • wasm-objdump: Print information about the contents of WebAssembly binaries.
  • wasm-stats: Output statistics about a WebAssembly binary.
  • wasm-strip: Remove sections from a WebAssembly binary file.
  • wast2json: Convert a WAST (WebAssembly Spec Test) file to JSON.
  • wat-desugar: Format a WAT file.
  • wasm2c: Convert a WebAssembly binary to C code.

Advanced Usag

Custom Options

Most methods accept additional options to customize the behavior of the WABT tools. For example, you can validate a WASM file with verbose output by passing the --verbose option.

wabt.wasm_validate("example.wasm", options=["--verbose"])

Skip Updates

If you want to skip the automatic update process (e.g., for offline use), you can initialize the Wabt class with the skip_update parameter set to True.

wabt = Wabt(skip_update=True)

Requirements

  • Python 3.6 or higher
  • Internet connection (for downloading WABT binaries)

Acknowledgments

This library is built on top of the WebAssembly Binary Toolkit (WABT).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wabt-0.1.2.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wabt-0.1.2-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file wabt-0.1.2.tar.gz.

File metadata

  • Download URL: wabt-0.1.2.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for wabt-0.1.2.tar.gz
Algorithm Hash digest
SHA256 b448bdd2cab44f8f19f138ab24d6c54e6f5b9f8d5fb71b26dce0f4a3bb7aa712
MD5 b46c555dc7e7e1580ec670f1e813d98f
BLAKE2b-256 0900fe06b8ca6e4d6f7369a934ebda3930328044bf08f0fee8f4b20821c1be4c

See more details on using hashes here.

File details

Details for the file wabt-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: wabt-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for wabt-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 23b980b3e0d9c3580d5defe2e17b2db82ca9ec1f25c2e8b79e438aa9f8e53d2f
MD5 b182788c5092c12a7d20c83ff86b8019
BLAKE2b-256 ad80a2925f1136c8f6a7a45d4dc20843908c38ce8698eefa6d6a08c17028eeff

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page