#run-time #configurable #quick-js #javascript #bytecode #anyhow

javy

可配置的 WebAssembly JavaScript 运行时

5 个稳定版本

3.0.0 2024年6月28日
2.2.0 2024年1月31日
2.1.0 2023年9月11日
2.0.0 2023年8月17日
1.0.0 2023年5月17日

#1247 in WebAssembly

Download history 2/week @ 2024-04-22 9/week @ 2024-05-20 5/week @ 2024-05-27 32/week @ 2024-06-03 16/week @ 2024-06-10 6/week @ 2024-06-17 127/week @ 2024-06-24 27/week @ 2024-07-01 7/week @ 2024-07-22 66/week @ 2024-07-29 9/week @ 2024-08-05

82 每月下载量

Apache-2.0 WITH LLVM-exception

115KB
2.5K SLoC

Javy

WebAssembly 的可配置 JavaScript 运行时

Documentation Status crates.io status

通过 rquickjs crate 使用 QuickJS 来评估 JavaScript 源代码或 QuickJS 字节码。

参阅 crate 级别文档 了解更多信息。

示例用法

use anyhow::anyhow;
use javy::{Runtime, from_js_error};
let runtime = Runtime::default();
let context = runtime.context();

context.with(|cx| {
    let globals = this.globals();
    globals.set(
        "print_hello",
        Function::new(
            this.clone(),
            MutFn::new(move |_, _| {
                println!("Hello, world!");
            }),
        )?,
    )?;
 });

context.with(|cx| {
    cx.eval_with_options(Default::default(), "print_hello();")
         .map_err(|e| from_js_error(cx.clone(), e))
         .map(|_| ())
});

发布到 crates.io

要将此 crate 发布到 crates.io,运行 ./publish.sh

依赖关系

~8–12MB
~279K SLoC