Araştırma: Async/Await Semantiği Dillere Göre Ciddi Şekilde Farklılaşıyor
Yeni araştırma, async/await'in yedi dilde birbirinden çok farklı semantiklere sahip olduğunu ve dokuz tasarım eksenini formal olarak modelliyor.
Yeni bir akademik çalışma, async/await söz dizimini sunan modern dillerin (Python, Rust, Swift ve diğerleri) altında yatan çalışma zamanı semantiğinin sanıldığından çok daha farklı olduğunu gösteriyor. Araştırmacılar, bir görevi arka planda başlatıp unutan basit bir örnek programı yedi farklı async çalışma zamanında çalıştırdığında dört farklı çıktı elde etmiş; programın üç varyasyonunda ise hiçbir ikili çalışma zamanı aynı sonucu üretmemiş.
Bu farklılıkların kaynağını açıklamak için ekip, 'straight-line asenkronluk' tasarım uzayında dokuz temel tasarım eksenini tanımlıyor: Eagerness (istekli/tembel başlatma), Suspension (askıya alma garantileri), Extent ve Reference Strength (görev ömrü), Destruction ve Propagation (temizlik ve hata yayılımı), ile iptal ile ilgili Awareness, Direction ve Persistence eksenleri. Bu eksenler, görev yaşam döngüsünün üç aşamasına (başlangıç, bitiş, iptal) göre gruplanıyor.
Çalışmanın en önemli katkılarından biri, bu tasarım kararlarını resmi bir semantik modele (çekirdek hesap sistemi) dönüştürmesi. Bu model, örnek programın neden dile göre farklı çıktı ürettiğini adım adım küçük-adım indirgeme kurallarıyla izleyerek kanıtlıyor. Sonuç, aynı 'async/await' söz dizimine güvenen mühendislerin, farklı dillerde tamamen farklı davranışlarla karşılaşabileceğini net biçimde ortaya koyuyor.
Bu sentez, kaynağından yapay zeka tarafından üretildi; insan editör ya da elle onay adımı yoktur. Nasıl çalışıyoruz