Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jedisct1/as-wasi
An AssemblyScript API layer for WASI system calls.
https://github.com/jedisct1/as-wasi
assemblyscript wasi wasm webassembly
Last synced: 4 days ago
JSON representation
An AssemblyScript API layer for WASI system calls.
- Host: GitHub
- URL: https://github.com/jedisct1/as-wasi
- Owner: jedisct1
- License: mit
- Created: 2019-03-27T12:53:13.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-03-15T19:34:55.000Z (over 1 year ago)
- Last Synced: 2024-05-21T12:41:29.908Z (6 months ago)
- Topics: assemblyscript, wasi, wasm, webassembly
- Language: TypeScript
- Homepage:
- Size: 399 KB
- Stars: 251
- Watchers: 9
- Forks: 18
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-assemblyscript - jedisc1/as-wasi - API layer for WASI system calls (Packages)
- awesome-wasi - WASA - WASI layer interface for AssemblyScript
README
# as-wasi
![npm version](https://img.shields.io/npm/v/as-wasi.svg)
![npm downloads per month](https://img.shields.io/npm/dm/as-wasi.svg)
![GitHub License](https://img.shields.io/github/license/torch2424/as-wasi.svg)A high-level AssemblyScript layer for the WebAssembly System Interface (WASI). ๐งฉ
[WASI](https://wasi.dev) 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](https://nodejs.org/docs/latest/api/). ๐
## Installation
You can install `as-wasi` in your project by running the following:
`npm install --save as-wasi`
## Quick Start
Example usage of the `Console` and `Environ` classes:
```typescript
// 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 Docs
Reference API documentation can be found in [REFERENCE_API_DOCS](./REFERENCE_API_DOCS.md). Documentation is generated using [typedoc](https://typedoc.org/).
## Projects using as-wasi
* [wasmboy](https://github.com/torch2424/wasmboy) - Game Boy / Game Boy Color Emulator Library, ๐ฎwritten for WebAssembly using AssemblyScript. ๐
* [wasmerio/io-devices-lib](https://github.com/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](https://github.com/torch2424/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](https://github.com/torch2424/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._ ๐
## Contributing
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](https://github.com/AssemblyScript/assemblyscript/blob/master/CODE_OF_CONDUCT.md).
## License
[MIT](https://oss.ninja/mit/jedisct1). ๐