rune-rs/rune has 2,361 GitHub stars and 122 forks. GitHot measured +11 stars in 24 hours. Last checked 2026-11-06 22:37 UTC. Last push 2026-10-11.
An embeddable dynamic programming language for Rust.
What you can do
- Run simple Scripts ๐.
- Runs a compact representation of the language on top of an efficient stack-based virtual machine.
- Clean Rust integration ๐ป.
- Multithreaded ๐ execution.
Measured star growth
- in 24h
- +11
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalVisit the site ๐ โ Read the book ๐
rune
The Rune Language, an embeddable dynamic programming language for Rust.
Contributing
If you want to help out, please have a look at Open Issues.
Highlights of Rune
- Run simple Scripts ๐.
- Runs a compact representation of the language on top of an efficient stack-based virtual machine.
- Clean Rust integration ๐ป.
- Multithreaded ๐ execution.
- Hot reloading ๐.
- Memory safe through reference counting ๐.
- Awesome macros ๐ and Template literals ๐.
- Try operators ๐ and Pattern matching ๐.
- Structs and enums ๐ with associated data and functions.
- Dynamic containers like vectors ๐, objects ๐, and tuples ๐ all with out-of-the-box serde support ๐ป.
- First-class async support ๐ with Generators ๐.
- Dynamic instance functions ๐.
- Stack isolation ๐ between function calls.
Rune scripts
You can run Rune programs with the bundled CLI:
cargo run --bin rune -- run scripts/hello_world.rn
If you want to see detailed diagnostics of your program while it's running, you can use:
cargo run --bin rune -- run scripts/hello_world.rn --dump --trace
See --help for more information.
Running scripts from Rust
You can find more examples in the
examplesfolder.
The following is a complete example, including rich diagnostics using
termcolor. It can be made much simpler if this is not needed.
use rune::{Context, Diagnostics, Source, Sources, Vm};
use rune::termcolor::{ColorChoice, StandardStream};
use rune::sync::Arc;
let context = Context::with_default_modules()?;
let mut sources = Sources::new();
sources.insert(Source::memory("pub fn add(a, b) { a + b }")?);
let mut diagnostics = Diagnostics::new();
let result = rune::prepare(&mut sources)
.with_context(&context)
.with_diagnostics(&mut diagnostics)
.build_vm();
if !diagnostics.is_empty() {
let mut writer = StandardStream::stderr(ColorChoice::Always);
diagnostics.emit(&mut writer, &sources)?;
}
let mut vm = result?;
let output = vm.call(["add"], (10i64, 20i64))?;
let output: i64 = rune::from_value(output)?;
println!("{}", output);
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
560,520 starspublic-apis/public-apis
A collective list of free APIs
496,809 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
438,740 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. ๐ฆ
394,093 stars