This folder contains examples that can be run with wasmcloud which are written in Python.
While WebAssembly was initially developed as a Web-centered abstraction, work is underway to make WebAssembly usable and convenient from server-side Javascript.
Work is still ongoing, but the WebAssembly-for-Python effort is primarily driven forward by componentize-py.
Example components built in Python can be compiled similarly to any other wasmcloud project:
wash buildWhile Python is not yet officially supported by wash, wash's custom build_command support makes it possible to build Python projects to run on wasmcloud.
As WebAssembly is intended to be a "compilation target" for native Python code, upstream work is underway to integrate and improve support for the various standards of WebAssembly.
| Language | Core Modules (wasm32-unknown-unknown) |
Preview 1 (wasm32-wasi-preview1) |
WASIP2 (wasm32-wasip2) |
|---|---|---|---|
| Python | cpython | ❌ | ✅ (componentize-py componentize ...) |
Note
Don't know what wasm32-unknown-unknown means versus wasm32-wasi-preview1?
wasm32-unknown-unknown is a compile target which deals in core WebAssembly modules (i.e. you're only given access to numbers at this level)
wasm32-wasi-preview1 is a compile target that provides richer types, support for more higher level platform APIs
wasm32-wasip2 is the next generation compile target with much richer types, higher level APIs like async, streaming, the WIT IDL.
In a sentence, WebAssembly functionality is layered, with wasm32-unknown-unknown being the most basic (only doing operations on numbers) and wasm32-wasip2 being the current most advanced.
To learn more about how wasmCloud works, check out the wasmCloud documentation.
To learn more WebAssembly ecosystem language support, check out the SIG Guest Languages Zulip group.
Development on Python support is stewarded by the Bytecode Alliance.
Work on componentize-py are done in the open, and you are welcome to try out the toolchain, contribute, and ask questions.