WebAssembly 2.0 Standart Önizleme Mevcut

W3C, WebAssembly 2.0 ara yazılımını ve bununla ilişkili API'yi standartlaştıran, tarayıcılar ve donanım platformları arasında taşınabilir yüksek performanslı uygulamaların oluşturulmasını sağlayan yeni bir spesifikasyon taslağı yayınladı. WebAssembly, çeşitli programlama dillerinden derlenen uygulamaları çalıştırmak için tarayıcıdan bağımsız, evrensel, düşük düzeyli ara kod sağlar. WebAssembly için JIT'i kullanarak yerel koda yakın performans düzeyleri elde edebilirsiniz.

WebAssembly teknolojisi, C/C++ gibi derlenmiş dillerde kod yazılmasına izin vererek tarayıcıda video kodlama, ses işleme, grafik ve 3 boyutlu manipülasyon, oyun geliştirme, kriptografik işlemler ve matematiksel hesaplamalar gibi yüksek performanslı görevleri gerçekleştirmek için kullanılabilir. .

WebAssembly'ın ana hedefleri arasında taşınabilirliği, öngörülebilir davranışı ve farklı platformlarda aynı kod yürütülmesini sağlamaktır. Son zamanlarda WebAssembly, tarayıcılarla sınırlı olmamak üzere tüm altyapılar, işletim sistemleri ve cihazlarda güvenli kod yürütmeye yönelik evrensel bir platform olarak da tanıtıldı.

W3C, WebAssembly 2.0 için üç taslak spesifikasyon yayınladı:

  • WebAssembly Core - WebAssembly ara kodunu çalıştırmak için düşük seviyeli bir sanal makineyi açıklar. WebAssembly ile ilişkili kaynaklar, Java'daki ".class" dosyalarına benzer şekilde ".wasm" biçiminde sunulur ve statik verileri ve bu verilerle çalışmaya yönelik kod bölümlerini içerir.
  • WebAssembly JavaScript Arayüzü - JavaScript ile entegrasyon için bir API sağlar. WebAssembly işlevlerine değer almanızı ve parametreleri aktarmanızı sağlar. WebAssembly'ın yürütülmesi, JavaScript güvenlik modelini takip eder ve ana sistemle tüm etkileşim, JavaScript kodunun yürütülmesiyle aynı şekilde gerçekleştirilir.
  • WebAssembly Web API - ".wasm" kaynaklarını istemek ve yürütmek için Promise mekanizmasını temel alan bir programlama arayüzünü tanımlar. WebAssembly kaynak formatı, dosyanın tam olarak yüklenmesini beklemeden yürütmeye başlayacak şekilde optimize edilmiştir; bu, web uygulamalarının yanıt verme hızını artırır.

Standardın ilk sürümüyle karşılaştırıldığında WebAssembly 2.0'daki ana değişiklikler:

  • Paralel olarak birden fazla sayısal değer (SIMD, tek talimat çoklu veri) üzerinde eylemler gerçekleştirmenize olanak tanıyan v128 vektör türü ve ilgili vektör talimatları desteği.
  • Değişken küresel değişkenleri içe ve dışa aktarma yeteneği, C++'taki yığın işaretçileri gibi değerlere genel bağlamanın uygulanmasına olanak tanır.
  • Sonuç taştığında bir istisna atmak yerine, mümkün olan minimum veya maksimum değeri (SIMD için gerekli) döndüren yeni float'tan int'ye dönüştürme talimatları.
  • Tam sayıların işaret genişletmesine yönelik talimatlar (işaret ve değeri korurken bir sayının bit derinliğini artırmak).
  • Birden fazla değer döndüren bloklar ve işlevler için destek (işlevlere birden fazla parametre aktarmanın yanı sıra).
  • BigInt JavaScript türü ile 64 bit tamsayıların WebAssembly temsili arasında dönüşüm yapmak için BigInt64Array ve BigUint64Array JavaScript işlevlerinin uygulanması.
  • Referans türleri (funcref ve externref) ve bunlarla ilişkili talimatlar (select, ref.null, ref.func ve ref.is_null) için destek.
  • Bellek bölgeleri arasında veri kopyalamak ve bellek bölgelerini temizlemek için Memory.copy, Memory.fill, Memory.init ve Data.drop talimatları.
  • Tablolara doğrudan erişme ve bunları değiştirme talimatları (table.set, table.get, table.size, table.grow). Tek bir modülde birden fazla tablo oluşturma, içe ve dışa aktarma yeteneği. Tabloları toplu modda kopyalama/doldurma işlevleri (table.copy, table.init ve elem.drop).

Kaynak: opennet.ru

Yorum ekle