wasmy WasmGroup-QQ42726807

wasmy, easily customize my wasm app!

features

crates

toml [dependencies] wasmy-vm = "0.5"

toml [dependencies] wasmy-abi = "0.5"

toml wasmy-macros = "0.5"

example

```rust use rand::random; use wasmyabi::*; use wasmyabi::test::*;

[wasm_handle(0)]

fn multiply(ctx: WasmCtx, args: TestArgs) -> Result { let rid = random::() as i32; println!("[Wasm-Simple({})] handle wasm method({}) ctx={:?}, args={{{:?}}}", rid, 0, ctx, args);

let mut vm_args = TestArgs::new();
vm_args.a = rid;
vm_args.b = rid;
let vm_rets: TestRets = ctx.call_vm(0, vm_args)?;
println!("[Wasm-Simple({})] call vm method({}): args={{{:?}}}, rets={}", rid, 0, vm_rets, vm_rets.get_c());

let mut rets = TestRets::new();
rets.set_c(args.a * args.b);
Ok(rets)

} ```

```rust use wasmy_vm::*; use crate::test::{TestArgs, TestRets};

...

fn main() { linkmod(); println!("wasmy, easily customize my wasm app!"); ... let wasmcaller = loadwasm(wasmpath).unwrap(); let mut data = TestArgs::new(); data.seta(2); data.setb(5); for i in 1..=3 { let res: TestRets = wasmcaller.call(0, data.clone()).unwrap(); println!("NO.{}: {}+{}={}", i, data.geta(), data.getb(), res.getc()) } }

// Make sure the mod is linked fn linkmod() { #[vmhandle(0)] fn add(args: TestArgs) -> Result { let mut rets = TestRets::new(); rets.setc(args.a + args.b); Ok(rets) } // more #[vmhandle(i32)] fn ... } ```

test simple example

```shell $ rustup target add wasm32-wasi

$ cargo +nightly build --target=wasm32-wasi --example=simple $ cargo +nightly run --example=vm -- ../../wasm32-wasi/debug/examples/simple.wasm ```

```shell $ rustup target add wasm32-wasi

$ cargo +nightly wasm simple $ cargo +nightly vm simple ```