Contributing to cargo-wasi

This section contains instructions on how to get this project up and running for development. Source code for this project lives on GitHub at https://github.com/bytecodealliance/cargo-wasi.

Prerequisites

  1. The cargo-wasi subcommand is written in Rust, so you'll want Rust installed

  2. Running tests requires wasmtime is installed and in $PATH or an existing runtime provided via CARGO_TARGET_WASM32_WASI_RUNNER.

Getting the code

You'll clone the code via git:

$ git clone https://github.com/bytecodealliance/cargo-wasi

Testing changes

We'd like tests ideally to be written for all changes. Test can be run via:

$ cargo test

You'll be adding tests primarily to tests/tests/*.rs.

Submitting changes

Changes to cargo-wasi are managed through Pull Requests, and anyone is more than welcome to submit a pull request! We'll try to get to reviewing it or responding to it in at most a few days.

Code Formatting

Code is required to be formatted with the current Rust stable's cargo fmt command. This is checked on CI.

Continuous Integration

The CI for the cargo-wasi repository is relatively significant. It tests changes on Windows, macOS, and Linux. It also performs a "dry run" of the release process to ensure that release binaries can be built and are ready to be published.

Publishing a New Version

Publication of this crate is entirely automated via CI. A publish happens whenever a tag is pushed to the repository, so to publish a new version you'll want to make a PR that bumps the version numbers (see the bump.rs scripts in the root of the repository), merge the PR, then tag the PR and push the tag. That should trigger all that's necessary to publish all the crates and binaries to crates.io.