Wasmer 3.0, kit alat untuk membina aplikasi berasaskan WebAssembly, tersedia

Keluaran utama ketiga projek Wasmer diperkenalkan, yang membangunkan masa jalan untuk melaksanakan modul WebAssembly yang boleh digunakan untuk mencipta aplikasi universal yang boleh dijalankan pada sistem pengendalian yang berbeza, serta untuk melaksanakan kod yang tidak dipercayai secara berasingan. Kod projek ditulis dalam Rust dan diedarkan di bawah lesen MIT.

Keupayaan untuk menjalankan satu aplikasi pada berbilang platform dicapai dengan menyusun kod ke dalam kod perantaraan WebAssembly peringkat rendah, yang boleh dijalankan pada mana-mana OS atau dibenamkan dalam program dalam bahasa pengaturcaraan lain. Program ini adalah bekas ringan yang menjalankan pseudokod WebAssembly. Bekas ini tidak terikat dengan sistem pengendalian dan boleh memasukkan kod yang asalnya ditulis dalam mana-mana bahasa pengaturcaraan. Kit alat Emscripten boleh digunakan untuk menyusun ke WebAssembly. Untuk menterjemah WebAssembly ke dalam kod mesin platform semasa, ia menyokong sambungan pelbagai bahagian belakang kompilasi (Singlepass, Cranelift, LLVM) dan enjin (menggunakan JIT atau penjanaan kod mesin).

Aplikasi diasingkan daripada sistem utama dalam persekitaran kotak pasir dan hanya mempunyai akses kepada fungsi yang diisytiharkan (mekanisme keselamatan berdasarkan pengurusan keupayaan - untuk tindakan dengan setiap sumber (fail, direktori, soket, panggilan sistem, dll.), permohonan mesti diberi kuasa yang sewajarnya). Kawalan akses dan interaksi dengan sistem disediakan menggunakan API WASI (WebAssembly System Interface), yang menyediakan antara muka pengaturcaraan untuk bekerja dengan fail, soket dan fungsi lain yang disediakan oleh sistem pengendalian.

Platform ini membolehkan anda mencapai prestasi pelaksanaan aplikasi hampir dengan pemasangan asli. Menggunakan Enjin Objek Asli untuk modul WebAssembly, anda boleh menjana kod asli ("wasmer compile -native" untuk menjana fail objek .so, .dylib dan .dll yang diprakompil), yang memerlukan masa jalan yang minimum untuk dijalankan, tetapi mengekalkan semua ciri pengasingan kotak pasir. Adalah mungkin untuk membekalkan atur cara yang telah disusun dengan Wasmer terbina dalam. API Rust dan Wasm-C-API ditawarkan untuk membuat alat tambah dan alat tambah.

Untuk melancarkan bekas WebAssembly, cukup untuk memasang masa jalan Wasmer pada sistem, yang datang tanpa kebergantungan luaran (β€œcurl https://get.wasmer.io -sSfL | sh”), dan jalankan fail yang diperlukan (β€œujian wasmer .wasm”). Program diedarkan dalam bentuk modul WebAssembly biasa, yang boleh diurus menggunakan pengurus pakej WAPM. Wasmer juga tersedia sebagai perpustakaan yang boleh digunakan untuk membenamkan kod WebAssembly dalam program Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir dan Java.

Perubahan utama dalam Wamer 3.0:

  • Menambah keupayaan untuk mencipta fail boleh laku asli untuk mana-mana platform. Perintah "wasmer create-exe" telah direka bentuk semula sepenuhnya untuk menukar fail kod perantaraan WebAssembly kepada boleh laku serba lengkap untuk platform Linux, Windows dan macOS yang boleh dijalankan tanpa memasang Wasmer sendiri.
  • Adalah mungkin untuk melancarkan pakej WAPM yang terletak dalam direktori wapm.io menggunakan arahan "wasmer run". Contohnya, menjalankan "wasmer run python/python" akan memuat turun pakej python daripada repositori wapm.io dan menjalankannya.
  • API Wasmer Rust telah direka bentuk semula sepenuhnya, mengubah gaya bekerja dengan memori dan menyediakan keupayaan untuk menyelamatkan objek Wasm dalam struktur Stor dengan selamat. Struktur MemoryView baharu telah dicadangkan yang membolehkan membaca dan menulis data ke kawasan memori linear.
  • Satu set komponen wasmer-js telah dilaksanakan untuk menjalankan Wasmer dalam pelayar web dan berinteraksi dengannya daripada JavaScript menggunakan perpustakaan wasm-bindgen. Dalam keupayaannya, wasmer-js sepadan dengan komponen wasmer-sys yang direka untuk menjalankan Wasmer pada sistem pengendalian biasa.
  • Enjin telah dipermudahkan. Daripada enjin berasingan untuk JIT, pemautan dinamik dan statik (Universal, Dylib, StaticLib), satu enjin biasa kini ditawarkan dan pemuatan dan penjimatan kod dikawal pada tahap parameter tetapan.
  • Untuk menyahsiri artifak, rangka kerja rkyv digunakan, yang memastikan operasi dalam mod sifar salinan, i.e. yang tidak memerlukan peruntukan memori tambahan dan melakukan penyahserikatan hanya menggunakan penimbal yang disediakan pada mulanya. Penggunaan rkyv telah meningkatkan kelajuan permulaan dengan ketara.
  • Pengkompil laluan tunggal Singlepass telah dipertingkatkan, menambah sokongan untuk fungsi berbilang nilai, kebolehpercayaan yang lebih baik dan menambah sokongan untuk bingkai pengendalian pengecualian.
  • Peningkatan pelaksanaan API WASI (WebAssembly System Interface). Masalah dalam antara muka perisian WASI untuk bekerja dengan sistem fail telah diselesaikan. Jenis dalaman telah direka bentuk semula menggunakan WAI (WebAssembly Interfaces), yang akan membolehkan satu siri ciri baharu pada masa hadapan.

Sumber: opennet.ru

Tambah komen