AncestorsReadiness vs completionepoll says “you may proceed.” io_uring says “I already did.” The whole lesson is that shift.
BodiesThreads, green threads, processesAn OS thread is a body. A goroutine is a lighter body. A BEAM process is a body with a mailbox and a reduction budget.
QueuesWork stealingGo and Tokio idle workers steal from busy ones. BEAM mostly migrates. Theft vs a shared notebook.
LifetimesStructured concurrencyA task is not allowed to outlive its parent. Trio, Swift, Kotlin. Opposite of “fire and forget.”
TurnsCooperative vs preemptiveJS is cooperative. The BEAM pretends to be preemptive by counting. Linux CFS is the real thing.
PipesPipes, channels, mailboxesUnix pipes are a stream. Go channels rendezvous. BEAM mailboxes pile up. Three answers to “how do two things talk.”
FairnessCFS vs reductionsLinux shares cores among programs. The BEAM shares a core among processes. Nested fairness.
JumpsContinuations & effectsA continuation is “the rest of the program” in a box. Effects are yield points with extra meaning. The deep version of sitting down.
LiveHot code loadingThe BEAM can swap a module while it runs. Smalltalk and Lisp images did it first. A running system is not a file.