Skip to content
This repository was archived by the owner on Feb 14, 2025. It is now read-only.

bytecodealliance/cargo-wasi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.

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 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-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!

About

A lightweight Cargo subcommand to build Rust code for the `wasm32-wasi` target

Packages

No packages published

Contributors 13

Languages

Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!

Check out: eBank.nz (Art Generator) | Netwrck.com (AI Tools) | Text-Generator.io (AI API) | BitBank.nz (Crypto AI) | ReadingTime (Kids Reading) | RewordGame | BigMultiplayerChess | WebFiddle | How.nz | Helix AI Assistant