#pwasm #gas #utilities #collection #stack #optimization #metering

no-std bin+lib pwasm-utils

Collection of command-line utilities and corresponding Rust api for producing pwasm-compatible executables

33 releases (18 breaking)

0.19.0 Jan 17, 2022
0.18.2 Sep 7, 2021
0.18.1 Jun 10, 2021
0.17.0 Dec 12, 2020
0.1.4 Mar 27, 2018

#3 in #pwasm

Download history 3576/week @ 2024-11-15 4483/week @ 2024-11-22 4482/week @ 2024-11-29 6141/week @ 2024-12-06 6240/week @ 2024-12-13 2226/week @ 2024-12-20 1042/week @ 2024-12-27 4241/week @ 2025-01-03 7108/week @ 2025-01-10 5196/week @ 2025-01-17 6383/week @ 2025-01-24 5405/week @ 2025-01-31 6882/week @ 2025-02-07 4968/week @ 2025-02-14 6243/week @ 2025-02-21 4186/week @ 2025-02-28

23,421 downloads per month
Used in 42 crates (9 directly)

MIT/Apache

200KB
5.5K SLoC

pwasm-utils

⚠️ This repository/crate is deprecated and unmaintained: Switch to wasm-instrument in order to use wasm instrumentation (gas metering, stack height limiter) in your project. For wasm code optimization binaryen should be used.

A collection of WASM utilities used in pwasm-ethereum and substrate contract development.

This repository contains the package pwasm-utils which consists of a library crate and a collection of cli binaries that make use of this library.

Installation of cli tools

cargo install pwasm-utils --features cli

This will install the following binaries:

  • wasm-build
  • wasm-check
  • wasm-ext
  • wasm-gas
  • wasm-pack
  • wasm-prune
  • wasm-stack-height

Symbols pruning (wasm-prune)

wasm-prune <input_wasm_binary.wasm> <output_wasm_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 purposes, a raw WASM contract can be injected with gas counters (the same way as it done in the pwasm-ethereum/substrate runtime when running contracts)

wasm-gas <input_wasm_binary.wasm> <output_wasm_binary.wasm>

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.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in wasm-utils by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~0.4–8MB
~59K SLoC