easyjsr

Crates.ioeasyjsr
lib.rseasyjsr
version0.4.5
created_at2025-09-04 21:35:07.236746+00
updated_at2025-10-05 19:33:32.912914+00
descriptioneasyjs internal JS runtime
homepagehttps://jordanmcastro.com/easyjs
repositoryhttps://github.com/jordan-castro/easyjs
max_upload_size
id1824828
size2,723,232
Jordan Castro (jordan-castro)

documentation

README

easyjsr

Default runtime for easyjs. Rust wrapper of ejr.

usage

To use with easyjs you can set the runtime to easyjsr. It is also the default runtime.

easyjs repl --runtime easyjsr
> import 'std'
> @print('Hello World')

For developers

This is a really easy to use runtime for embedding in rust projects. Important thing to note is that it does not currently support MSVC builds. Only GNU/Clang. So if using windows make sure to install the correct build system.

rustup target add x86_64-pc-windows-gnu
# And build with
cargo build --target x86_64-pc-windows-gnu

Evaluating JS

let result = ejr.eval("1 + 1");
println!("{}", ejr.val_to_string(result)); // 2

Calling specific functions

let script = r##"
    function say_hello_to(name) {
        console.log('Hello', name);
    }
"##;

let result = ejr.call("say_hello_to", vec!["Jordan"]); // Hello Jordan

Creating callables

fn ___print(msg: String) {
    println!("{msg}");
}

ejr.register_callback("___print", ___print);

// Lambdas
ejr.register_callback("___log", |msg: String| {
    println!("{msg}");
});

Compiling JS into exe

This is mostly for libraries, you usually won't use this in an app.

compile_js_code(code);

// Or as a module
compile_js_code_as_module(code);

Use case

The use case of another JS runtime is specifically to be a high level wrapper for easy FFI use in:

  • Kazoku
  • easyjs
  • Going Up

All projects that use easyjs as scripting.

Commit count: 196

cargo fmt