Pratinjau Standar WebAssembly 2.0 Tersedia

W3C telah menerbitkan rancangan spesifikasi baru yang menstandardisasi middleware WebAssembly 2.0 dan API terkait, memungkinkan pembuatan aplikasi berkinerja tinggi yang portabel di seluruh browser dan platform perangkat keras. WebAssembly menyediakan kode perantara tingkat rendah yang tidak bergantung pada browser, universal, untuk menjalankan aplikasi yang dikompilasi dari berbagai bahasa pemrograman. Dengan menggunakan JIT untuk WebAssembly, Anda dapat mencapai tingkat kinerja yang mendekati kode asli.

Teknologi WebAssembly dapat digunakan untuk melakukan tugas-tugas berkinerja tinggi di browser, seperti pengkodean video, pemrosesan audio, manipulasi grafik dan 3D, pengembangan game, operasi kriptografi, dan penghitungan matematis dengan mengizinkan kode ditulis dalam bahasa yang dikompilasi seperti C/C++ .

Di antara tujuan utama WebAssembly adalah memastikan portabilitas, perilaku yang dapat diprediksi, dan eksekusi kode yang identik pada platform berbeda. Baru-baru ini, WebAssembly juga telah dipromosikan sebagai platform universal untuk mengeksekusi kode dengan aman di semua infrastruktur, sistem operasi, dan perangkat, tidak terbatas pada browser.

W3C telah menerbitkan tiga rancangan spesifikasi untuk WebAssembly 2.0:

  • WebAssembly Core - Menjelaskan mesin virtual tingkat rendah untuk menjalankan kode perantara WebAssembly. Sumber daya yang terkait dengan WebAssembly dikirimkan dalam format ".wasm", mirip dengan file ".class" di Java, berisi data statis dan segmen kode untuk bekerja dengan data tersebut.
  • Antarmuka JavaScript WebAssembly - Menyediakan API untuk integrasi dengan JavaScript. Memungkinkan Anda mendapatkan nilai dan meneruskan parameter ke fungsi WebAssembly. Eksekusi WebAssembly mengikuti model keamanan JavaScript dan semua interaksi dengan sistem utama dilakukan dengan cara yang sama seperti mengeksekusi kode JavaScript.
  • WebAssembly Web API - Mendefinisikan antarmuka pemrograman berdasarkan mekanisme Promise untuk meminta dan mengeksekusi sumber daya ".wasm". Format sumber daya WebAssembly dioptimalkan untuk memulai eksekusi tanpa menunggu file dimuat sepenuhnya, sehingga meningkatkan respons aplikasi web.

Perubahan utama di WebAssembly 2.0 dibandingkan dengan versi standar pertama:

  • Dukungan untuk tipe vektor v128 dan instruksi vektor terkait yang memungkinkan Anda melakukan tindakan pada beberapa nilai numerik secara paralel (SIMD, instruksi tunggal beberapa data).
  • Kemampuan untuk mengimpor dan mengekspor variabel global yang dapat diubah, memungkinkan pengikatan global untuk nilai-nilai seperti penunjuk tumpukan di C++.
  • Instruksi konversi float ke int baru yang, alih-alih memberikan pengecualian saat hasilnya meluap, mengembalikan nilai minimum atau maksimum yang mungkin (diperlukan untuk SIMD).
  • Instruksi untuk perluasan tanda bilangan bulat (meningkatkan kedalaman bit suatu bilangan dengan tetap mempertahankan tanda dan nilai).
  • Dukungan untuk blok dan fungsi yang mengembalikan banyak nilai (selain meneruskan beberapa parameter ke fungsi).
  • Implementasi fungsi JavaScript BigInt64Array dan BigUint64Array untuk mengonversi antara tipe JavaScript BigInt dan representasi WebAssembly dari bilangan bulat 64-bit.
  • Dukungan untuk tipe referensi (funcref dan externref) dan instruksi terkaitnya (select, ref.null, ref.func dan ref.is_null).
  • Instruksi Memory.copy, memory.fill, memory.init, dan data.drop untuk menyalin data antar wilayah memori dan menghapus wilayah memori.
  • Petunjuk untuk mengakses dan memodifikasi tabel secara langsung (table.set, table.get, table.size, table.grow). Kemampuan untuk membuat, mengimpor dan mengekspor beberapa tabel dalam satu modul. Berfungsi untuk menyalin/mengisi tabel dalam mode batch (table.copy, table.init dan elem.drop).

Sumber: opennet.ru

Tambah komentar