0.20.3 • Published 2 years ago

cowasm v0.20.3

Weekly downloads
-
License
BSD-3-Clause
Repository
github
Last release
2 years ago

CoWasm -- Collaborative WebAssembly Environment for Servers and Browsers

IMPORTANT: This is part of a work-in-progress rename from Zython/Python-wasm to CoWasm. It is not finished yet.


DEMOS:

See the main repo for more information.

Using from node.js

Install the package:

npm install python-wasm

The library should work with nodejs version 16.x on Linux, MacOS, and native Microsoft Windows. (NOTE: for node 14, use the --experimental-wasm-bigint flag.)

wstein@max % node
Welcome to Node.js v16.13.0.
Type ".help" for more information.
> python = require('python-wasm')
> await python.init();
> await python.exec('a = sum(range(101)); print(a)')   # outputs to stdout
5050
> s = await python.repr('a'); s # javascript string
5050
> await python.exec('import sys; print(sys.version)')
'3.11.0b3 (main, Jul  8 2022, 23:21:07) [Clang 13.0.1 (git@github.com:ziglang/zig-bootstrap.git 81f0e6c5b902ead84753490d'
> await python.repr('sys.platform')
"'wasi'"

You can also start a full session with readline support (yes, this is real!):

$ node
> require('python-wasm').terminal()
>>> 2+3   # you can edit with readline!
5
>>> 1/0  
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
>>> quit() or ctrl+d

Using in a web application

See this repo for how to use Webpack5 with python-wasm.

API

The python-wasm module exports:

  • exec(code:string) - execute code (output goes to /dev/stdout and /dev/stderr)
  • repr(expr:string) - return representation of an expression as a string
  • terminal - start interactive Python terminal that has full readline support