1 unstable release
Uses old Rust 2015
0.31.3 | May 14, 2019 |
---|
#2608 in Parser implementations
Used in 2 crates
230KB
6.5K
SLoC
susywasm
Low-level WebAssembly format library.
Rust WebAssembly format serializing/deserializing
Add to Cargo.toml
[dependencies]
susywasm = "0.31"
and then
extern crate susywasm;
let module = susywasm::deserialize_file("./res/cases/v1/hello.susywasm").unwrap();
assert!(module.code_section().is_some());
let code_section = module.code_section().unwrap(); // Part of the module with functions code
println!("Function count in susywasm file: {}", code_section.bodies().len());
Wabt Test suite
susywasm
supports full wabt testsuite (https://github.com/WebAssembly/testsuite), running asserts that involves deserialization.
To run testsuite:
- make sure you have all prerequisites to build
wabt
(since susywasm builds it internally usingwabt-rs
, see https://github.com/WebAssembly/wabt) - checkout with submodules (
git submodule update --init --recursive
) - run
cargo test --release --manifest-path=spec/Cargo.toml
Decoder can be fuzzed with cargo-fuzz
using susywasm-opt
(https://github.com/WebAssembly/binaryen):
- make sure you have all prerequisites to build
binaryen
andcargo-fuzz
(cmake
and a C++11 toolchain) - checkout with submodules (
git submodule update --init --recursive
) - install
cargo fuzz
subcommand withcargo install cargo-fuzz
- set rustup to use a nightly toolchain, because
cargo fuzz
uses a rust compiler plugin:rustup override set nightly
- run
cargo fuzz run deserialize
no_std
crates
This crate has a feature, std
, that is enabled by default. To use this crate
in a no_std
context, add the following to your Cargo.toml
:
[dependencies]
susywasm = { version = "0.31", default-features = false }
Until allocator api is stabilized, this type of use is limited to nightly Rust.
License
susywasm
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 susywasm by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.