WASI prototype design, implementation, and documentation.

This adds documents describing the WASI Core API, and an implementation in
Wasmtime.
This commit is contained in:
Dan Gohman
2019-03-27 08:00:00 -07:00
parent b0243b212f
commit b2fefe7714
53 changed files with 12801 additions and 23 deletions

View File

@@ -14,26 +14,27 @@ utility or as a library embedded in a larger application.
[![Gitter chat](https://badges.gitter.im/CraneStation/CraneStation.svg)](https://gitter.im/CraneStation/Lobby)
![Minimum rustc 1.32](https://img.shields.io/badge/rustc-1.32+-green.svg)
*Wasmtime is complete enough to pass the WebAssembly spec testsuite.* Support for
system APIs is coming soon!
Wasmtime passes the WebAssembly spec testsuite, and supports a new system
API proposal called [WebAssembly System Interface], or WASI.
One goal for this project is to implement [CloudABI](https://cloudabi.org/) using
WebAssembly as the code format, provide [CloudABI system calls] as WebAssembly
host imports, and then port the [Rust CloudABI package] and [CloudABI libc] to it
to support Rust, C, C++, and other toolchains.
There are Rust C, and C++ toolchains that can compile programs with WASI. See
[here][WASI intro] for more information, and [here][WASI tutorial] for a
tutorial on compiling and running programs using WASI and wasmtime, as
well as an overview of the filesystem sandboxing system.
CloudABI is a natural complement for WebAssembly, since WebAssembly provides
sandboxing for code but doesn't have any builtin I/O, and CloudABI provides
sandboxed I/O.
Wasmtime does not yet implement Spectre mitiations, such as those being
pioneered [by](https://www.wasmjit.org/blog/spectre-mitigations-part-1.html)
[wasmjit](https://www.wasmjit.org/blog/spectre-mitigations-part-2.html),
however this is a subject of ongoing research.
[CloudABI]: https://cloudabi.org/
[CloudABI system calls]: https://github.com/NuxiNL/cloudabi#specification-of-the-abi
[Rust CloudABI package]: https://crates.io/crates/cloudabi
[CloudABI libc]: https://github.com/NuxiNL/cloudlibc
[WebAssembly System Interface]: docs/WASI-overview.md
[WASI intro]: docs/WASI-intro.md
[WASI tutorial]: docs/WASI-tutorial.md
Additional goals for Wasmtime include:
- Support a variety of host APIs (not just CloudABI), with fast calling sequences,
and develop proposals for system calls in the WebAssembly
- Support a variety of host APIs (not just WASI Core), with fast calling sequences,
and develop proposals for additional API modules to be part of WASI.
[Reference Sysroot](https://github.com/WebAssembly/reference-sysroot).
- Implement the [proposed WebAssembly C API].
- Facilitate testing, experimentation, and development around the [Cranelift] and