rune-rs/rune

An embeddable dynamic programming language for Rust.

Rust

2,339

1,700 commits

updated Oct 11, 2026

See the code

README

rune logo
Visit the site 🌐 β€” Read the book πŸ“–

rune

github crates.io docs.rs build status chat on discord

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


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 examples folder.

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);
embedded
programming-language
scripting

Project health

Overall

3.8/10

Maintained

10/10

Code review

0/10
OpenSSF Scorecard

crates.io

Latest release

0.14.2 Β· May 22, 2026

Releases this year

1

Significant stargazers

(top 24 of 71)

Tobias Bieniek

713 followers Β· starred Jan 2022

Lily Ballard

1,030 followers Β· starred Jan 2022

Emil Ernerfeldt

8,202 followers Β· starred Sep 2020

Benjamin Gilbert

158 followers Β· starred Jul 2026

rune-rs/rune

An embeddable dynamic programming language for Rust.

Rust

2,339

1,700 commits

updated Oct 11, 2026

See the code

README

rune logo
Visit the site 🌐 β€” Read the book πŸ“–

rune

github crates.io docs.rs build status chat on discord

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


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 examples folder.

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);
embedded
programming-language
scripting

Project health

Overall

3.8/10

Maintained

10/10

Code review

0/10
OpenSSF Scorecard

crates.io

Latest release

0.14.2 Β· May 22, 2026

Releases this year

1

Significant stargazers

(top 24 of 71)

Tobias Bieniek

713 followers Β· starred Jan 2022

Lily Ballard

1,030 followers Β· starred Jan 2022

Emil Ernerfeldt

8,202 followers Β· starred Sep 2020

Benjamin Gilbert

158 followers Β· starred Jul 2026