14 个版本

0.4.1 2021 年 3 月 15 日
0.3.6 2020 年 9 月 29 日
0.3.4 2020 年 7 月 9 日
0.3.1 2020 年 3 月 24 日
0.2.0 2019 年 7 月 30 日

#1544 in 网页编程

Download history 604/week @ 2024-03-14 593/week @ 2024-03-21 505/week @ 2024-03-28 483/week @ 2024-04-04 424/week @ 2024-04-11 524/week @ 2024-04-18 493/week @ 2024-04-25 464/week @ 2024-05-02 477/week @ 2024-05-09 558/week @ 2024-05-16 547/week @ 2024-05-23 545/week @ 2024-05-30 567/week @ 2024-06-06 658/week @ 2024-06-13 585/week @ 2024-06-20 295/week @ 2024-06-27

2,219 每月下载量
用于 16 库(6 个直接使用)

MIT 许可证

2.5MB
77K SLoC

C 71K SLoC // 0.0% comments Rust 6.5K SLoC // 0.0% comments

quickjs-rs

Crates.io docs.rs [Build Status

QuickJS 的 Rust 封装。

QuickJS 是由 Fabrice Bellard 和 Charlie Gordon 开发的一个新的、小巧的 Javascript 引擎。它速度快,支持完整的 ES2020 规范。

此库允许您轻松地从 Rust 运行和集成 Javascript 代码。

快速入门

[dependencies]
quick-js = "0.4.1"
use quick_js::{Context, JsValue};

let context = Context::new().unwrap();

// Eval.

let value = context.eval("1 + 2").unwrap();
assert_eq!(value, JsValue::Int(3));

let value = context.eval_as::<String>(" var x = 100 + 250; x.toString() ").unwrap();
assert_eq!(&value, "350");

// Callbacks.

context.add_callback("myCallback", |a: i32, b: i32| a + b).unwrap();

context.eval(r#"
    // x will equal 30
    var x = myCallback(10, 20);
"#).unwrap();

可选功能

此库支持以下功能

  • chrono:chrono 集成

    • 添加了一个可以(反)序列化为 JS DateJsValue::Date 变体
  • bigint:通过 num-bigint 支持任意精度整数

  • log:允许将 console.log 消息转发到 log 库。注意:必须使用 ContextBuilder::console(quick_js::console::LogConsole); 启用

  • patched 对于一些其他功能(如 bigint)会自动启用。您不需要手动启用此功能。应用 QuickJS 补丁,这些补丁可以在 libquickjs-sys/embed/patches 目录中找到。

安装

默认情况下,quickjs 与 libquickjs-sys 库捆绑在一起,并自动编译,假设您有适当的依赖项。

Windows 支持

仅通过 MSYS2 环境和 x86_64-pc-windows-gnu 目标架构支持 Windows。

如果您已安装MSYS2并且MSYS的bin目录已添加到系统路径,您可以使用以下命令编译quickjs:cargo build --target="x86_64-pc-windows-gnu"

目标也可以通过cargo配置文件或环境变量CARGO_BUILD_TARGET永久配置。

系统安装

要使用系统安装(不带捆绑功能),首先安装所需依赖,然后编译和安装quickjs。

# Debian/Ubuntu: apt-get install -y curl xz-utils build-essential gcc-multilib libclang-dev clang
mkdir quickjs 
curl -L https://bellard.org/quickjs/quickjs-2019-07-09.tar.xz | tar xJv -C quickjs --strip-components 1
cd quickjs
sudo make install

然后您需要禁用bundled功能,在libquickjs-sys包中强制使用系统版本。

依赖项