Wasmer 2.0, sebuah toolkit untuk membangun aplikasi berbasis WebAssembly, telah tersedia

Proyek Wasmer telah merilis rilis besar keduanya, mengembangkan runtime untuk mengeksekusi modul WebAssembly yang dapat digunakan untuk membuat aplikasi universal yang dapat berjalan pada sistem operasi berbeda, serta menjalankan kode tidak tepercaya secara terpisah. Kode proyek ditulis dalam Rust dan didistribusikan di bawah lisensi MIT.

Portabilitas dicapai dengan mengkompilasi kode aplikasi ke dalam kode perantara WebAssembly tingkat rendah, yang dapat dijalankan di OS apa pun atau tertanam dalam program dalam bahasa pemrograman lain. Programnya adalah wadah ringan yang menjalankan kodesemu WebAssembly. Kontainer ini tidak terikat dengan sistem operasi dan dapat berisi kode aslinya yang ditulis dalam bahasa pemrograman apa pun. Toolkit Emscripten dapat digunakan untuk mengkompilasi ke WebAssembly. Untuk menerjemahkan WebAssembly ke dalam kode mesin pada platform saat ini, ia mendukung koneksi berbagai backend kompilasi (Singlepass, Cranelift, LLVM) dan mesin (menggunakan JIT atau pembuatan kode mesin).

Kontrol akses dan interaksi dengan sistem disediakan menggunakan API WASI (WebAssembly System Interface), yang menyediakan antarmuka pemrograman untuk bekerja dengan file, soket, dan fungsi lain yang disediakan oleh sistem operasi. Aplikasi diisolasi dari sistem utama di lingkungan sandbox dan hanya memiliki akses ke fungsionalitas yang dinyatakan (mekanisme keamanan berdasarkan manajemen kemampuan - untuk tindakan dengan masing-masing sumber daya (file, direktori, soket, panggilan sistem, dll.), aplikasi permohonan harus diberikan kewenangan yang sesuai).

Untuk meluncurkan wadah WebAssembly, cukup instal Wasmer di sistem runtime, yang hadir tanpa ketergantungan eksternal (“curl https://get.wasmer.io -sSfL | sh”), dan jalankan file yang diperlukan (“wasmer test.wasm” ). Program didistribusikan dalam bentuk modul WebAssembly biasa, yang dapat dikelola menggunakan manajer paket WAPM. Wasmer juga tersedia sebagai perpustakaan yang dapat digunakan untuk menyematkan kode WebAssembly ke dalam program Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, dan Java.

Platform ini memungkinkan Anda mencapai kinerja eksekusi aplikasi yang mendekati rakitan asli. Dengan menggunakan Mesin Objek Asli untuk modul WebAssembly, Anda dapat membuat kode mesin (“kompilasi wasmer -native” untuk menghasilkan file objek .so, .dylib, dan .dll yang telah dikompilasi sebelumnya), yang memerlukan runtime minimal untuk dijalankan, namun tetap mempertahankan semua isolasi kotak pasir fitur. Dimungkinkan untuk menyediakan program yang telah dikompilasi dengan Wasmer bawaan. Rust API dan Wasm-C-API ditawarkan untuk membuat add-on dan ekstensi.

Perubahan signifikan dalam nomor versi Wasmer dikaitkan dengan pengenalan perubahan yang tidak kompatibel pada API internal, yang menurut pengembang, tidak akan mempengaruhi 99% pengguna platform. Di antara perubahan yang merusak kompatibilitas, terdapat juga perubahan format modul Wasm yang diserialkan (modul yang diserialkan di Wasmer 1.0 tidak akan dapat digunakan di Wasmer 2.0). Perubahan lainnya:

  • Dukungan untuk instruksi SIMD (Instruksi Tunggal, Banyak Data), memungkinkan paralelisasi operasi data. Area di mana penggunaan SIMD dapat meningkatkan kinerja secara signifikan meliputi pembelajaran mesin, pengkodean dan penguraian kode video, pemrosesan gambar, simulasi proses fisik, dan manipulasi grafis.
  • Dukungan untuk tipe referensi, memungkinkan modul Wasm mengakses informasi di modul lain atau di lingkungan yang mendasarinya.
  • Pengoptimalan kinerja yang signifikan telah dilakukan. Kecepatan runtime LLVM dengan angka floating point telah ditingkatkan sekitar 50%. Pemanggilan fungsi telah dipercepat secara signifikan dengan mengurangi situasi yang memerlukan akses ke kernel. Kinerja generator kode Cranelift telah meningkat sebesar 40%. Mengurangi waktu deserialisasi data.
    Wasmer 2.0, sebuah toolkit untuk membangun aplikasi berbasis WebAssembly, telah tersedia
    Wasmer 2.0, sebuah toolkit untuk membangun aplikasi berbasis WebAssembly, telah tersedia
  • Agar lebih akurat mencerminkan esensinya, nama mesin telah diubah: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Sumber: opennet.ru

Tambah komentar