poll_oneoff only polled stdin for blocking fd read subscriptions, silently dropping non-stdin pollable fds. Generalize the deferred polling to poll each blocking fd individually, tracking remaining time budget across iterations so total wall time never exceeds the requested timeout. Changes: - Generalize poll_oneoff blocking fd handling: track each deferred subscription's file and poll it individually instead of only stdin - Track elapsed time per poll so N blocking fds complete within 1x timeout - Add test for poll_oneoff with non-stdin pollable fd Fixes: #1500 Signed-off-by: Christian Stewart <christian@aperture.us>
wazero imports
Packages in this directory implement the host imports needed for specific languages or shared compiler toolchains.
- AssemblyScript e.g.
asc X.ts --debug -b none -o X.wasm - Emscripten e.g.
em++ ... -s STANDALONE_WASM -o X.wasm X.cc - WASI e.g.
tinygo build -o X.wasm -target=wasi X.go
Note: You may not see a language listed here because it either works without host imports, or it uses WASI. Refer to https://wazero.io/languages/ for more.
Please open an issue if you would like to see support for another compiled language or toolchain.
Overview
WebAssembly has a virtual machine architecture where the host is the process
embedding wazero and the guest is a program compiled into the WebAssembly
Binary Format, also known as Wasm (%.wasm).
The only features that work by default are computational in nature, and the only way to communicate is via functions, memory or global variables.
When a compiler targets Wasm, it often needs to import functions from the host to satisfy system calls needed for functionality like printing to the console, getting the time, or generating random values. The technical term for this bridge is Application Binary Interface (ABI), but we'll call them simply host imports.
Packages in this directory are sometimes well re-used, such as the case in
WASI. For example, Rust, TinyGo, and Zig can
all target WebAssembly in a way that imports the same "wasi_snapshot_preview1"
module in the compiled %.wasm file. To support any of these, wazero users can
invoke wasi_snapshot_preview1.Instantiate on their wazero.Runtime.