March 14, 2026
Fiber fights and Lisp laughs
SBCL Fibers – Lightweight Cooperative Threads
Common Lisp adds “fibers” and the name fight instantly erupts
TLDR: SBCL is testing “fibers,” lightweight cooperative threads you can try now on a dev branch. The community’s split between calling them “fibers” or classic “green threads,” while others ask for better docs, making this both a speed boost for Lisp and a branding tug-of-war.
SBCL, aka Steel Bank Common Lisp, just teased “fibers” — lightweight, cooperative mini-threads you can start, pause, and resume — in a work‑in‑progress doc and experimental branch. It’s early, it’s nerdy, and it’s live on the fibers‑v2 branch at github.com/atgreen/sbcl. But the community? They immediately turned it into a naming brawl. One commenter joked they should be called “Anthony Green Threads” (a wink at both the dev and the classic “green threads” term), while another firmly declared “fiber” sounds better than “green threads,” drawing the battle lines over branding rather than bytecode.
Beyond the name drama, curiosity bubbled up: a user asked for a similar doc for the “memory arena” feature and came up empty, hinting at a documentation treasure hunt. Someone helpfully chimed in with what SBCL stands for, while another dropped a link to the developer mailing list so curious lurkers could chase the deep cuts: sourceforge.net/p/sbcl/mailman/sbcl-devel.
The vibe: excitement about faster, lighter concurrency in Lisp, confusion about docs, and peak internet energy over what to call it. The doc itself promises zero‑allocation tricks, clever schedulers, and cross‑platform support — but online, the hot topic is whether “fiber” will stick. Tech progress, branding war, snarky jokes — the perfect hacker drama cocktail.
Key Points
- •SBCL is adding userland cooperative threads (“fibers”) with a comprehensive API for creation, scheduling, synchronization, I/O readiness, and introspection.
- •The architecture includes carrier threads, a scheduler with work stealing (Chase‑Lev deque), deadline scheduling via a binary heap, and I/O multiplexing via epoll/kqueue/poll.
- •A zero-allocation context switch path, stack pooling with madvise(MADV_DONTNEED), and TLS overlay arrays aim to minimize GC pressure and support fiber migration.
- •GC integration separates suspended fibers from active contexts, uses conservative control stack scanning, precise binding stack scavenging, and O(1) fiber-context lookup.
- •The implementation targets multiple OSes and architectures (x86‑64, ARM, PPC, RISC‑V) and is gated by the :sb-fiber feature flag; a trial branch is available on GitHub.