paritytech/wasm-utils

Name: wasm-utils

Owner: Parity Technologies

Description: null

Created: 2017-04-12 10:57:19.0

Updated: 2018-05-24 16:15:34.0

Pushed: 2018-05-21 19:57:31.0

Homepage: null

Size: 290

Language: Rust

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

wasm-utils

Build Status

Collection of WASM utilities used in Parity and WASM contract development

Build tools for cargo

Easiest way to use is to install via cargo install:

o install pwasm-utils-cli --bin wasm-build
Symbols pruning (wasm-prune)
o install pwasm-utils-cli --bin wasm-prune
-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 puposes, raw WASM contract can be injected with gas counters (the same way as it done by Parity runtime when running contracts)

o install pwasm-utils-cli --bin wasm-gas
-gas <input_wasm_binary.wasm> <output_wasm_binary.wasm>
Externalization (wasm-ext)

Parity WASM runtime provides some library functions that can be commonly found in libc. WASM binary size can be reduced and performance may be improved if these functions are used. This utility scans for invocations of the following functions inside the WASM binary:

And then substitutes them with invocations of the imported ones. Should be run before wasm-opt for better results.

o install pwasm-utils-cli --bin wasm-ext
-ext <input_wasm_binary.wasm> <output_wasm_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.

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.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.