All Topics
All Topics
Technology
Technology
Design
Design
Programming
Programming
Science
Science
News
News
Gaming
Gaming
Entertainment
Entertainment
Business
Business
Finance
Finance
Sports
Sports
Health
Health
Food
Food
Travel
Travel
Art
Art
Music
Music
Books
Books
Education
Education
Politics
Politics
Personal
Personal
No algorithm. No AI slop. No ads. Just RSS. Pro-human. Indie writers. Real journalism. Open web. Chronological. Hand toasted.

Building a Custom BEAM Virtual Machine: Understanding Erlang/Elixir's Concurrency Primitives

By

cbzbc

6mo ago· 18 min readenInsight

Summary

The article is a blog post adaptation of a Code BEAM Europe 2025 talk about creating a custom implementation of the BEAM virtual machine (which runs Erlang, Elixir, and Gleam). The author explores BEAM's core primitives - processes without shared state, message passing with selective receive, and process linking for supervision trees. The content explains how these primitives interact to create robust concurrent systems and discusses the author's journey in understanding and implementing these concepts from scratch.

Key quotes

· 5 pulled
I was always fascinated with BEAM, how it allowed easy spawning of processes that didn't share state, allowed for sending and selectively receiving messages, and linking to each other thus enabling creation of supervision trees.
It's an interesting set of primitives that interact in a nice way, and are in my view responsible for much of the success of Erlang and Elixir.
This is my Code BEAM Europe 2025 talk, converted to a blogpost.
EDIT 2025-11-10: Hacker News folks pointed out it might not be clear to everybody what BEAM is: it's the virtual machine for languages like Erlang, Elixir and Gleam.
The BEAM's approach to concurrency - processes without shared state, message passing, and supervision trees - provides a robust foundation for building fault-tolerant systems.
Snippet from the RSS feed
This is my Code BEAM Europe 2025 talk, converted to a blogpost.

You might also wanna read