Runloom: Python'a Go tarzı stackful coroutine'ler geliyor
Runloom, GIL'siz Python 3.14t üzerinde milyonlarca fiber çalıştırmayı sağlayan Go tarzı bir coroutine kütüphanesi. Spawn hızında Go'yu geçiyor, bellekte geride.
Runloom, free-threaded CPython 3.13t/3.14t (GIL kapalı) üzerinde çalışan, Go'daki goroutine modelini andıran stackful bir coroutine kütüphanesi. async/await yerine fiber(fn) ile bloklayan görünen ama gerçekte cooperative çalışan kod yazmayı; monkey.patch() ile de mevcut stdlib çağrılarını (socket, time, threading) değiştirmeden non-blocking hale getirmeyi hedefliyor. Alt yapıda el yazımı assembly context switch, per-hub work-stealing scheduler ve epoll/kqueue/IOCP tabanlı netpoll bulunuyor; ayrıca Go tarzı kanallar ve select desteği var.
Projenin yayınladığı karşılaştırmalı benchmarklar dikkat çekici: aynı 64 çekirdekli makinede saf C spawn hızında Runloom Go'yu geçiyor (2.29M/s vs 2.10M/s), Python tarafından yapılan spawn'da ise Go'nun ~0.65 katında kalıyor. Context switch ve bağlantı/istek başına verim ölçümlerinde Go ile neredeyse paritede; keep-alive senaryosunda Python handler'la 596K req/s'e ulaşarak Go'nun 603K'sına çok yakın sonuç veriyor. Asıl fark bellekte: boş bir parked fiber, CPython eval frame'i taşıdığı için Go'nun goroutine'ine göre ~3.3 kat daha fazla RSS kullanıyor.
Proje, GIL'siz CPython yapısının gerçek çok çekirdekli kazanç için şart olduğunu, GIL'li build'lerde ise asyncio benzeri tek çekirdek davranışına döndüğünü açıkça belirtiyor. Preemption yalnızca Python bytecode sınırlarında tetiklendiği için numpy gibi sıkı C çağrıları hub'ı bloke edebiliyor — Go+cgo ile aynı sınırlama. Linux x86_64/3.13t birincil ve en derin test edilen platform; diğer backend'ler (macOS, Windows, aarch64) daha az yoğun doğrulanmış durumda. Mühendisler için bu proje, Python'da GIL'siz çok çekirdekli I/O-bound iş yükleri için async/await'e alternatif, bloklayan koda daha yakın bir programlama modeli sunuyor.