A Rust wrapper for QuickJS.
QuickJS is a new, small Javascript engine by Fabrice Bellard. It is fast and supports the full ES2020 specification.
This crate allows you to easily run and integrate with Javascript code from Rust.
toml
[dependencies]
quick-js = "0.2.2"
```rust 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.evalas::
// 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(); ```
By default, quickjs is bundled with the libquickjs-sys
crate and
automatically compiled, assuming you have the appropriate dependencies.
If you would like to use a system version instead, see below.
QuickJS will always be statically linked to your binary.
The crate supports the following features:
chrono
: adds chrono integration
JsValue::Date
variant that can be (de)serialized to/from a JS Date
patched
: applies QuickJS patches that can be found in libquickjs-sys/embed/patches
directory.To use the system installation, without the bundled feature, first install the required dependencies, and then compile and install quickjs.
```bash
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 ```