WAH: Tek bir başlık dosyasıyla yapılmış WebAssembly yorumlayıcısı
(github.com/lifthrasiir)Uzun bir aradan sonra yine bir C kütüphanesi yaptım. Kelimenin tam anlamıyla her şeyin tek bir C başlık dosyasının içinde olduğu bir WebAssembly yorumlayıcısı. Elbette ortada sadece çıplak bir yorumlayıcı yok;
- WebAssembly 3.0 spesifikasyonunu %100 destekliyor. Evet, GC ve benzeri şeylerin hepsi dahil.
- WebAssembly’de deterministic profile adı verilen, hangi ortamda olursa olsun aynı sonucun çıkmasını sağlayan bir seçenek var; bu seçenek uygulanıyor. Bu yüzden yeniden üretilebilir sonuçlar elde etmek için kullanışlı.
- x86-64 ve AArch64 NEON için mimariye özgü optimizasyonlar uygulanmış durumda.
- Güvenilmeyen kodu sandbox içinde çalıştırmak için gereken özellikler mevcut. Fuel metering ile komutlar çalışırken yakıt (
fuel) tüketiliyor; yakıt bittiğinde durdurma, belirli bir süre sonra yürütmeyi kesme ya da bellek kullanımını kontrol etme gibi özellikler destekleniyor. - Çalışma sırasında bu şekilde durdurulsa bile yeniden devam ettirilebilmesi için API buna uygun tasarlanmış.
- WebAssembly modülleri yalnızca kodla üretilebiliyor ya da birden fazla modül tek bir modüle bağlanabiliyor.
- Özellikler derleme zamanında da sınırlandırılabiliyor (derlenen kod miktarı azalıyor), çalışma zamanında da sınırlandırılabiliyor.
- En başından itibaren ABI’yi sabit tutma hedefiyle tasarlanmış. Veri yapıları C stack üzerinde ayrılabiliyor, ancak düzenleri önceden sabitlendiği için sürüm yükselse bile ABI bozulmuyor.
- Bunlara ek olarak, abartılı denecek kadar çok test var ve fuzz testing de yoğun şekilde yapıldı. (Aslında fuzzer hâlâ çalışıyor...)
Başta bunun başka bir projenin parçası olması planlanıyordu, bu yüzden bu kadar sıkı bir şey yapma niyetim yoktu; ama WebAssembly referans uygulamasının testlerini (spectest) çalıştırmak için sonunda her şeyi eksiksiz uygulamak gerekti... Derken bir şekilde %100 uygulamış oldum. Bu iş nasıl bu noktaya geldi, ben de bilmiyorum.
Güncel eğilimlere uyarak kodun ilk kısmı Gemini CLI ile, orta bölümden sonrası ise Claude Code ve ara sıra Codex ile yazıldı; planlama tarafında ise ağırlıklı olarak Codex kullanıldı. Kişisel olarak bu proje, coding agent’ların doğru yönlendirmeyle hardcore sistem programlamasını da gayet iyi yapabildiğini gösteren bir çalışma oldu. Vibe coding ile ilk bakışta etkileyici bir şey ortaya çıkabiliyor ama ayrıntılarda dağınık kalıyor eleştirisine karşı bir karşı örnek olmasını da biraz istedim.
2 yorum
Test edilecek spesifikasyon net olduğunda, kodlama ajanıyla bir iş akışı kurup onu yakınsatarak ilerleme yaklaşımı iyi işliyor gibi görünüyor.
vinext,pretextgibi örnekler de aklıma geliyor.Konu dışı olacak ama, acaba journal’da CSS sunumunu bir kez kontrol edebilir misiniz...? Aradan epey zaman geçmiş olsa da çevreme tanıtmak istediğim çok sayıda iyi yazı var, fakat masaüstünden girince CSS yüklenmiyor TT
CSS sunan sunucu çöktü TT üzgünüm ama bir süreliğine lütfen Wayback Machine'i kullanın...