Skip to content

Erlang Without an OS: Maxim Kharchenko on Building LING

August 7, 2026 · 1 h 3 min

Show notes

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.

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?

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.

Topics include:

  • how Maxim came to Erlang backwards — building his own isolation-based runtime first, then discovering Erlang had already solved the same problems

  • what a Xen hypervisor actually is and why it's the right host for a no-OS Erlang VM

  • 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

  • why every single memory allocation in Ling has an explicit out-of-memory handler — and how hard that discipline was to maintain

  • the garbage collector design for bare-metal network applications and why it matters differently there than in regular BEAM workloads

  • running the entire network as an Erlang application: not just a piece of it, but switch firmware, controller, and the full stack

  • why the industry was not ready for this ten years ago — and why the problems Ling was solving have come back under different names

  • where unikernels and Linux eBPF fit in the same space today

Recorded June 3, 2026.


All episodes of BEAM There, Done That

Settings

Display

Language

Decides which stations you see first on the home page.

History

Recently played stations and episodes and your latest searches are only stored in this browser.

Notifications

A short notice when a podcast you follow has a new episode. Turn off single podcasts with the bell on their page.

Account

Save favorites – in the app and on the website.

Keyboard shortcuts

/
Open search
Space
Play or pause
← →
In the player: back 15 s, forward 30 s (episodes) · in a row: next tile
↑ ↓
In a row: target within the tile
Home / End
In a row: first or last tile
Esc
Close window or menu
?
This overview
Now playing

Go to station page

Play next

    Add episodes with “Play next” – they play after the current episode.