A Rust wrapper for QuickJS.
QuickJS is a new, small Javascript engine by Fabrice Bellard and Charlie Gordon. 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.3.0"
```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
bigint
: arbitrary precision integer support via num-bigintpatched
: applies QuickJS patches that can be found in libquickjs-sys/embed/patches
directory.log
: allows forwarding console.log
messages to the log
crate.
Note: must be enabled with ContextBuilder::console(quick_js::console::LogConsole);
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 ```