diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /third_party/rust/parity-wasm/README.md | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/parity-wasm/README.md')
-rw-r--r-- | third_party/rust/parity-wasm/README.md | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/third_party/rust/parity-wasm/README.md b/third_party/rust/parity-wasm/README.md new file mode 100644 index 0000000000..873fc5ef34 --- /dev/null +++ b/third_party/rust/parity-wasm/README.md @@ -0,0 +1,68 @@ +# parity-wasm + +Low-level WebAssembly format library. + +[![Build Status](https://travis-ci.org/paritytech/parity-wasm.svg?branch=master)](https://travis-ci.org/paritytech/parity-wasm) +[![crates.io link](https://img.shields.io/crates/v/parity-wasm.svg)](https://crates.io/crates/parity-wasm) + +[Documentation](https://docs.rs/parity-wasm/0.40.2/parity_wasm/) + +## Rust WebAssembly format serializing/deserializing + +Add to Cargo.toml + +```toml +[dependencies] +parity-wasm = "0.41" +``` + +and then + +```rust +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 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 parity-wasm builds it internally using `wabt-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 `wasm-opt` (https://github.com/WebAssembly/binaryen): + +- 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): + +```toml +[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. |