WASI
WebAssembly System Interface
WASI stands for WebAssembly System Interface, a collection of APIs that allow programs compiled to WebAssembly to interact with the underlying operating system. WebAssembly is a format that lets code written in many languages run in browsers and other environments at near-native speed, but without a system interface it has no way to access files, network connections, or other OS resources. WASI fills that gap. The project is developed by the WASI Subgroup, part of the broader WebAssembly Community Group, with the goal of eventual formal standardization. It draws on established ideas from POSIX, the traditional Unix system call standard, and from CloudABI.
WASI has gone through two main versions. The first, now called Preview 1, was released earlier and is already widely adopted. It defined a set of low-level OS-like capabilities using a description language called witx. The second version, Preview 2, is now marked stable and takes a more modular approach. It uses a newer interface definition language called Wit, which supports a wider range of programming languages, a more expressive type system, and better isolation between components.
Each individual API in the WASI family lives in its own separate repository. The main WASI repository serves as a central discussion space and a record of the project goals and working processes. A proposals list in the documentation links to all the individual API repos. Anyone who wants to suggest a new API can follow the project contributing guide, and new proposals are expected to use the Preview 2 format and repository structure based on a provided template.
This repository is primarily of interest to developers building WebAssembly runtimes, toolchain authors, and language teams who need to target environments outside the browser. End users typically interact with WASI indirectly through tools and runtimes that implement it. The README for this repo is brief, pointing mainly to documentation and the proposals list for deeper detail.