Skip to Content
WASIX

WASIX

WASIX is the long-term stabilization and support of the existing WASI ABI  plus additional non-invasive syscall extensions that complete the missing gaps sufficiently enough to enable real, practical, and useful applications to be compiled and used.

WASIX was created by the Wasmer team to speed up the Wasmification of codebases around the world.

You can check more about WASIX on the website .

Compiling your language to WASIX

WASIX is WASI preview1 plus POSIX extensions: threads, fork and exec, TCP/UDP sockets, DNS, pipes, and TTY. Plain WASI modules also run on Wasmer.

LanguageProcedure
Rust (WASIX)cargo install cargo-wasix, then cargo wasix build --release. Output: target/wasm32-wasmer-wasi/release/*.wasm
Rust (plain WASI)rustup target add wasm32-wasip1, then cargo build --target wasm32-wasip1
C / C++ (WASIX)Install wasixcc, run wasixcc --download-all once, then wasixcc main.c -o app.wasm
GoGo >= 1.21: GOOS=wasip1 GOARCH=wasm go build -o app.wasm . TinyGo: tinygo build -target=wasi -o app.wasm .
Python, PHP, JSDo not compile. Run the prebuilt runtimes: python/python, php/php-32, wasmer/edgejs. Find more with wasmer package search

Go’s wasip1 port is single-threaded WASI, not WASIX. Programs that need sockets or subprocesses in Go need a different design or language.

To check which ABI a module targets, run wasmer inspect app.wasm and read the import namespaces: wasi_snapshot_preview1 means WASI, wasix_32v1 means WASIX. A “missing import” error usually means the module targets a different ABI or a newer WASIX than the runtime.

These runtime packages can be launched with wasmer run or composed inside a sandbox through the JavaScript SDK and Python SDK.

Usage

To use the WASIX runner, you need to specify the runner for your package in your wasmer.toml file:

wasmer.toml
# ... [[command]] name = "proxy" module = "<your-module>" runner = "https://webc.org/runner/wasi"

Learn More

To learn more about the WASIX runner, please click here .

Last updated on