mirror of
https://github.com/pezkuwichain/wasm-instrument.git
synced 2026-04-22 04:27:57 +00:00
47 lines
1.5 KiB
Markdown
47 lines
1.5 KiB
Markdown
# wasm-utils
|
|
|
|
Collection of WASM utilities used in Parity and WASM contract devepment
|
|
|
|
## Build tools for cargo
|
|
|
|
Easiest way to use is to install via `cargo install`:
|
|
|
|
```
|
|
cargo install --git https://github.com/paritytech/wasm-utils wasm-build
|
|
```
|
|
|
|
## Symbols pruning (wasm-prune)
|
|
|
|
```
|
|
cargo run --release --bin wasm-prune -- <input_binary.wasm> <output_binary.wasm>
|
|
```
|
|
|
|
This will optimize WASM symbols tree to leave only those elements that are used by contract `_call` function entry.
|
|
|
|
## Gas counter (wasm-gas)
|
|
|
|
For development puposes, raw WASM contract can be injected with gas counters (the same way as it done by Parity runtime when running contracts)
|
|
|
|
```
|
|
cargo run --release --bin wasm-gas -- <input_binary.wasm> <output_binary.wasm>
|
|
```
|
|
|
|
## Allocators substiution (wasm-ext)
|
|
|
|
Parity WASM runtime provides simple memory allocators, if contract requires. When relied on this allocators, WASM binary size can be greatly reduced. This utility scans for `_malloc`, `_free` invokes inside the WASM binary and substitutes them with invokes of the imported `_malloc`, `_free`. Should be run before `wasm-opt` for better results.
|
|
|
|
```
|
|
cargo run --release --bin wasm-ext -- <input_binary.wasm> <output_binary.wasm>
|
|
```
|
|
|
|
## API
|
|
|
|
All executables use corresponding api methods of the root crate and can be combined in other build tools.
|
|
|
|
# License
|
|
|
|
`wasm-utils` is primarily distributed under the terms of both the MIT
|
|
license and the Apache License (Version 2.0), at your choice.
|
|
|
|
See LICENSE-APACHE, and LICENSE-MIT for details.
|