An embeddable dynamic programming language for Rust.
See the codeThe Rune Language, an embeddable dynamic programming language for Rust.
If you want to help out, please have a look at Open Issues.
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.
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);
Overall
Maintained
Code review
crates.io
Latest release
Releases this year
(top 24 of 71)
713 followers Β· starred Jan 2022
1,030 followers Β· starred Jan 2022
8,202 followers Β· starred Sep 2020
158 followers Β· starred Jul 2026
An embeddable dynamic programming language for Rust.
See the codeThe Rune Language, an embeddable dynamic programming language for Rust.
If you want to help out, please have a look at Open Issues.
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.
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);
Overall
Maintained
Code review
crates.io
Latest release
Releases this year
(top 24 of 71)
713 followers Β· starred Jan 2022
1,030 followers Β· starred Jan 2022
8,202 followers Β· starred Sep 2020
158 followers Β· starred Jul 2026