Skip to content

Commit

Permalink
WASI prototype design, implementation, and documentation.
Browse files Browse the repository at this point in the history
This adds documents describing the WASI Core API, and an implementation in
Wasmtime.
  • Loading branch information
sunfishcode committed Mar 27, 2019
1 parent b0243b2 commit b2fefe7
Show file tree
Hide file tree
Showing 53 changed files with 12,801 additions and 23 deletions.
3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ wasmtime-runtime = { path = "wasmtime-runtime" }
wasmtime-jit = { path = "wasmtime-jit" }
wasmtime-obj = { path = "wasmtime-obj" }
wasmtime-wast = { path = "wasmtime-wast" }
wasmtime-wasi = { path = "wasmtime-wasi" }
docopt = "1.0.1"
serde = "1.0.75"
serde_derive = "1.0.75"
Expand All @@ -39,5 +40,7 @@ target-lexicon = { version = "0.3.0", default-features = false }
pretty_env_logger = "0.3.0"
file-per-thread-logger = "0.1.1"
wabt = "0.7"
libc = "0.2.50"
errno = "0.2.4"

[workspace]
29 changes: 15 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading

0 comments on commit b2fefe7

Please sign in to comment.