27 releases
Uses old Rust 2015
| 0.1.28 | Jun 12, 2023 |
|---|---|
| 0.1.27 | Feb 1, 2023 |
| 0.1.26 | Jul 6, 2022 |
| 0.1.23 | Jul 29, 2021 |
| 0.1.18 | Nov 19, 2019 |
#7 in #wasm32-wasi
219 downloads per month
Used in cargo-wasi
3MB
Contains (Mach-o exe, 7.5MB) src/binary
cargo wasi is deprecated, use cargo component instead
This repository for the cargo wasi tool was created long before the Component
Model of today in a time where the future of WASI was much less certain than it
is now. Nowadays users looking to integrate Rust and WASI should use cargo component instead of `cargo wasi.
The original assumptions of cargo wasi, such as being based on wasm-bindgen,
are no longer applicable and the design direction of WASI has changed
significantly relative to when this tool was started.
See this comment for a few more details. Otherwise feel free to reach out on Zulip with any questions.
cargo wasi
A Bytecode Alliance project
A lightweight Cargo subcommand to build code for the wasm32-wasi target.
Guide | Contributing
Installation
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!
Usage
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 inwasm32-wasi. -
cargo wasi bench— run your benchmarks inwasm32-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-world` package
$ 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/wasi_hello_world-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!
License
This project is license under the Apache 2.0 license with the LLVM exception. See [LICENSE] for more details.
Contribution
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 licensed as above, without any additional terms or conditions.
See the contributing section of the guide to start hacking on cargo wasi!