8 puan yazan GN⁺ 2024-11-03 | 1 yorum | WhatsApp'ta paylaş

Yeni deneysel backend'ler

  • V8, Wasmi ve WAMR desteği eklendi
  • Artık Wasm-C-API spesifikasyonunu destekleyen tüm yorumlayıcılar veya çalışma zamanları Wasmer'a kolayca entegre edilebiliyor
  • V8 entegrasyonu sayesinde V8 debugger ve Chrome Devtools üzerinden mükemmel bir hata ayıklama deneyimi sunuluyor
  • V8'i backend olarak kullanmak, WebAssembly istisnaları ve çöp toplamanın da yerel olarak desteklendiği anlamına geliyor

iOS desteği (WAMR, Wasmi, V8 binding'leri üzerinden sunuluyor)

  • Wasmer, yeni yorumlayıcı modu aracılığıyla iOS cihazlara WebAssembly getiriyor
  • V8, Wasmi ve WebAssembly Micro Runtime (WAMR) yeteneklerinden yararlanan geliştiriciler artık iOS'ta WebAssembly modüllerini sorunsuz şekilde çalıştırabiliyor
  • Kod tabanında değişiklik gerekmiyor ve Apple ekosisteminde yüksek performanslı uygulamalar yazmak mümkün hale geliyor

Kod tabanının sadeleştirilmesi

  • Wasmer 5.0'ın çıkışı için Wasmer kod tabanını mümkün olduğunca sade hale getirmeye odaklanıldı
  • Wasmer'ın kullandığı bazı bağımlılıklar uzun süredir bakım görmüyordu ya da daha yeni ve daha güvenli crate'ler tarafından işlevsel olarak tekrarlanıyordu
  • Son 2 yılda Emscripten binding'leri büyük ölçüde kullanılmadığı için desteği sonlandırıldı ve bağımlılıkların temizlenmesi sonucunda Wasmer kod tabanından net 20 bin satır kod kaldırıldı

Performans iyileştirmeleri

  • Modül deserialize işlemi artık %50'ye kadar daha hızlı (Module::deserialize çağrılırken veya wasmer run ile modül çalıştırılırken)
  • Bu iyileştirmeler, modülleri deserialize etmek için kullanılan sıfır kopyalı deserialize kütüphanesi rkyv'deki önemli güncellemelerden yararlanıyor

Güncellenmiş derleyiciler: Cranelift ve LLVM 18

  • En yeni Cranelift entegrasyonu sayesinde çalışma zamanı hızı belirgin biçimde arttı ve WebAssembly modülleri her zamankinden daha hızlı çalışıyor
  • Wasmer 5.0 artık LLVM'in en güncel sürümünü (18) içeriyor ve geliştiricilere araç zincirindeki en yeni optimizasyonlara erişim sağlıyor
  • LLVM yükseltmesi uyumluluğu ve performansı artırarak karmaşık WebAssembly modüllerini derlemek ve çalıştırmak için güçlü bir temel sunuyor
  • Wasmer 5.0 ayrıca deneysel LoongAarch64 desteğiyle geliyor
  • Derleyicilerin en yeni sürümüyle coremark kıyaslaması yapıldığında, LLVM ve Cranelift'in Wasmer v4.4.0'a kıyasla v5.0'da yaklaşık %8 daha hızlı olduğu görüldü

GN⁺ görüşü

  • Wasmer 5.0'ın yayımlanması WebAssembly ekosistemi için büyük bir dönüm noktası gibi görünüyor. Özellikle iOS desteği ve çeşitli backend seçenekleri, WebAssembly'nin kullanım alanını mobil uygulamalara kadar önemli ölçüde genişletebilir
  • V8, Wasmi, WAMR gibi çeşitli çalışma zamanlarının backend olarak desteklenmesi sayesinde geliştiriciler ihtiyaçlarına en uygun çalışma zamanını seçebilecek. Bu da WebAssembly'nin esnekliğini ve uyumluluğunu artırmaya büyük katkı sağlayabilir
  • Kod tabanının sadeleştirilmesi ve en yeni derleyicilerin kullanımıyla yapılan performans optimizasyonu çalışmaları da dikkat çekici. Bu, Wasmer'ın yalnızca yeni özellik eklemekle kalmayıp sürekli kalite iyileştirmesine de önem verdiğini gösteriyor
  • Öte yandan Emscripten binding desteğinin sonlandırılması üzücü bir nokta olsa da WASI ve WASIX gibi yeni standartların ortaya çıkmasıyla buna olan ihtiyaç azaldığı için makul bir tercih gibi görünüyor
  • Genel olarak Wasmer 5.0, WebAssembly'nin gelişimini iyi yansıtan bir sürüm ve Wasmer'ın bundan sonra da WebAssembly ekosistemine yön veren başlıca projelerden biri olmaya devam etmesi bekleniyor. Ancak hâlâ deneysel aşamada olan özelliklerin kararlılığını ve olgunluğunu artırmak için sürekli çaba gerekiyor

1 yorum

 
GN⁺ 2024-11-03

Hacker News görüşleri

  • Performans grafikleri kafa karıştırıcı ve adeta lanetli görünüyor. Bazıları logaritmik ölçekte gösterilmiş, bazı durumlarda ise ne anlatmaya çalıştıklarını anlamak zor. Örneğin, "Argon 2" grafiğinde neredeyse tüm çubuklar aynı uzunlukta görünüyor, ama her bir çubuğun üzerinde milisaniye cinsinden farklı sayılar yazıyor.
  • V8'i backend olarak kullanmak WebAssembly exception handling ve garbage collection desteği getiriyor. Bununla ilgili daha fazla haber duymayı bekliyorum. wasm-gc'nin aynı runtime içinde farklı modüller arasında host verisi/dizeleri paylaşabildiğini mi, yoksa bunun tek bir modülle mi sınırlı olduğunu merak ediyorum.
  • Wasmer'in landing page'inden ne yaptığını anlamak zor. Her şeyi her yerde çalıştırdığını söylüyor ama pratikte ne yaptığı net değil. Geliştirici odaklı bir ürün gibi duruyor, ancak teknik açıklamalardan çok buzzword var.
  • Wasmtime'tan memnunum ve WASM component model ile WASI tabanlı bir eklenti sistemi üzerinde uğraşıyorum. Üzerinde çalışmak eğlenceli.
  • Projelerimde WASM'ı kullanmak için hâlâ iyi bir kullanım senaryosu bulamadım. Biraz Raspberry Pi'yi nasıl kullanacağını bilememek gibi bir durum. Rust async projeleri için neden WASM seçmem gerektiği bana net gelmiyor.
  • Keşke Cross-Origin Isolated header gerektirmeyen bir çözüm olsaydı. Hâlâ eski sürümü kullanıyorum.
  • WASM'ın Electron uygulamaları için daha az kaynak tüketen bir alternatif olup olamayacağını merak ediyorum. WASM'ın DOM erişimi yok ama bunun extension'larla eklenip eklenemeyeceğini sorguluyorum.
  • Bu çözümün hangi sorunu çözdüğünü anlamıyorum. Zaten tüm JavaScript runtime'larında gömülü bir WASM engine yok mu?
  • Bunun Node.js kodunu bir sandbox içinde güvenli şekilde değerlendirmeyi mümkün kılıp kılmadığını merak ediyorum.
  • Performans grafiklerini okumak zor. Binlik ayırıcı olarak hem virgül hem nokta kullanılmış ve hassasiyet gelişigüzel biçimde 1, 2 ya da 3 haneye yuvarlanmış.