WASI Snapshot Preview 1 Host
When you compile with --host wasi_snapshot_preview1, WARPO targets the WASI Snapshot Preview 1 import surface (module name wasi_snapshot_preview1).
In addition, WARPO automatically provides WASI-backed global APIs so you can write familiar code like console.log(...) and process.exit(...).
Enable The Host
In asconfig.json:
json
{
"options": {
"host": "wasi_snapshot_preview1"
}
}Or via CLI:
bash
warpo assembly/index.ts -o build/app.wasm --host wasi_snapshot_preview1Provided Globals
WARPO injects these aliases when host is wasi_snapshot_preview1:
console(WASI-backed) from~lib/wasi_snapshot_preview1/wasi_console/wasi_consoleprocess(WASI-backed) from~lib/wasi_snapshot_preview1/wasi_process/wasi_processDate(WASI-backed) from~lib/wasi_snapshot_preview1/wasi_date/wasi_Dateperformance(WASI-backed) from~lib/wasi_snapshot_preview1/wasi_performance/wasi_performancecrypto(WASI-backed) from~lib/wasi_snapshot_preview1/wasi_crypto/wasi_cryptoabort(WASI-backed) from~lib/wasi_snapshot_preview1/wasi_internal/wasi_abortseed(WASI-backed) from~lib/wasi_snapshot_preview1/wasi_internal/wasi_seedtrace(WASI-backed) from~lib/wasi_snapshot_preview1/wasi_internal/wasi_trace
Example
ts
console.log("hello from WASI");
console.time("work");
console.log("argv[0] = " + (process.argv.length ? process.argv[0] : ""));
console.log("HOME = " + (process.env.has("HOME") ? process.env.get("HOME") : ""));
console.timeEnd("work");
// Exit with success
process.exit(0);