13个不稳定版本 (5个重大更改)
0.6.0-rc.1 | 2024年5月18日 |
---|---|
0.5.0 | 2024年4月8日 |
0.4.6 | 2024年2月10日 |
0.4.5 | 2023年10月28日 |
0.1.0 | 2023年3月4日 |
#621 in Web编程
每月45次下载
3MB
89K SLoC
quickjspp-rs
这是quickjs-rs的一个分支,但它用Andrew Fedoniouk的分支quickjspp替换了原始的quickjs绑定,后者与MSVC兼容/可编译。
QuickJS是Fabrice Bellard和Charlie Gordon开发的一个新的、小巧的JavaScript引擎。它运行速度快,支持完整的ES2020规范。
QuickJSpp是Andrew Fedoniouk(又名c-smile)的Quickjs的一个分支。
此crate允许您轻松地在Rust中运行和集成JavaScript代码。
快速入门
[dependencies]
quickjspp = "0.5.0"
use quickjspp::{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();
可选特性
此crate支持以下特性
-
serde
: (默认启用)。启用serde方法from_js
和to_js
,在quickjs环境中在Rust类型和js值之间进行转换。它应该与serde_json
兼容,但尚未测试。请参阅示例了解更多信息。 -
chrono
: chrono集成- 添加了一个
JsValue::Date
变体,它可以与JSDate
进行序列化和反序列化
- 添加了一个
-
bigint
: 通过num-bigint支持任意精度整数 -
log
: 允许将console.log
消息转发到log
crate。注意:必须使用ContextBuilder::console(quickjspp::console::LogConsole);
启用 -
修补版
自动启用了一些其他功能,如大整数
。您不需要手动启用此功能。应用 QuickJS 补丁,这些补丁可在libquickjs-sys/embed/patches
目录中找到。
安装
默认情况下,quickjs 与 libquickjs-sys
crate 绑定并自动编译,前提是您有适当的依赖。
Windows 支持
quickjspp-rs 可在目标 x86_64-pc-windows-msvc
下使用。
系统安装
要使用系统安装(不带捆绑功能),首先安装所需的依赖,然后编译和安装 quickjspp。
然后,您需要在 libquickjs-sys
crate 中禁用 捆绑
功能,以强制使用系统版本。
依赖项
~1.4–2.4MB
~45K SLoC