Configuration

The cargo wasi subcomand does not have any CLI flags of its own but it's still not a one-size-fits-all command, so configuration needs to go somewhere! The cargo wasi command supports TOML-based configuration stored in your workspace Cargo.toml in the [package.metadata] section:

[package.metadata]
# ...

The keys supported by cargo wasi are:

[package.metadata]
wasm-opt = true
wasm-name-section = true
wasm-producers-section = true

For more documentation about each key, see its section below.

wasm-opt

This configuration option is a boolean value (true or false) which indicates whether the wasm-opt optimization tool from the binaryen toolkit might be executed to further optimize the produced WebAssembly binaries. The default for this option is true.

If this option is set to false, then wasm-opt will never be executed.

If this option is set to true, this does not mean wasm-opt will unconditionally run for all builds. A value of true means that wasm-opt may run, depending on the internal heuristics of cargo wasi. For more information about these heuristics and caveats, see the documentation about running wasm-opt.

wasm-name-section

The name custom section records debugging information as names for wasm functions and variables. If you want reasonable stack traces or debug information it's recommended to have the name section present. Builds optimized for size though that have other channels of debugging may wish to disable this.

This configuration option is a boolean value (true or false) which indicates whether the name section should be present or not. This option defaults to true.

If this option is set to false then it only takes effect when a build is produced without debuginfo. For example a cargo wasi build binary which has debuginfo would still have the name section present. A cargo wasi build --release binary, however, would not have debuginfo and would also have the name section removed.

wasm-producers-section

The producers custom section records tools used to produce a WebAssembly module. This is meant for metric collection in production systems, and is generally harmless to include. Builds micro-optimized for size, however, may wish to exclude it.

This configuration option is a boolean value (true or false) which indicates whether the producers section should be present or not. This option defaults to true.

If this option is set to false then it only takes effect when a build is produced without debuginfo. For example a cargo wasi build binary which has debuginfo would still have the producers section present. A cargo wasi build --release binary, however, would not have debuginfo and would also have the producers section removed.