| Crates.io | swasm |
| lib.rs | swasm |
| version | 0.31.3 |
| created_at | 2019-05-13 22:06:26.218727+00 |
| updated_at | 2019-05-13 22:06:26.218727+00 |
| description | WebAssembly binary format serialization/deserialization/interpreter |
| homepage | https://github.com/susytech/swasm |
| repository | https://github.com/susytech/swasm |
| max_upload_size | |
| id | 134107 |
| size | 254,201 |
Low-level WebAssembly format library.
Add to Cargo.toml
[dependencies]
swasm = "0.31"
and then
extern crate swasm;
let module = swasm::deserialize_file("./res/cases/v1/hello.swasm").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 swasm file: {}", code_section.bodies().len());
swasm supports full wabt testsuite (https://github.com/WebAssembly/testsuite), running asserts that involves deserialization.
To run testsuite:
wabt (since swasm builds it internally using wabt-rs, see https://github.com/WebAssembly/wabt)git submodule update --init --recursive)cargo test --release --manifest-path=spec/Cargo.tomlDecoder can be fuzzed with cargo-fuzz using swasm-opt (https://github.com/WebAssembly/binaryen):
binaryen and cargo-fuzz (cmake and a C++11 toolchain)git submodule update --init --recursive)cargo fuzz subcommand with cargo install cargo-fuzzcargo fuzz uses a rust compiler plugin: rustup override set nightlycargo fuzz run deserializeno_std cratesThis 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]
swasm = { version = "0.31", default-features = false }
Until allocator api is stabilized, this type of use is limited to nightly Rust.
swasm 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.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in swasm by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.