Crafter.Build/examples/wasi
Jorijn van der Graaf 8892154b28
Some checks failed
CI / build-test-release (push) Failing after 7m15s
linting
2026-07-23 01:24:42 +02:00
..
main.cpp linting 2026-07-23 01:24:42 +02:00
project.cpp linting 2026-07-23 01:24:42 +02:00
README.md V2: WASI, -r flag, CI pipeline, examples & tests cleanup 2026-04-28 23:24:46 +02:00
serve.sh SPDX license update 2026-07-22 18:19:17 +02:00

WASI

Build a C++26 program for the wasm32-wasi target and run it in a browser.

Prerequisites

  • wasi-libc, wasi-libc++, wasi-libc++abi (Arch packages — provide /usr/share/wasi-sysroot/, which crafter-build finds automatically). Other distros: install the WASI SDK and set cfg.sysroot in project.cpp.

Build

crafter-build

Output lands in bin/wasi-hello-wasm32-wasip1-native/:

  • wasi-hello.wasm — the compiled module
  • index.html + runtime.js — a minimal in-browser WASI shim, dropped in by EnableWasiBrowserRuntime(cfg) in project.cpp. Stdout goes to the browser console.

Run in a browser

./serve.sh                  # any static file server works

Open http://localhost:8080/. The string from main() shows up in the DevTools console.

Run in a standalone runtime

If you don't need the browser, drop the EnableWasiBrowserRuntime(cfg) line from project.cpp and run the .wasm directly:

wasmtime bin/wasi-hello-wasm32-wasip1-native/wasi-hello.wasm