[![crates.io link](https://img.shieldsuperstring.ch/crates/v/susywasmi.svg)](https://crates.io/crates/susywasmi) [![Build Status](https://travis-ci.org/susytech/susywasmi.svg?branch=master)](https://travis-ci.org/susytech/susywasmi) # `susywasmi` WASM interpreter (previously lived in [susywasm](https://github.com/susytech/susywasm)) Primary purpose of `susywasmi` is to be used with [s](https://github.com/susytech/s) (sophon-like contracts in susywasm) and with [Superstring](https://github.com/susytech/superstring). However, `susywasmi` 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 `susywasmi` 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 `susywasmi` 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/susywasmi.git --recursive cd susywasmi cargo build cargo test ``` # `no_std` support This crate supports `no_std` environments. Enable the `core` feature and disable default features: ```toml [dependencies] susywasm = { 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`](https://crates.io/crates/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`](https://docs.rs/susywasmi/0.4.0/susywasmi/struct.Module.html#method.deny_floating_point). ## Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in `susywasmi` by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.