3 个版本
0.5.2 | 2023年8月21日 |
---|---|
0.5.1 | 2023年8月21日 |
0.5.0 | 2023年8月21日 |
#897 在 编程语言
2.5MB
78K SLoC
quickjs-rs
A Rust 对 QuickJS 的包装。
QuickJS 是由 Fabrice Bellard 和 Charlie Gordon 开发的一个新的、小巧的 JavaScript 引擎。它运行速度快,支持完整的 ES2020 规范。
此包允许您轻松地在 Rust 中运行和集成 JavaScript 代码。
快速入门
[dependencies]
quick-js = "0.4.1"
use quickjs_rs::{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 集成- 添加了一个
JsValue::Date
变体,它可以与 JSDate
进行序列化和反序列化
- 添加了一个
-
bigint
:通过 num-bigint 支持任意精度整数 -
log
:允许将console.log
消息转发到log
包。注意:必须使用ContextBuilder::console(quickjs_rs::console::LogConsole);
启用 -
patched
:对于一些其他功能,如bigint
,将自动启用。您通常不需要手动启用此功能。应用 QuickJS 补丁,这些补丁可以在libquickjs-sys/embed/patches
目录中找到。
安装
默认情况下,quickjs 与 libquickjs-sys
包捆绑在一起,并自动编译,假设您已安装适当的依赖项。
Windows 支持
Windows 只支持使用 MSYS2 环境和 x86_64-pc-windows-gnu
目标架构。
如果您已安装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
然后您需要在libquickjs-sys
包中禁用bundled
功能,以强制使用系统版本。