tourmaline [suspended]

embedded erlang runtime in rust

2023-10-02 / updated 2025-10-14

I started this project in response to my experience with my how-to-make embedded project, which was an exercise in being disappointed by atomvm.

tourmaline is an attempt to port Erlang to #![no_std] Rust, split into several crates, presently: a BEAM file serializer/deserializer, an ETF serializer/deserializer, BIF implementations, interface traits, native term types, and a runtime.

I did a good chunk of work by the time I got pulled off into other things — I was hoping to be able to evaluate some simple bytecode soon. I plan to get back to this, but frankly the amount of mental RAM I need to page in from very stale cache is daunting, so it may take a long time.

concept

The short version is that I think it'd be neat and useful to be able to embed Erlang into more contexts — as kind of a very-high-functioning scripting language that could run in other software and on embedded devices. Joe Armstrong got most of the primitives right.