百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
R

rhai

> 编程语言
开源

Rhai - Rust 的嵌入式脚本语言。

5.6K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

Rhai - Rust 的嵌入式脚本语言。

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.

Targets and builds

  • All CPU and O/S targets supported by Rust, including:
    • WebAssembly (WASM)
    • no-std
  • Minimum Rust version 1.66.0

Standard features

  • Simple language similar to JavaScript+Rust with dynamic typing.
  • Fairly efficient evaluation - 1 million iterations in 0.14 sec on a single-core 2.6 GHz Linux VM running this script by the standard AST walker.
  • Rhai Grain bytecodes compiler and VM for even faster evaluation (around 1.8-2x). Enable with the grain feature.
  • Tight integration with native Rust functions and types, including getters/setters, methods and indexers.
  • Freely pass Rust values into a script as variables/constants via an external Scope - all clonable Rust types are supported; no need to implement any special trait. Or tap directly into the variable resolution process.
  • Built-in support for most common data types including booleans, integers, floating-point numbers (including Decimal), strings, Unicode characters, arrays (including packed byte arrays) and object maps.
  • Easily call a script-defined function from Rust.
  • Relatively little unsafe code (yes there are some for performance reasons).
  • Few dependencies - currently only smallvec, thin-vec, num-traits, once_cell, ahash, bitflags and smartstring.
  • Re-entrant scripting engine can be made Send + Sync (via the sync feature).
  • Compile once to AST form for repeated evaluations.
  • Scripts are optimized (useful for template-based machine-generated scripts).
  • Easy custom API development via plugins system powered by procedural macros.
  • Function overloading and operator overloading.
  • Dynamic dispatch via function pointers with additional support for currying.
  • Closures (anonymous functions) that can capture shared values.
  • Some syntactic support for object-oriented programming (OOP).
  • Organize code base with dynamically-loadable modules, optionally overriding the resolution process.
  • Serialization/deserialization support via serde (requires the serde feature).
  • Support for minimal builds by excluding unneeded language features.
  • A debugging interface.

Protected against attacks

  • Don't Panic guarantee - Any panic is a bug. Rhai subscribes to the motto that a library should never panic the host system, and is coded with this in mind.
  • Sand-boxed - the scripting engine, if declared immutable, cannot mutate the containing environment unless explicitly permitted.
  • 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.
  • Passes Miri.

For those who actually want their own language

  • Use as a DSL.
  • Disable certain language features such as looping.
  • Further restrict the language by surgically disabling keywords and operators.
  • Define custom operators.
  • Extend the language with custom syntax.

Example

The scripts subdirectory contains sample Rhai scripts.

Below is the standard Fibonacci example for scripting languages:

…

Project Site

rhai.rs

Documentation

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

Playground

An Online Playground is available with syntax-highlighting editor, powered by WebAssembly.

Scripts can be evaluated directly from the editor.

License

Licensed under either of the following, at your choice:

  • Apache License, Version 2.0, or
  • MIT license

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.

GitHub Issues· 0 开放

在 GitHub 查看全部

暂无开放 Issues,或尚未同步最近议题。

核心特点

  • •All CPU and O/S targets supported by Rust, including:
  • •WebAssembly (WASM)
  • •Minimum Rust version 1.66.0
  • •Simple language similar to JavaScript+Rust with dynamic typing.
  • •Fairly efficient evaluation - 1 million iterations in 0.14 sec on a single-core 2.6 GHz Linux VM running this script by the standard AST walker.
  • •Rhai Grain bytecodes compiler and VM for even faster evaluation (around 1.8-2x). Enable with the grain feature.
  • •Tight integration with native Rust functions and types, including getters/setters, methods and indexers.
  • •Easily call a script-defined function from Rust.
  • •Relatively little unsafe code (yes there are some for performance reasons).
  • •Few dependencies - currently only smallvec, thin-vec, num-traits, once_cell, ahash, bitflags and smartstring.

> 标签

Rustembeddedembedded-scripting-languageno-stdrhai

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言