hebi 0.4.0

A dynamic scripting language
Documentation
use hebi::prelude::*;

fn main() {
  fn print_value(scope: Scope) -> hebi::Result<()> {
    let value = scope.param::<Value>(0)?;
    scope.global().println(format_args!("value is: {value}"))?;
    Ok(())
  }

  let module = NativeModule::builder("example")
    .function("print_value", print_value)
    .finish();

  let mut hebi = Hebi::builder().output(Vec::<u8>::new()).finish();
  hebi.register(&module);
  hebi
    .eval(
      r#"
import example
example.print_value(100)
"#,
    )
    .unwrap();

  let output = String::from_utf8(
    hebi
      .global()
      .output()
      .as_any()
      .downcast_ref::<Vec<u8>>()
      .cloned()
      .unwrap(),
  )
  .unwrap();
  print!("{output}");
}