WASI Snapshot Preview 1 Host
当你使用 --host wasi_snapshot_preview1 进行编译时,WARPO 会面向 WASI Snapshot Preview 1 的导入接口(module 名为 wasi_snapshot_preview1)。
此外,WARPO 还会自动提供一组基于 WASI 的全局 API,让你可以直接写类似 console.log(...)、process.exit(...) 的熟悉代码。
启用 Host
在 asconfig.json 中:
json
{
"options": {
"host": "wasi_snapshot_preview1"
}
}或者使用 CLI:
bash
warpo assembly/index.ts -o build/app.wasm --host wasi_snapshot_preview1提供的全局对象
当 host 为 wasi_snapshot_preview1 时,WARPO 会注入如下别名:
console(WASI-backed),来自~lib/wasi_snapshot_preview1/wasi_console/wasi_consoleprocess(WASI-backed),来自~lib/wasi_snapshot_preview1/wasi_process/wasi_processDate(WASI-backed),来自~lib/wasi_snapshot_preview1/wasi_date/wasi_Dateperformance(WASI-backed),来自~lib/wasi_snapshot_preview1/wasi_performance/wasi_performancecrypto(WASI-backed),来自~lib/wasi_snapshot_preview1/wasi_crypto/wasi_cryptoabort(WASI-backed),来自~lib/wasi_snapshot_preview1/wasi_internal/wasi_abortseed(WASI-backed),来自~lib/wasi_snapshot_preview1/wasi_internal/wasi_seedtrace(WASI-backed),来自~lib/wasi_snapshot_preview1/wasi_internal/wasi_trace
示例
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);