cargo wasi
A lightweight Cargo subcommand to build code for the wasm32-wasi
target.
Note: This subcommand is not ready for general use it. It is still in development. It's recommended to set your expectations appropriately as a consequence!
To install this Cargo subcommand, first you'll want to install Rust and then you'll execute:
$ cargo install cargo-wasi
After that you can verify it works via:
$ cargo wasi --version
Read more about installation in the guide!
The cargo wasi
subcommand is a thin wrapper around cargo
subcommands,
providing optimized defaults for the wasm32-wasi
target. Using cargo wasi
looks very similar to using cargo
:
cargo wasi build
— build your code in debug mode for the wasi target.
cargo wasi build --release
— build the optimized version of your *.wasm
.
cargo wasi run
— execute a binary.
cargo wasi test
— run your tests in wasm32-wasi
.
cargo wasi bench
— run your benchmarks in wasm32-wasi
.
In general, if you'd otherwise execute cargo foo --flag
you can likely execute
cargo wasi foo --flag
and everything will "just work" for the wasm32-wasi
target.
To give it a spin yourself, try out the hello-world versions of programs!
$ cargo new wasi-hello-world
Created binary (application) `wasi-hello-world` package
$ cd wasi-hello-world
$ cargo wasi run
Compiling wasi-hello-world v0.1.0 (/code/wasi-hello-world)
Finished dev [unoptimized + debuginfo] target(s) in 0.15s
Running `cargo-wasi target/wasm32-wasi/debug/wasi-hello-world.wasm`
Running `target/wasm32-wasi/debug/wasi-hello-world.wasm`
Hello, world!
Or a library with some tests:
``
$ cargo new wasi-hello-world --lib
Created library
wasi-hello-worldpackage
$ cd wasi-hello-world
$ cargo wasi test
Compiling wasi-hello-world v0.1.0 (/code/wasi-hello-world)
Finished dev [unoptimized + debuginfo] target(s) in 0.19s
Running target/wasm32-wasi/debug/deps/wasi_hello_world-9aa88657c21196a1.wasm
Running
/code/wasi-hello-world/target/wasm32-wasi/debug/deps/wasihelloworld-9aa88657c21196a1.wasm`
running 1 test test tests::it_works ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out ```
Read more about cargo wasi
usage in the
guide!
This project is licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
See the contributing section of the guide to start hacking on cargo
wasi
!