
Brown araştırması: async/await her dilde farklı davranıyor
Brown Üniversitesi'nin laboratuvarı, yedi modern async çalışma zamanının küçücük bir programda bile dört farklı sonuç verdiğini gösteriyor ve arkasındaki dokuz tasarım boyutunu haritalıyor.
Brown Üniversitesi Bilişsel Mühendislik Laboratuvarı'nın yeni makalesi, async/await'in yedi modern çalışma zamanında nasıl davrandığını inceliyor: sonuç, ortak sözdizimin ima ettiğinden çok daha az uzlaşma. Yazıyı Gavin Gray 8 Eylül 2026'da yayımladı.
Küçük bir program, dört yanıt
On beş yılı aşkın süredir diller "düz hatlı eşzamanlılık"ta birleşiyor — eşzamanlı kodun sıradan doğrusal kod gibi görünmesi (Python, Rust, Swift). Ama küçük bir sözde kod ayrılığı gösteriyor: write_to_log "A" yazdırır, iki saniyelik sleep bekler ve "B" yazdırır; fire_and_forget bu fonksiyonu arka plan görevi olarak başlatıp beklemeden döner; main fire_and_forget'i bekler, bir saniye uyur ve "C" yazdırır. Yedi çalışma zamanı — Asyncio, C#, JavaScript, Tokio, Smol, Trio ve Swift — dört farklı çıktı üretiyor; programın üç varyasyonunda hiçbir iki çalışma zamanı aynı şeyi yazdırmıyor.
Sıcak ve soğuk başlangıç, dokuz boyut
Açıklamanın bir parçası "isteklilik": sıcak başlangıç, çalışma zamanında hâlihazırda koşan bir görev döndürür; soğuk başlangıç ise await edilene kadar hiçbir şey yapmayan atıl bir nesne döndürür; Python ve Rust tembel değerlendirir. Makale, yalnızca performansı değil gözlemlenebilir yürütme semantiğini değiştiren dokuz tasarım boyutu belirliyor ve bunları üç grupta topluyor: yaşamın başı, yaşamın sonu ve iptal.
Neden Swift "AC", Trio ise "ABC" yazıyor
Örnekte iki boyut belirleyici. Dinamik kapsamda bir görev, kendisini doğuran fonksiyondan daha uzun yaşayamaz — bunu Swift ile Python+Trio seçti. Yıkımda ayrışıyorlar: Swift görevi iptal eder, Trio ise kibarca bitmesini bekler. Bu yüzden Swift "AC", Trio "ABC" yazıyor. İptal başka açılardan da değişiyor: farkındalık, kalıcılık (görev iptali yok sayıp devam edebilir ya da iptal edilmiş kalır) ve sinyalin yayılımı — yukarıdan aşağıya, aşağıdan yukarıya veya tüm bağımlılıklara aynı anda.
Tasarım uzayının arkasındaki hesap
Uzayı kesinleştirmek için yazarlar onu eşzamanlı programların çekirdek hesabı üzerinde biçimsel bir semantiğe çevirdi. Soyut makinenin izleri, yürütmeyi çatallayan semantik kararları vurguluyor ve programların neden ayrıştığını adım adım açıklıyor. Her boyut performans, bellek, ergonomi ve semantik arasında bir denge; doğru yanıt yok ve her dilin kendi gerekçesi var — ancak küçük programlar bile ciddi açıklama gerektiriyor.
SiTech — AI destekli web geliştirme
Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.