crates.io link Build Status

susy-wasmi

WASM interpreter (previously lived in susy-wasm)

Primary purpose of susy-wasmi is to be used with susy (ethereum-like contracts in wasm) and with Polkadot. However, susy-wasmi is designed to be as flexible as possible and might be suited well for other purposes.

At the moment, the API is rather low-level (especially, in the part related to host functions). But some high-level API is on the roadmap.

License

susy-wasmi 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.

Build & Test

As susy-wasmi contains a git submodule, you need to use --recursive for cloning or to checkout the submodule explicitly, otherwise the testing would fail.

git clone https://github.com/susytech/susy-wasmi.git --recursive cd susy-wasmi cargo build cargo test

no_std support

This crate supports no_std environments. Enable the core feature and disable default features: toml [dependencies] susy-wasm = { version = "0.31", default-features = false, features = "core" }

The core feature requires the core and alloc libraries and a nightly compiler. Also, code related to std::error is disabled.

Floating point operations in no_std use libm, which sometimes panics in debug mode (https://github.com/japaric/libm/issues/4). So make sure to either use release builds or avoid WASM with floating point operations, for example by using deny_floating_point.

Contribution

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