swasm-utils

Crates.ioswasm-utils
lib.rsswasm-utils
version0.6.1
sourcesrc
created_at2019-05-13 22:08:25.526154
updated_at2019-05-13 22:08:25.526154
descriptionCollection of command-line utilities and corresponding Rust api for producing pswasm-compatible executables
homepage
repository
max_upload_size
id134108
size133,480
Superstring.ch (SUSYLABS)

documentation

README

swasm-utils

Build Status

Collection of WASM utilities used in Susy and WASM contract development

Build tools for cargo

Easiest way to use is to install via cargo install:

cargo install swasm-utils-cli --bin swasm-build

Symbols pruning (swasm-prune)

cargo install swasm-utils-cli --bin swasm-prune
swasm-prune <input_swasm_binary.swasm> <output_swasm_binary.swasm>

This will optimize WASM symbols tree to leave only those elements that are used by contract call function entry.

Gas counter (swasm-gas)

For development puposes, raw WASM contract can be injected with gas counters (the same way as it done by Susy runtime when running contracts)

cargo install swasm-utils-cli --bin swasm-gas
swasm-gas <input_swasm_binary.swasm> <output_swasm_binary.swasm>

Externalization (swasm-ext)

Susy 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:

  • _malloc,
  • _free,
  • _memcpy,
  • _memset,
  • _memmove

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

cargo install swasm-utils-cli --bin swasm-ext
swasm-ext <input_swasm_binary.swasm> <output_swasm_binary.swasm>

API

All executables use corresponding api msods of the root crate and can be combined in other build tools.

License

swasm-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 swasm-utils by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Commit count: 0

cargo fmt