• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/workflows/H03-May-2022-4440

src/H03-May-2022-1,9431,089

.cargo-checksum.jsonH A D03-May-202289 11

.gitignoreH A D30-Oct-201830 43

.gitmodulesH A D16-Nov-2019115 43

CODE_OF_CONDUCT.mdH A D16-Nov-20193.4 KiB5030

CONTRIBUTING.mdH A D11-Jul-2019397 96

Cargo.tomlH A D01-Jan-19701.3 KiB4439

Cargo.toml.orig-cargoH A D02-Dec-2019955 3126

LICENSE-APACHEH A D29-Aug-201910.6 KiB202169

LICENSE-Apache-2.0_WITH_LLVM-exceptionH A D29-Aug-201912 KiB221182

LICENSE-MITH A D29-Aug-20191,023 2421

ORG_CODE_OF_CONDUCT.mdH A D16-Nov-20197.1 KiB144116

README.mdH A D23-Nov-20192.4 KiB7759

SECURITY.mdH A D16-Nov-20191.8 KiB3017

old-bitflags.patchH A D22-Jul-201924 KiB571559

README.md

1<div align="center">
2  <h1><code>wasi</code></h1>
3
4<strong>A <a href="https://bytecodealliance.org/">Bytecode Alliance</a> project</strong>
5
6  <p>
7    <strong>WASI API Bindings for Rust</strong>
8  </p>
9
10  <p>
11    <a href="https://crates.io/crates/wasi"><img src="https://img.shields.io/crates/v/wasi.svg?style=flat-square" alt="Crates.io version" /></a>
12    <a href="https://crates.io/crates/wasi"><img src="https://img.shields.io/crates/d/wasi.svg?style=flat-square" alt="Download" /></a>
13    <a href="https://docs.rs/wasi/"><img src="https://img.shields.io/badge/docs-latest-blue.svg?style=flat-square" alt="docs.rs docs" /></a>
14  </p>
15</div>
16
17This crate contains API bindings for [WASI](https://github.com/WebAssembly/WASI)
18system calls in Rust, and currently reflects the `wasi_snapshot_preview1`
19module. This crate is quite low-level and provides conceptually a "system call"
20interface. In most settings, it's better to use the Rust standard library, which
21has WASI support.
22
23The `wasi` crate is also entirely procedurally generated from the `*.witx` files
24describing the WASI apis. While some conveniences are provided the bindings here
25are intentionally low-level!
26
27# Usage
28
29First you can depend on this crate via `Cargo.toml`:
30
31```toml
32[dependencies]
33wasi = "0.8.0"
34```
35
36Next you can use the APIs in the root of the module like so:
37
38```rust
39fn main() {
40    let stdout = 1;
41    let message = "Hello, World!\n";
42    let data = [wasi::Ciovec {
43        buf: message.as_ptr(),
44        buf_len: message.len(),
45    }];
46    wasi::fd_write(stdout, &data).unwrap();
47}
48```
49
50Next you can use a tool like [`cargo
51wasi`](https://github.com/bytecodealliance/cargo-wasi) to compile and run your
52project:
53
54To compile Rust projects to wasm using WASI, use the `wasm32-wasi` target,
55like this:
56
57```
58$ cargo wasi run
59   Compiling wasi v0.8.0+wasi-snapshot-preview1
60   Compiling wut v0.1.0 (/code)
61    Finished dev [unoptimized + debuginfo] target(s) in 0.34s
62     Running `/.cargo/bin/cargo-wasi target/wasm32-wasi/debug/wut.wasm`
63     Running `target/wasm32-wasi/debug/wut.wasm`
64Hello, World!
65```
66
67# License
68
69This project is licensed under the Apache 2.0 license with the LLVM exception.
70See [LICENSE](LICENSE) for more details.
71
72### Contribution
73
74Unless you explicitly state otherwise, any contribution intentionally submitted
75for inclusion in this project by you, as defined in the Apache-2.0 license,
76shall be licensed as above, without any additional terms or conditions.
77