- Wasm 3.0 standardı resmen duyuruldu ve 6-8 yıllık hazırlığın ürünü olan büyük ölçekli özellikler içeriyor
- 64 bit adres alanı, çöp toplama, typed reference'lar, tail call, istisna işleme gibi özelliklerle yüksek seviyeli dillerin Wasm'a daha kolay derlenmesini sağlıyor
- Temel yeni özellikler; yüksek performanslı uygulamalar, çeşitli dil çalışma zamanları, güvenlik ve genişletilebilirlik açısından fayda sağlıyor
- Web ortamının dışında, web dışı ekosistemlerde de daha büyük kapasite ve veri kümeleriyle çalışılması gereken kullanım senaryolarına uygun
- Halihazırda başlıca web tarayıcıları tarafından destekleniyor; Wasmtime gibi bağımsız motorlarda da yakında tamamlanacak ve Wasm böylece genel amaçlı bir yürütme platformu olarak daha da sağlamlaşacak
Wasm 3.0 sürümüne genel bakış
- WebAssembly standardının 3.0 sürümü 17 Eylül 2025'te yayımlandı
- 2.0 sürümünün (2022'de tamamlandı) vektör komutları, bulk memory işlemleri, çoklu dönüş değerleri ve basit referans türlerini getirmesinden 3 yıl sonraki büyük güncelleme
- W3C topluluk grubu ve çalışma grubu geliştirmeyi sürdürürken, bu sürüm 6-8 yıldır hazırlanan büyük özellikleri içeren oldukça kapsamlı bir değişiklik paketi sunuyor
- Wasm, düşük seviyeli dil anlayışını korurken bellek ve tür sistemini güçlendirerek yüksek seviyeli dil derlemeyi daha iyi destekliyor
- 2.0 sürümünden sonra geliştirilen özellikler tamamlanarak Live standardı haline geldi ve web tarayıcılarıyla bağımsız motorlardaki destek genişliyor
- Wasm özellik durumu sayfası üzerinden her motorun destek durumu takip edilebiliyor
- Yeni SpecTec araç zinciri kullanılarak üretilen ilk sürüm olması sayesinde güvenilirlik arttı
Başlıca değişiklikler ve yeni özellikler
- 64 bit adres alanı
- Bellek ve tablolar i64 türüyle tanımlanabiliyor
- Wasm uygulamalarının adres alanı yaklaşık 4 GB'den fiziksel sınırlara kadar (teorik olarak 16 eksabayt) genişleyebiliyor
- Web tarafında 16 GB sınırı uygulanıyor, ancak web dışı ekosistemlerde büyük uygulamaları ve veri kümelerini desteklemek için faydalı
- Çoklu bellek
- Tek bir modül içinde birden fazla bellek nesnesi tanımlanıp bunlara doğrudan erişilebiliyor
- Modül birleştirme, adres alanı ayrımı, arabelleğe alma ve güvenlik gibi çeşitli kullanım alanları sunuyor
- wasm-merge gibi statik bağlama araçları artık tüm Wasm modüllerinde kullanılabilecek
- Çöp toplama (GC)
- Doğrusal belleğin yanında, Wasm çalışma zamanının otomatik yönettiği depolama alanı desteği geliyor
- Derleyiciler struct/array türleri ve unboxed tamsayılar gibi veri yerleşimlerini doğrudan tanımlayabiliyor
- Yalnızca bellek yönetiminin temel yapı taşlarını sağlıyor; yüksek seviyeli nesne sistemleri veya closure'lar ise uygulama diline göre ayrı ayrı tasarlanabiliyor
- Typed reference'lar
- Wasm tür sistemi genişletilerek heap değerlerinin biçimi ve fonksiyon referansları daha doğru şekilde ifade edilebiliyor
- Alt türleme (subtyping) ve tür özyinelemesi destekleniyor; yeni
call_ref komutuyla çalışma zamanında tür kontrolü olmadan güvenli dolaylı fonksiyon çağrısı yapılabiliyor
- Tail call
- Mevcut fonksiyonun yığın alanını ek olarak kullanmadan, doğrudan dönüş yapan tail call yapısı destekleniyor
- İşlevsel dillerde veya çalışma zamanı içi optimizasyonlarda kullanılabiliyor
- İstisna işleme
- Wasm içinde yerel bir istisna işleme sistemi sunuluyor
- İstisna etiketleri ve payload tanımı, seçmeli catch ve blok düzeyinde istisna işleyicileri sağlanıyor
- Daha önce JS üzerinden dolaylı şekilde yapılan verimsiz yöntemlere gerek kalmadan taşınabilirlik ve performans iyileştirilebiliyor
- Relaxed vektör komutları
- SIMD komutlarındaki donanım farklılıklarına uyum sağlamak için, bazı komutların ayrıntılı davranışını uygulama tarafına bırakan relaxed varyantlar sunuluyor
- Yasal davranış kümesi içinde çeşitli optimizasyonlar yapılabiliyor
- Deterministik profil
- Aynı komutun sonucunun belirlenimci olmadığı durumlarda (kayan nokta işlemleri, relaxed SIMD vb.) bile platformlar arası deterministik yürütme tanımlanıyor
- Blokzincirler, yeniden üretilebilir sistemler gibi alanlarda yeniden üretilebilirlik ve taşınabilirlik sağlanabiliyor
- Özel anotasyon sözdizimi
- Kaynak kod içinde insanlar tarafından okunup yazılabilen anotasyon sözdizimi ekleniyor
- Standart bunları doğrudan yorumlamıyor, ancak gelecekte standartlar ve uzantı uygulamalarında kullanılabilecek
JavaScript bağlantısı ve uyumluluk
- JS string builtins
- JS string değerleri externref olarak Wasm'a aktarılıp işlenebiliyor
- Yeni yerleşik fonksiyonlar import edilerek, Wasm içinden doğrudan harici JS string'leri kullanılabiliyor
Wasm 3.0'ın faydaları ve görünümü
- Gelişmiş programlama dillerinin Wasm hedefli derlemesi için gerekli temeli sağlıyor
- Java, OCaml, Scala, Kotlin, Scheme, Dart gibi önemli diller de GC özelliğini aktif biçimde kullanmaya başladı
Spesifikasyonun hazırlanması ve dağıtım durumu
- Wasm 3.0, yeni SpecTec araç zinciriyle üretilen ilk standart oldu
- Başlıca web tarayıcılarının çoğu Wasm 3.0'ı zaten destekliyor; Wasmtime gibi bağımsız motorlarda da destek yakında tamamlanacak
- Wasm özellik durumu sayfasından motor bazında destek durumu görülebilir
Henüz yorum yok.