Skip to content

Ion

A small, strongly-typed scripting language for embedding in Rust programs — like Lua for game engines, but with Rust-flavored syntax, Serde-native host integration, and a native Tokio async runtime.
let items = [1, 2, 3, 4, 5];
items
.filter(|x| x > 2)
.map(|x| x * 10);
// [30, 40, 50]

Strongly typed

Type annotations on let, runtime checks at boundaries, generic Option<T> / Result<T, E> — but no ceremony you don’t need.

Embeddable

cargo add ion-core, register a few host functions, and you have a scripting layer with predictable evaluation costs and a small surface.

Native async

Tokio under the hood — spawn, await, select, channels, timers, and async host calls all work like you’d expect.

Real tooling

Bytecode VM, optimizing compiler, LSP, and editor extensions for VS Code, JetBrains, and Zed.

Documentation reflects Ion v0.2.0-66-g3faa376.