23 releases (breaking)
|new 0.18.1||Aug 5, 2020|
|0.17.0||Jul 13, 2020|
|0.10.1||Mar 3, 2020|
|0.9.1||Jul 23, 2019|
|0.2.0||Mar 26, 2016|
#8 in Embedded development
1,619 downloads per month
Used in 11 crates (6 directly)
Rhai is an embedded scripting language and evaluation engine for Rust that gives a safe and easy way to add scripting to any application.
- All common CPU targets for Windows, Linux and MacOS.
- WebAssembly (WASM)
- 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
- Easily call a script-defined function from Rust.
- Fairly low compile-time overhead.
- Fairly efficient evaluation (1 million iterations in 0.3 sec on a single core, 2.3 GHz Linux VM).
- Relatively little
unsafecode (yes there are some for performance reasons).
- Re-entrant scripting engine can be made
Send + Sync(via the
- Function overloading.
- Operator overloading.
- Dynamic dispatch via function pointers with additional support for currying and closures.
- Some support for object-oriented programming (OOP).
- Organize code base with dynamically-loadable modules.
- Serialization/deserialization support via serde (requires the
- Scripts are optimized (useful for template-based machine-generated scripts) for repeated evaluations.
- Support for minimal builds by excluding unneeded language features.
- Sand-boxed - the scripting engine, if declared immutable, cannot mutate the containing environment unless explicitly permitted (e.g. via a
- Rugged - protected 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.
- Use as a DSL.
- Restrict the language by surgically disabling keywords and operators.
- Define custom operators.
- Extend the language with custom syntax.
See The Rhai Book for details on the Rhai scripting engine and language.
An Online Playground is available with syntax-highlighting editor. Scripts can be evaluated directly from the editor.
Licensed under either:
at your choice.
Unless explicitly stated otherwise, any contribution intentionally submitted for inclusion in this crate, as defined in the Apache-2.0 license, shall be dual-licensed as above, without any additional terms or conditions.