Skip to content
This repository has been archived by the owner on Oct 21, 2022. It is now read-only.

paritytech/parity-wasm

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
September 13, 2021 19:04
July 28, 2021 15:07
November 20, 2021 23:43
src
May 21, 2022 16:13
November 20, 2021 23:43
November 1, 2017 14:15
September 13, 2021 19:04
July 28, 2021 15:07
July 28, 2021 15:07

parity-wasm

⚠️ This repository/crate is deprecated and unmaintained: If you interested in maintaining this crate consider forking it. We can provide a link to the most promising forks here.

Low-level WebAssembly format library.

Build Status crates.io link

Documentation

Rust WebAssembly format serializing/deserializing

Add to Cargo.toml

[dependencies]
parity-wasm = "0.42"

and then

let module = parity_wasm::deserialize_file("./res/cases/v1/hello.wasm").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 wasm file: {}", code_section.bodies().len());

Wabt Test suite

parity-wasm supports full wasm testsuite, running asserts that involves deserialization.

To run testsuite:

  • checkout with submodules (git submodule update --init --recursive)
  • run cargo test --release --workspace

Decoder can be fuzzed with cargo-fuzz using wasm-opt:

  • make sure you have all prerequisites to build binaryen and cargo-fuzz (cmake and a C++11 toolchain)
  • checkout with submodules (git submodule update --init --recursive)
  • install cargo fuzz subcommand with cargo 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 (still requires allocator though):

[dependencies]
parity-wasm = { version = "0.41", default-features = false }

License

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

About

WebAssembly serialization/deserialization in rust

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages