wain-validate

crates.io CI

wain-validate is a crate to validate a parsed WebAssembly abstract syntax tree. Validation logic is defined in spec

This crate is part of larger wain project.

Installation

toml [dependencies] wain-validate = "0"

Usage

It takes a reference to wain_ast::Root value and validates it. The value can be generated by wain-syntax-binary and wain-syntax-text parsers:

Using wain_validate::validate() is the easiest way.

```rust extern crate wainsyntaxbinary; extern crate wain_validate;

use std::fs; use wainsyntaxbinary::parse; use wain_validate::validate;

let source = fs::read("foo.wasm").unwrap(); let tree = parse(&source).unwrap();

if let Err(err) = validate(&tree) { eprintln!("This .wasm file is invalid!: {}", err); } ```

Working examples can be seen at examples/api/ directory

Please read documentation (not yet) for details.

Implementation

Conforming spec, following things are validated:

Conforming the spec, wain validates instructions after unreachable instruction. For example,

wat (unreachable) (i64.const 0) (i32.add)

i32.add is invalid because it should take two i32 values from stack but at least one i64 value is in the stack.

License

the MIT license