« Tüm yayınlar

Runloom: Python için Go tarzı fiber çalışma zamanı

Runloom, free-threaded CPython 3.13t için geliştirilen deneysel bir eklenti; goroutine benzeri work-stealing fiber'larla Go seviyesinde ağ performansı hedefliyor.

Python'un asyncio tabanlı eşzamanlılık modeli, tek event loop içinde işbirlikçi görev geçişine dayanır ve bir coroutine'in bloke olması tüm döngüyü durdurabilir. Thread kullanımı bu sorunu tam çözmez; karışık async/thread kodları yeni deadlock riskleri getirir ve event loop yine aynı anda tek şey çalıştırır. Go ise goroutine'leri OS thread'leri üzerine dağıtan, work-stealing yapan bir runtime scheduler ile bu sorunu daha temelden çözer.

Bu makalede tanıtılan Runloom, free-threaded CPython 3.13t+ üzerinde çalışan deneysel bir C uzantısı olarak, Go'nun goroutine modelini Python'a taşımayı hedefliyor. Stackful fiber'lar gerçek OS thread'lerinden oluşan "hub"lar üzerinde çalışıyor; her hub kendi Chase-Lev work-stealing kuyruğuna, epoll/kqueue poller'ına ve zamanlayıcısına sahip. Fiber stack'leri başlangıçta 512 KiB ayrılıyor ama sadece dokunulan sayfalar gerçek belleği kullanıyor, böylece bellek maliyeti kontrol altında tutuluyor.

Benchmark sonuçları, echo istekleri ve bağlantı devir hızında Go ile aynı seviyede performans gösteriyor; CPU yoğun Cython handler'lar Go'nun yalnızca yüzde 8 gerisinde kalırken saf Python yaklaşık 180 kat daha yavaş kalıyor. Proje, mimarinin insan tarafından tasarlanıp runtime kodunun büyük ölçüde Claude tarafından yazıldığı ilginç bir geliştirme sürecine de sahip; güvenilirlik ise elle yazılmış yoğun stres testleri, fuzzing, deterministik simülasyon ve popüler açık kaynak projelerin test paketleriyle doğrulanmış.

Mühendisler için önemi açık: yüksek performanslı ağ yazılımı yazmak isteyenler artık Go'ya geçmeden Python'da da gerçek paralellik ve otomatik iş dengeleme sunan bir modele erişebilir. Ancak proje henüz deneysel; 30 bin satırı aşan C kodu, keşfedilmemiş hatalar barındırabilir ve en iyi Linux üzerinde test edilmiştir.