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

Uploaded Source

Built Distribution

pywasm-1.2.0-py2.py3-none-any.whl (21.6 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: pywasm-1.2.0.tar.gz
  • Upload date:
  • Size: 924.7 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.0.tar.gz
Algorithm Hash digest
SHA256 4b6ba6d2cf688f6425a16b09437fd00ca7e6b22c4d0b2254361f929d82ae2f6e
MD5 f68a07bca7e6ff62a366a9ad108ce65e
BLAKE2b-256 7a9cf8e345c20f8a73ea1ff08b8010c46acc04385113575f123c39db28bef2c9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pywasm-1.2.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 21.6 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.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 5feb69d0e88e3156c00d85b4c45c4f607677833d35bd6bfb49f7b0890ea7b00b
MD5 c085f043ffa764fc1513a282231afcfe
BLAKE2b-256 ede59a30ccdd0ee619c96c136390cedbacebd8263a7db51d72f40c8c97730c2c

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