0ff9b8790a
Fix no_std build |
||
---|---|---|
.ci | ||
benches | ||
doc | ||
examples | ||
scripts | ||
src | ||
tests | ||
.gitignore | ||
.travis.yml | ||
Cargo.toml | ||
LICENSE.txt | ||
README.md | ||
RELEASES.md |
Rhai - Embedded Scripting for Rust
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 JS+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 mostunsafe
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 script engine and language.