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

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

Mudah alih dicapai dengan menyusun kod aplikasi 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).

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. 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).

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.

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.

Perubahan ketara dalam nombor versi Wasmer dikaitkan dengan pengenalan perubahan yang tidak serasi pada API dalaman, yang, menurut pembangun, tidak akan menjejaskan 99% pengguna platform. Antara perubahan yang memecahkan keserasian, terdapat juga perubahan dalam format modul Wasm bersiri (modul bersiri dalam Wasmer 1.0 tidak akan dapat digunakan dalam Wasmer 2.0). Perubahan lain:

  • Sokongan untuk arahan SIMD (Arahan Tunggal, Berbilang Data), membenarkan penyelarasan operasi data. Bidang di mana penggunaan SIMD boleh meningkatkan prestasi dengan ketara termasuk pembelajaran mesin, pengekodan dan penyahkodan video, pemprosesan imej, simulasi proses fizikal dan manipulasi grafik.
  • Sokongan untuk jenis rujukan, membenarkan modul Wasm mengakses maklumat dalam modul lain atau dalam persekitaran asas.
  • Pengoptimuman prestasi yang ketara telah dibuat. Kelajuan masa jalan LLVM dengan nombor titik terapung telah meningkat kira-kira 50%. Panggilan fungsi telah dipercepatkan dengan ketara dengan mengurangkan situasi yang memerlukan akses kepada kernel. Prestasi penjana kod Cranelift telah meningkat sebanyak 40%. Mengurangkan masa penyahserialisasian data.
    Wasmer 2.0, kit alat untuk membina aplikasi berasaskan WebAssembly, tersedia
    Wasmer 2.0, kit alat untuk membina aplikasi berasaskan WebAssembly, tersedia
  • Untuk menggambarkan intipati dengan lebih tepat, nama enjin telah ditukar: JIT β†’ Universal, Native β†’ Dylib (Perpustakaan Dinamik), Fail Objek β†’ StaticLib (Perpustakaan Statik).

Sumber: opennet.ru

Tambah komen