Features

Easy

  • Easy-to-use language similar to JavaScript+Rust with dynamic typing.

  • Tight integration with native Rust functions and types including getters/setters, methods and indexers.

  • Freely pass Rust variables/constants into a script via an external Scope – all clonable Rust types are supported seamlessly without the need to implement any special trait.

  • Easily call a script-defined function from Rust.

  • Very few additional dependencies – right now only smallvec plus crates for procedural macros; for no-std and WASM builds, a number of additional dependencies are pulled in to provide for missing functionalities.

  • Plugins system powered by procedural macros simplifies custom API development.

Fast

  • Fairly low compile-time overhead.

  • Fairly efficient evaluation (1 million iterations in 0.3 sec on a single core, 2.3 GHz Linux VM).

  • Scripts are optimized (useful for template-based machine-generated scripts) for repeated evaluations.

Dynamic

Safe

  • Relatively little unsafe code (yes there are some for performance reasons).

  • Sand-boxed – the scripting Engine, if declared immutable, cannot mutate the containing environment unless explicitly permitted.

Rugged

Flexible