A high-level AssemblyScript layer for the WebAssembly System Interface (WASI). ๐งฉ
WASI is an API providing access to the external world to WebAssembly modules. AssemblyScript exposes the low-level WASI standard set of system calls. as-wasi
builds a higher level API on top of the AssemblyScript WASI interface, at a similar level to the Node API. ๐
You can install as-wasi
in your project by running the following:
npm install --save as-wasi
Example usage of the Console
and Environ
classes:
// Import from the installed as-wasi package
import { Console, Environ } from "as-wasi/assembly";
// Create an environ instance
let env = new Environ();
// Get the HOME Environment variable
let home = env.get("HOME")!;
// Log the HOME string to stdout
Console.log(home);
Here are some exported classes that are commonly used:
FileSystem
- Reading and Writing the user's fileystem. ๐Console
- General logging to stdout and stderr. ๐ฅ๏ธEnviron
- Accessing environment variables, command flags, etc... ๐Date
- Getting the current system time. ๐Random
- Accessing random numbers. ๐คTime
- Allow sleeping and waiting for events to occur. โฐ- And More! See the Reference API in the next section for the full API.
Reference API documentation can be found in REFERENCE_API_DOCS. Documentation is generated using typedoc.
- wasmboy - Game Boy / Game Boy Color Emulator Library, ๐ฎwritten for WebAssembly using AssemblyScript. ๐
- wasmerio/io-devices-lib - Library for interacting with the Wasmer Experimental IO Devices API. Uses WASI for outputting graphics in a framebuffer, and handles mouse/keyboard input.
- wasm-by-example - Wasm By Example is a website with a set of hands-on introduction examples and tutorials for WebAssembly (Wasm). Wasm By Example features
as-wasi
by default for the AssemblyScript WASI examples. - wasm-matrix - A Matrix effect in your terminal using AssemblyScript ๐ and WASI ๐งฉ . This project is a bit older, and uses an older version of
as-wasi
, but still creates a cool effect!
If your project is using as-wasi, and you would like to be featured here. Please open a pull request against the README with links to your project, and if appropriate, explaining how as-wasi is being used. ๐
Contributions are definitely welcome! Feel free to open a PR for small fixes such as typos and things. Larger fixes, or new features should start out as an issue for discussion, in which then a PR should be made. ๐ฅณ
This project will also adhere to the AssemblyScript Code of Conduct.
MIT. ๐