home / documentation / v19 / wasi

WebAssembly System Interface (WASI)

目录

Added in: v12.16.0

稳定性: 1 - Experimental

The WASI API provides an implementation of the WebAssembly System Interface specification. WASI gives sandboxed WebAssembly applications access to the underlying operating system via a collection of POSIX-like functions.

MJS
CJS

To run the above example, create a new WebAssembly text format file named demo.wat:

TEXT

Use wabt to compile .wat to .wasm

BASH

The --experimental-wasi-unstable-preview1 CLI argument is needed for this example to run.

C WASI

Added in: v13.3.0, v12.16.0

The WASI class provides the WASI system call API and additional convenience methods for working with WASI-based applications. Each WASI instance represents a distinct sandbox environment. For security purposes, each WASI instance must have its command-line arguments, environment variables, and sandbox directory structure configured explicitly.

M new WASI([options])

Added in: v13.3.0, v12.16.0

  • options Object
    • args Array An array of strings that the WebAssembly application will see as command-line arguments. The first argument is the virtual path to the WASI command itself. Default: [].
    • env Object An object similar to process.env that the WebAssembly application will see as its environment. Default: {}.
    • preopens Object This object represents the WebAssembly application's sandbox directory structure. The string keys of preopens are treated as directories within the sandbox. The corresponding values in preopens are the real paths to those directories on the host machine.
    • returnOnExit boolean By default, WASI applications terminate the Node.js process via the __wasi_proc_exit() function. Setting this option to true causes wasi.start() to return the exit code rather than terminate the process. Default: false.
    • stdin integer The file descriptor used as standard input in the WebAssembly application. Default: 0.
    • stdout integer The file descriptor used as standard output in the WebAssembly application. Default: 1.
    • stderr integer The file descriptor used as standard error in the WebAssembly application. Default: 2.

M wasi.start(instance)

Added in: v13.3.0, v12.16.0

Attempt to begin execution of instance as a WASI command by invoking its _start() export. If instance does not contain a _start() export, or if instance contains an _initialize() export, then an exception is thrown.

start() requires that instance exports a WebAssembly.Memory named memory. If instance does not have a memory export an exception is thrown.

If start() is called more than once, an exception is thrown.

M wasi.initialize(instance)

Added in: v14.6.0, v12.19.0

Attempt to initialize instance as a WASI reactor by invoking its _initialize() export, if it is present. If instance contains a _start() export, then an exception is thrown.

initialize() requires that instance exports a WebAssembly.Memory named memory. If instance does not have a memory export an exception is thrown.

If initialize() is called more than once, an exception is thrown.

M wasi.wasiImport

Added in: v13.3.0, v12.16.0

wasiImport is an object that implements the WASI system call API. This object should be passed as the wasi_snapshot_preview1 import during the instantiation of a WebAssembly.Instance.