finds.dev← search

// the find

lunatic-solutions/lunatic

★ 4,872 · Rust · Apache-2.0 · updated Mar 2025

Lunatic is an Erlang-inspired runtime for WebAssembly

Lunatic brings Erlang-style actor concurrency to WebAssembly — each process gets its own isolated WASM instance with its own heap and syscall access, so a crash in one process can't corrupt another. It's built on Wasmtime and Tokio, with preemptive scheduling via work-stealing. The target audience is server-side developers who want Erlang's fault-tolerance model without writing Erlang.

Process isolation goes further than typical actor frameworks: each process runs in its own WASM sandbox, so you can safely call untrusted C code by just compiling it to WASM — a genuinely useful property. The preemptive scheduler handles infinite loops without blocking the thread pool, which is something most async runtimes punt on. Distributed nodes over QUIC with automatic TLS cert management is included, not bolted on. The architecture is cleanly split into API crates and implementation crates, making it realistic to swap out the WASM runtime if Wasmtime ever loses its lead.

Last meaningful commit is March 2025 and the project has been dormant for stretches before that — hot reloading has been an unchecked TODO since the beginning, which matters a lot for a runtime pitching itself as Erlang-like. Language support is limited to Rust and AssemblyScript; everything else requires you to write bindings from scratch against an undocumented host API. The WASI compatibility story is still incomplete, so you can't just compile arbitrary existing code and run it. With 147 forks and no corporate backer, the bus-factor risk is real if the core maintainer moves on.

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 →