finds.dev← search

// the find

rune-rs/rune

★ 2,258 · Rust · Apache-2.0 · updated May 2026

An embeddable dynamic programming language for Rust.

Rune is a dynamically-typed scripting language designed to be embedded in Rust applications, competing in the same space as Lua (via mlua) but built from scratch in Rust with first-class async support and a stack-based VM. It's aimed at Rust developers who want a scripting layer that integrates cleanly with their type system and async runtime rather than wrapping a C library.

The custom allocator crate (rune-alloc) reimplements standard collections with fallible allocation, which is the right call for embedded scenarios where OOM should be a recoverable error rather than a panic. First-class async/generator support is genuinely rare among embeddable scripting languages — Lua doesn't have it, and it means Rune scripts can await Tokio futures naturally without bridging ceremony. The derive macros for exposing Rust types (#[derive(Any)], #[rune::function]) keep bindings code tight and let the compiler catch type mismatches at the host boundary. The LSP implementation is a signal of tooling ambition most embeddable langs skip entirely.

Reference counting means cycles leak — not a theoretical concern, it bites you the moment scripts build graph or tree structures with back-references, and there's no cycle collector. The rune-modules ecosystem is thin: http, fs, json, toml, base64, time, rand, process. Anything outside that list means writing your own bindings, and the API is pre-1.0 with documented breaking changes ('deprecated' section in the book). Community size is the real adoption risk — 114 forks and a small Discord means edge cases get resolved by reading source, not Stack Overflow, and mlua with Lua 5.4 has 30 years of production battle-testing behind it that Rune simply does not.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →