Wasmer 2.0, toolkit pikeun ngawangun aplikasi basis WebAssembly, sayogi

Proyék Wasmer geus ngarilis release utama kadua, ngamekarkeun runtime pikeun executing modul WebAssembly nu bisa dipaké pikeun nyieun aplikasi universal nu bisa dijalankeun dina sistem operasi béda, kitu ogé pikeun ngajalankeun kode untrusted di isolasi. Kodeu proyék ditulis dina Rust sareng disebarkeun dina lisénsi MIT.

Portability kahontal ku compile kode aplikasi kana tingkat low WebAssembly kode panganteur, nu bisa dijalankeun dina OS mana wae atawa jadi study dina program dina basa programming séjén. Programna mangrupikeun wadah anu hampang anu ngajalankeun pseudocode WebAssembly. Wadah ieu teu dihijikeun ka sistem operasi sarta bisa ngawengku kode asalna ditulis dina sagala basa program. The Emscripten toolkit bisa dipaké pikeun compile ka WebAssembly. Pikeun narjamahkeun WebAssembly kana kode mesin tina platform ayeuna, éta ngarojong sambungan rupa backends kompilasi (Singlepass, Cranelift, LLVM) jeung mesin (ngagunakeun JIT atawa mesin kode generasi).

Kontrol aksés sareng interaksi sareng sistem disayogikeun nganggo API WASI (WebAssembly System Interface), anu nyayogikeun antarmuka pemrograman pikeun damel sareng file, sockets sareng fungsi sanésna anu disayogikeun ku sistem operasi. Aplikasi diisolasi tina sistem utama dina lingkungan sandbox sareng ngan ukur gaduh aksés kana fungsionalitas anu dinyatakeun (mékanisme kaamanan dumasar kana manajemén kamampuan - pikeun tindakan sareng masing-masing sumber daya (file, diréktori, soket, telepon sistem, jsb.), aplikasi kudu dibéré kakuatan luyu).

Pikeun ngaluncurkeun wadah WebAssembly, pasang Wasmer dina sistem runtime, anu asalna tanpa katergantungan éksternal ("curl https://get.wasmer.io -sSfL | sh"), sareng jalankeun file anu diperyogikeun ("wasmer test.wasm" ). Program disebarkeun dina bentuk modul WebAssembly biasa, anu tiasa diurus nganggo manajer pakét WAPM. Wasmer ogé sayogi salaku perpustakaan anu tiasa dianggo pikeun nyelapkeun kode WebAssembly kana Rust, C/C ++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, sareng program Java.

Platformna ngamungkinkeun anjeun pikeun ngahontal kinerja palaksanaan aplikasi anu caket sareng rakitan asli. Ngagunakeun Objék Engine Asalna pikeun modul WebAssembly, Anjeun bisa ngahasilkeun kode mesin ("wasmer compile -native" pikeun ngahasilkeun precompiled .jadi, .dylib na .dll file obyék), nu merlukeun runtime minimal keur ngajalankeun, tapi nahan sagala isolasi sandbox. Fitur. Kasebut nyaéta dimungkinkeun pikeun nyadiakeun program precompiled kalawan diwangun-di Wasmer. API Rust sareng Wasm-C-API ditawarkeun pikeun nyiptakeun tambihan sareng ekstensi.

Parobihan anu signifikan dina nomer versi Wasmer dikaitkeun sareng ngenalkeun parobihan anu teu cocog kana API internal, anu, numutkeun pamekar, moal mangaruhan 99% pangguna platform. Diantara perobahan nu megatkeun kasaluyuan, aya ogé parobahan dina format serialized modul Wasm (modul serialized di Wasmer 1.0 moal bisa dipaké dina Wasmer 2.0). Parobahan séjén:

  • Rojongan pikeun instruksi SIMD (Parentah Tunggal, Data Multiple), ngamungkinkeun parallelization operasi data. Wewengkon dimana pamakéan SIMD nyata bisa ngaronjatkeun kinerja kaasup learning mesin, video encoding jeung decoding, processing gambar, simulasi prosés fisik, jeung manipulasi grafik.
  • Rojongan pikeun jenis rujukan, ngamungkinkeun modul Wasm ngakses informasi dina modul séjén atawa di lingkungan kaayaan.
  • optimizations kinerja signifikan geus dijieun. Laju runtime LLVM kalayan angka floating point parantos ningkat ku sakitar 50%. Telepon fungsi parantos gancangan sacara signifikan ku ngirangan kaayaan anu peryogi aksés kana kernel. Kinerja generator kode Cranelift parantos ningkat ku 40%. Ngurangan waktos deserialization data.
    Wasmer 2.0, toolkit pikeun ngawangun aplikasi basis WebAssembly, sayogi
    Wasmer 2.0, toolkit pikeun ngawangun aplikasi basis WebAssembly, sayogi
  • Pikeun langkung akurat ngagambarkeun hakekat, nami mesin parantos dirobih: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

sumber: opennet.ru

Tambahkeun komentar