Skip to main content

WebAssembly Interpreter by pure Python

Project description

Pywasm: A WebAssembly interpreter written in pure Python.

A WebAssembly interpreter written in pure Python, no third-party libraries are used.

The wasm version currently in use is: WebAssembly Specification, Release 2.0 (Draft 2024-10-29).

Also requires Python version >= 3.12.

Installation

$ pip install pywasm

Some simple examples

  1. First we need a wasm module! Grab our ./examples/fib.wasm file and save a copy in a new directory on your local machine. Note: fib.wasm was compiled from ./examples/fib.c.

  2. Now, instantiate WebAssembly modules directly from underlying sources. This is achieved using the Runtime.instance_from_file method.

import pywasm
pywasm.log.lvl = 1

runtime = pywasm.core.Runtime()
m = runtime.instance_from_file('./examples/fib.wasm')
r = runtime.invocate(m, 'fib', [10])
print(f'fib(10) = {r[0]}')

A brief description for ./examples

File Description
./examples/add.wasm Export i32.add function
./examples/env.wasm Call python/native function in wasm
./examples/fib.wasm Fibonacci, which contains loop and recursion
./examples/str.wasm Export a function which returns string
./examples/sum.wasm Equal difference series summation

Test

$ python ./test/test_spec.py

Thanks

License

MIT

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

pywasm-1.2.2.tar.gz (924.9 kB view details)

Uploaded Source

Built Distribution

pywasm-1.2.2-py2.py3-none-any.whl (21.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pywasm-1.2.2.tar.gz.

File metadata

  • Download URL: pywasm-1.2.2.tar.gz
  • Upload date:
  • Size: 924.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pywasm-1.2.2.tar.gz
Algorithm Hash digest
SHA256 4b3704df247bc08d84ebf2b64ffd4f544e99fedb6931c74e5fcc66f94665821f
MD5 517a04c1b0351435441ba79bcbfaeb54
BLAKE2b-256 a362f341ba43d34ff6613d6d43b54e526167eeefa995a8d627e272e28b9449cc

See more details on using hashes here.

File details

Details for the file pywasm-1.2.2-py2.py3-none-any.whl.

File metadata

  • Download URL: pywasm-1.2.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 21.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pywasm-1.2.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 6f42c94d2b82d3d13f93304b8e40a0d0779f1eef12a2f1abfce8940c9ed1e786
MD5 8be04cfd9cf0aaad426823137b9e30a1
BLAKE2b-256 6eeb23e8a9d91ce4a37fba863c81eb85d39955936e213e338d0c733c932fd89e

See more details on using hashes here.

Supported by

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