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.3.tar.gz (925.1 kB view details)

Uploaded Source

Built Distribution

pywasm-1.2.3-py2.py3-none-any.whl (22.1 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: pywasm-1.2.3.tar.gz
  • Upload date:
  • Size: 925.1 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.3.tar.gz
Algorithm Hash digest
SHA256 83754e546116f17ad9fc5839b9bc1c2fd51afe8ae4d1855b94b17d589814e45d
MD5 800e2b89e946243f707c5c34386ef140
BLAKE2b-256 a298e356e800c5cd613a2c60a425b788a4ad0fda9a409194ddba2322453f6f8a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pywasm-1.2.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 22.1 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.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 796e55ead8c0e0a8389572535faccca42879b18a53d077ca40651b1054852df6
MD5 a59563b505211791252a0d66ed889ef6
BLAKE2b-256 9309017fa39a59438802cd79582c35fc678250832286814fbd6591c704257505

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