8 poin oleh GN⁺ 2024-11-03 | 1 komentar | Bagikan ke WhatsApp

Backend eksperimental baru

  • Dukungan untuk V8, Wasmi, dan WAMR telah ditambahkan
  • Kini semua interpreter atau runtime yang mendukung spesifikasi Wasm-C-API dapat dengan mudah diintegrasikan ke Wasmer
  • Integrasi V8 menghadirkan pengalaman debugging yang sangat baik melalui debugger V8 dan Chrome Devtools
  • Menggunakan V8 sebagai backend juga berarti dukungan bawaan untuk pengecualian WebAssembly dan garbage collection

Dukungan iOS (disediakan melalui binding WAMR, Wasmi, dan V8)

  • Wasmer menghadirkan WebAssembly ke perangkat iOS melalui mode interpreter baru
  • Dengan memanfaatkan kemampuan V8, Wasmi, dan WebAssembly Micro Runtime (WAMR), pengembang kini dapat menjalankan modul WebAssembly dengan mulus di iOS
  • Tidak diperlukan perubahan pada codebase, sehingga memungkinkan pembuatan aplikasi berperforma tinggi di ekosistem Apple

Penyederhanaan codebase

  • Untuk peluncuran Wasmer 5.0, fokus diberikan pada upaya membuat codebase Wasmer seramping mungkin
  • Beberapa dependensi yang digunakan Wasmer sudah lama tidak dikelola atau tumpang tindih dengan crate yang lebih baru dan lebih aman
  • Karena binding Emscripten hampir tidak digunakan selama dua tahun terakhir, dukungannya dihentikan dan dependensi dirapikan, sehingga total 20 ribu baris kode murni dihapus dari codebase Wasmer

Peningkatan performa

  • Deserialisasi modul kini hingga 50% lebih cepat (yaitu saat memanggil Module::deserialize atau menjalankan modul melalui wasmer run)
  • Peningkatan ini memanfaatkan pembaruan penting pada rkyv, pustaka deserialisasi zero-copy yang digunakan untuk mendeserialisasi modul

Compiler yang ditingkatkan: Cranelift dan LLVM 18

  • Berkat integrasi Cranelift terbaru, kecepatan runtime meningkat signifikan sehingga modul WebAssembly berjalan lebih cepat dari sebelumnya
  • Wasmer 5.0 kini menyertakan versi terbaru LLVM (18), sehingga pengembang dapat mengakses optimasi terbaru dalam toolchain
  • Upgrade LLVM meningkatkan kompatibilitas dan performa, memberikan fondasi yang kuat untuk mengompilasi dan menjalankan modul WebAssembly yang kompleks
  • Wasmer 5.0 juga hadir dengan dukungan eksperimental LoongAarch64
  • Hasil benchmark coremark dengan versi compiler terbaru menunjukkan bahwa LLVM dan Cranelift pada Wasmer v5.0 sekitar 8% lebih cepat dibanding v4.4.0

Opini GN⁺

  • Rilis Wasmer 5.0 tampaknya akan menjadi tonggak penting bagi ekosistem WebAssembly. Khususnya, dukungan iOS dan beragam opsi backend diperkirakan dapat memperluas cakupan penerapan WebAssembly secara signifikan hingga ke aplikasi mobile
  • Dengan mendukung berbagai runtime seperti V8, Wasmi, dan WAMR sebagai backend, pengembang kini dapat memilih runtime yang paling sesuai dengan kebutuhan mereka. Ini tampaknya akan sangat membantu meningkatkan fleksibilitas dan kompatibilitas WebAssembly
  • Upaya optimalisasi performa melalui penyederhanaan codebase dan adopsi compiler terbaru juga patut diperhatikan. Ini menunjukkan bahwa Wasmer tidak hanya menambah fitur, tetapi juga terus berupaya meningkatkan kualitas secara berkelanjutan
  • Di sisi lain, penghentian dukungan binding Emscripten memang disayangkan, tetapi tampak sebagai pilihan yang masuk akal mengingat kemunculan standar baru seperti WASI dan WASIX telah mengurangi kebutuhannya
  • Secara keseluruhan, Wasmer 5.0 adalah rilis yang menunjukkan perkembangan WebAssembly dengan baik, dan ke depan Wasmer diperkirakan akan tetap menjadi salah satu proyek utama yang memimpin ekosistem WebAssembly. Namun, tampaknya masih diperlukan upaya berkelanjutan untuk meningkatkan stabilitas dan kematangan fitur-fitur yang masih berada pada tahap eksperimental

1 komentar

 
GN⁺ 2024-11-03

Pendapat Hacker News

  • Grafik performanya membingungkan dan terlihat seperti terkutuk. Ada yang ditampilkan dalam skala logaritmik, dan dalam beberapa kasus sulit memahami apa yang ingin disampaikan. Misalnya, grafik "Argon 2" menampilkan hampir semua batang dengan panjang yang sama, tetapi masing-masing batang diberi angka berbeda dalam milidetik.
  • Jika menggunakan V8 sebagai backend, maka dukungan untuk penanganan pengecualian WebAssembly dan garbage collection akan tersedia. Saya menantikan kabar lebih lanjut terkait ini. Saya penasaran apakah wasm-gc bisa berbagi data host/string antar modul yang berbeda dalam runtime yang sama, atau terbatas hanya pada satu modul.
  • Dari landing page Wasmer, sulit memahami apa yang sebenarnya mereka lakukan. Mereka bilang bisa menjalankan segalanya di mana saja, tetapi tidak jelas apa yang sebenarnya dilakukan. Terlihat seperti produk yang ditujukan untuk developer, tetapi lebih banyak buzzword daripada penjelasan teknis.
  • Saya puas dengan Wasmtime, dan sedang mengutak-atik model komponen WASM serta sistem plugin berbasis WASI. Seru juga dikerjakan.
  • Saya masih belum menemukan use case yang bagus untuk memanfaatkan WASM dalam proyek. Situasinya mirip seperti tidak tahu bagaimana memanfaatkan Raspberry Pi. Tidak jelas alasan memilih WASM untuk proyek Rust async.
  • Saya berharap ada solusi yang tidak memerlukan header Cross-Origin Isolated. Saya masih menggunakan versi lama.
  • Saya penasaran apakah WASM bisa menjadi alternatif Electron app yang lebih hemat resource. WASM memang tidak punya akses DOM, tetapi saya bertanya-tanya apakah itu bisa ditambahkan lewat extension.
  • Saya tidak tahu masalah apa yang diselesaikan solusi ini. Bukankah setiap runtime JavaScript sudah punya engine WASM bawaan?
  • Saya penasaran apakah solusi ini memungkinkan evaluasi kode Node.js dengan aman di dalam sandbox.
  • Grafik performanya sulit dibaca. Pemisah ribuan memakai koma dan titik secara campur aduk, dan presisinya dibulatkan secara acak menjadi 1, 2, atau 3 digit.