WASI 0.3.0: Async ve Streaming Artık ABI'nin Merkezinde
WASI 0.3.0 onaylandı, ama bu sürüm değişikliğinden çok daha derin bir mimari dönüşüm taşıyor. Stream, future ve async işlemler artık WebAssembly Component Model'in canonical ABI'sinin temel yapıları haline geldi.
Önceki sürümlerde her bileşen kendi event loop'unu ve async runtime'ını taşıyordu. Bu, iki bileşeni aynı anda çalıştırdığında ciddi bir sorun yaratıyordu: bu loop'lar birbirleriyle koordine olamıyordu. Streaming veya async API'leri kullanan herhangi bir bileşen, başka bir bileşenle birleştirilemezdi. Geliştiriciler wasi:io paketi (pollables, input-streams, output-streams) içinde async davranışı manuel olarak kodlamak zorunda kalıyordu çünkü ABI'nin başka yeri yoktu.
0.3.0'da bu ilkeller doğrudan ABI'ye taşındı. Artık host, çalıştırdığı tüm bileşenlerin paylaştığı tek bir event loop'a sahip. Runtime, scheduling'i yönetiyor. Bir future'a değer ulaştığında, runtime onu bekleyen task'ı uyandırıyor, hatta bu future birden fazla bileşen sınırını geçmiş olsa bile.
Bu değişiklik bileşenlerin birleştirilebilirliğini kökten düzeltiyor. Daha önce imkânsız olan async iş akışları artık çalışıyor. Geliştirici açısından ise daha temiz, daha performant kod demek, çünkü manuel event loop yönetimi ortadan kalkıyor.
0 yorum