Crates.io | quickjspp |
lib.rs | quickjspp |
version | 0.6.0-rc.1 |
source | src |
created_at | 2023-03-04 18:45:02.090174 |
updated_at | 2024-05-18 18:16:38.601883 |
description | QuickJS Javascript engine wrapper using quickjs fork named quickjspp |
homepage | |
repository | https://github.com/Icemic/quickjspp-rs |
max_upload_size | |
id | 800749 |
size | 209,406 |
This is a fork of quickjs-rs but replaces the binding to the original quickjs by Fabrice Bellard with its fork quickjspp by Andrew Fedoniouk, which is MSVC compatible/compileable.
QuickJS is a new, small Javascript engine by Fabrice Bellard and Charlie Gordon. It is fast and supports the full ES2020 specification.
QuickJSpp is a fork of Quickjs By Andrew Fedoniouk (a.k.a. c-smile).
This crate allows you to easily run and integrate with Javascript code from Rust.
[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();
The crate supports the following features:
serde
: (default enabled). enable serde method from_js
and to_js
to transform between Rust types and js value in quickjs context. It should compatible with serde_json
but not tested yet. See more on the example.
chrono
: chrono integration
JsValue::Date
variant that can be (de)serialized to/from a JS Date
bigint
: arbitrary precision integer support via num-bigint
log
: allows forwarding console.log
messages to the log
crate.
Note: must be enabled with ContextBuilder::console(quickjspp::console::LogConsole);
patched
Enabled automatically for some other features, like bigint
.
You should not need to enable this manually.
Applies QuickJS patches that can be found in libquickjs-sys/embed/patches
directory.
By default, quickjs is bundled with the libquickjs-sys
crate and
automatically compiled, assuming you have the appropriate dependencies.
quickjspp-rs can be used under target x86_64-pc-windows-msvc
,
To use the system installation, without the bundled feature, first install the required dependencies, and then compile and install quickjspp.
You then need to disable the bundled
feature in the libquickjs-sys
crate to
force using the system version.