
← BEAM There, Done That7 Aug · 1 h 03 min
Erlang Without an OS: Maxim Kharchenko on Building LING
<p>Booting OTP without a Linux kernel underneath it. Running Erlang directly on a Xen hypervisor. Implementing a VM where every single out-of-memory condition is explicitly handled — not a single allocation without a recovery path.</p><p>Maxim Kharchenko spent five to eight years building Ling, a from-scratch Erlang runtime that runs without an operating system. Not a fork of the BEAM. Not a modification. A clean implementation, built to answer one question: can you run a system that never stops?</p><p>Francesco Cesarini joins Alan Wyma for this episode — he was there when it was built, running the Erlang Solutions team that worked on the other half of the project.</p><p>Topics include:</p><ul><li><p>how Maxim came to Erlang backwards — building his own isolation-based runtime first, then discovering Erlang had already solved the same problems</p></li><li><p>what a Xen hypervisor actually is and why it's the right host for a no-OS Erlang VM</p></li><li><p>how Ling's dynamic instruction set works: analyzing real OTP source code to figure out the optimal instruction set for that specific workload, then generating specialized opcodes — including one that loads the number 17 specifically because 17 appeared frequently enough to warrant it</p></li><li><p>why every single memory allocation in Ling has an explicit out-of-memory handler — and how hard that discipline was to maintain</p></li><li><p>the garbage collector design for bare-metal network applications and why it matters differently there than in regular BEAM workloads</p></li><li><p>running the entire network as an Erlang application: not just a piece of it, but switch firmware, controller, and the full stack</p></li><li><p>why the industry was not ready for this ten years ago — and why the problems Ling was solving have come back under different names</p></li><li><p>where unikernels and Linux eBPF fit in the same space today</p></li></ul><p>Recorded June 3, 2026.</p><p><br></p>