This repository was created for the purpose of learning how Wasm works. Please do not use it in production.
If you want to learn how Wasm runtime works, I recommend this book :)
https://skanehira.github.io/writing-a-wasm-runtime-in-rust/
$ cat (module (func $add (export "add") (param i32 i32) (result i32) (local.get 0) (local.get 1) (i32.add) ) ) $ wat2wasm add.wat $ cargo run -- add.wasm add 1 2 Finished dev [unoptimized + debuginfo] target(s) in 0.09s Running `target/debug/chibiwasm add.wasm add 1 2` 3
use chibiwasm::{Runtime, Value}; fn main() -> anyhow::Result<()> { let mut runtime = Runtime::from_file("examples/fib.wasm", None)?; if let Some(output) = runtime.call("fib".into(), vec![Value::I32(10)])? { println!("output: {}", output); } Ok(()) }
$ cargo run -q --example fib output: 89
$ cargo make testBase on core 1.
https://www.w3.org/TR/wasm-core-1/
The list is base on https://github.com/WebAssembly/spec/tree/wg-1.0/test/core
NOTE: Checking only the test cases that have passed both assert_return and assert_trap.
- address.wast
- align.wast
- binary_leb128.wast
- binary.wast
- block.wast
- br.wast
- br_if.wast
- br_table.wast
- break_drop.wast
- call.wast
- call_indirect.wast
- comments.wast
- const.wast
- conversions.wast
- custom.wast
- data.wast
- elem.wast
- endianness.wast
- exports.wast
- f32.wast
- f32_bitwise.wast
- f32_cmp.wast
- f64.wast
- f64_bitwise.wast
- f64_cmp.wast
- fac.wast
- float_exprs.wast
- float_literals.wast
- float_memory.wast
- float_misc.wast
- forward.wast
- func.wast
- func_ptrs.wast
- globals.wast
- i32.wast
- i64.wast
- if.wast
- imports.wast
- inline_module.wast
- int_exprs.wast
- int_literals.wast
- labels.wast
- left_to_right.wast
- linking.wast
- load.wast
- local_get.wast
- local_set.wast
- local_tee.wast
- loop.wast
- memory.wast
- memory_grow.wast
- memory_redundancy.wast
- memory_size.wast
- memory_trap.wast
- names.wast
- nop.wast
- return.wast
- select.wast
- skip_stack_guard_page.wast
- stack.wast
- start.wast
- store.wast
- switch.wast
-
(削除) token.wast (削除ここまで) - traps.wast
- type.wast
- unreachable.wast
-
(削除) unreached_invalid.wast (削除ここまで) - unwind.wast
-
(削除) utf8_custom_section_id.wast (削除ここまで) -
(削除) utf8_import_field.wast (削除ここまで) -
(削除) utf8_import_module.wast (削除ここまで) -
(削除) utf8_invalid_encoding.wast (削除ここまで)
This software includes the work that is distributed in the Apache License 2.0.