## About
`wasm-snip` replaces a WebAssembly function's body with an `unreachable`.
Maybe you know that some function will never be called at runtime, but the
compiler can't prove that at compile time? Snip it! All the functions it
transitively called — which weren't called by anything else and therefore
could also never be called at runtime — will get removed too.
Very helpful when shrinking the size of WebAssembly binaries!
This functionality relies on the "name" section being present in the `.wasm`
file, so build with debug symbols:
```toml
[profile.release]
debug = true
```
* [Executable](#executable)
* [Library](#library)
* [License](#license)
* [Contributing](#contributing)
### Executable
To install the `wasm-snip` executable, run
```
$ cargo install wasm-snip
```
You can use `wasm-snip` to remove the `annoying_space_waster`
function from `input.wasm` and put the new binary in `output.wasm` like this:
```
$ wasm-snip input.wasm -o output.wasm annoying_space_waster
```
For information on using the `wasm-snip` executable, run
```
$ wasm-snip --help
```
And you'll get the most up-to-date help text, like:
```
Replace a wasm function with an `unreachable`.
USAGE:
wasm-snip [FLAGS] [OPTIONS] [--] [function]...
FLAGS:
-h, --help Prints help information
--snip-rust-fmt-code Snip Rust's `std::fmt` and `core::fmt` code.
--snip-rust-panicking-code Snip Rust's `std::panicking` and `core::panicking` code.
-V, --version Prints version information
OPTIONS:
-o, --output