summaryrefslogtreecommitdiffstats
path: root/third_party/rust/parity-wasm/README.md
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /third_party/rust/parity-wasm/README.md
parentInitial commit. (diff)
downloadfirefox-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.md68
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.