Go to file
2020-06-23 10:43:24 +08:00
.ci Split no_stdlib and no_std into two features. 2020-03-18 12:04:26 +08:00
.github/workflows Undelete benchmark.yml 2020-05-01 17:57:59 +08:00
benches More benchmarks and examples. 2020-05-31 23:44:49 +08:00
doc Add internals feature. 2020-06-23 10:43:24 +08:00
examples Add iterator support for strings. 2020-06-16 09:34:30 +08:00
scripts More benchmarks and examples. 2020-05-31 23:44:49 +08:00
src Add internals feature. 2020-06-23 10:43:24 +08:00
tests Refine side_effects test. 2020-06-22 09:46:36 +08:00
.gitignore Add Rhai book. 2020-06-20 12:06:17 +08:00
.travis.yml Added no_std support 2020-03-17 19:26:11 +01:00
Cargo.toml Add internals feature. 2020-06-23 10:43:24 +08:00
LICENSE.txt Add LICENSE. 2020-03-22 00:32:07 +08:00
README.md Refine docs. 2020-06-22 22:02:49 +08:00
RELEASES.md Add internals feature. 2020-06-23 10:43:24 +08:00

Rhai - Embedded Scripting for Rust

GitHub last commit Travis (.org) license crates.io crates.io API Docs

Rhai is an embedded scripting language and evaluation engine for Rust that gives a safe and easy way to add scripting to any application.

Supported targets and builds

  • All common CPU targets for Windows, Linux and MacOS.
  • WebAssembly (WASM)
  • no-std

Features

  • 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.
  • Easily call a script-defined function from Rust.
  • Fairly low compile-time overhead.
  • Fairly efficient evaluation (1 million iterations in 0.25 sec on a single core, 2.3 GHz Linux VM).
  • Relatively little unsafe code (yes there are some for performance reasons, and most unsafe code is limited to one single source file, all with names starting with "unsafe_").
  • Re-entrant scripting engine can be made Send + Sync (via the [sync] feature).
  • Sand-boxed - the scripting engine, if declared immutable, cannot mutate the containing environment unless explicitly permitted (e.g. via a RefCell).
  • Rugged - protection against malicious attacks (such as stack-overflow, over-sized data, and runaway scripts etc.) that may come from untrusted third-party user-land scripts.
  • Track script evaluation progress and manually terminate a script run.
  • Function overloading.
  • Operator overloading.
  • Organize code base with dynamically-loadable modules.
  • Scripts are optimized (useful for template-based machine-generated scripts) for repeated evaluations.
  • Support for minimal builds by excluding unneeded language features.

Documentation

See The Rhai Book for details on the Rhai scripting engine and language.