5 unstable releases
|0.3.1||Jan 4, 2022|
|0.3.0||Jan 1, 2022|
|0.2.1||Jan 1, 2022|
|0.2.0||Dec 31, 2021|
|0.1.0||Dec 31, 2021|
#236 in Development tools
1,494 downloads per month
Simple WASM Runner
This is a simple wrapper program to run a WASM runtime (currently one of
as a runner for things like
cargo run. This is useful when wanting to use a target such as
wasm32-wasi without the
wasm-pack for example, just running
cargo run or
cargo test in a package
wasm32-wasi target. Cargo expects a runner to take the program executable followed by its arguments,
and most WASM runtimes have a particular structure to their arguments
(e.g., requiring a
-- before program arguments).
cargo-wasi is a great, more integrated solution, but if you want or need control over how the
WASM runtime is executed (e.g., passing runtime options down to the runner), this simple wrapper may meet your needs.
Install the runner using cargo:
$ cargo install wasm-runner
You can install directly from the source tree as:
$ cargo install --path=.
After this you can now have a
.cargo/config.toml that uses this runner to execute your binaries for WASM targets.
[target.'cfg(target_arch="wasm32")'] runner = ["wasm-runner", "wasmer"]
wasmer is in your
PATH, but you can also specify the full path if you like.
At this point assuming
wasm32-wasi is installed as a target in your toolchain (e.g.,
rustup target add wasm32-wasi),
you can run unit tests or binaries with:
$ cargo --target wasm32-wasi test $ cargo --target wasm32-wasi run -- some arguments
There are some environment variables that can add additional configurability
[env] Cargo configuration key):
WASM_RUNNER_VERBOSEvariable can be set (to any value such as
1)to get diagnostic output as to what the runner is doing.
WASM_RUNNER_RT_ARGSenvironment variable can take a JSON array of strings to pass runtime arguments.
You can run everything without a configuration file if you so choose:
$ WASM_RUNNER_RT_ARGS='["--enable-all", "--llvm"]' \ WASM_RUNNER_VERBOSE=1 \ CARGO_TARGET_WASM32_WASI_RUNNER="wasm-runner wasmer" \ cargo run --target=wasm32-wasi -- hello world
test-wasm folder has a simple crate that is configured to run the wrapper with
$ (cd test-wasm && cargo run --verbose -- hello world)
- CI testing for
- Ability to support other runtimes such as
This project is licensed under the Apache-2.0 License.