zust-vm 0.9.12

Cranelift JIT runtime for executing Zust modules.
Documentation
use anyhow::Result;
use dynamic::Type;

fn main() -> Result<()> {
    let vm = vm::Vm::with_all()?;

    vm.import_code(
        "demo",
        br#"
        pub fn add(a: i64, b: i64) {
            a + b
        }
        "#
        .to_vec(),
    )?;

    let compiled = vm.get_fn("demo::add", &[Type::I64, Type::I64])?;
    assert_eq!(compiled.ret_ty(), &Type::I64);

    let add: extern "C" fn(i64, i64) -> i64 = unsafe { std::mem::transmute(compiled.ptr()) };
    println!("40 + 2 = {}", add(40, 2));

    Ok(())
}