Wasmer 3.0, toolkit kanggo mbangun aplikasi basis WebAssembly, kasedhiya

Rilis utama katelu saka proyek Wasmer dienalake, sing ngembangake runtime kanggo ngeksekusi modul WebAssembly sing bisa digunakake kanggo nggawe aplikasi universal sing bisa mlaku ing sistem operasi sing beda-beda, uga kanggo nglakokake kode sing ora dipercaya kanthi terpisah. Kode proyek ditulis ing Rust lan disebarake miturut lisensi MIT.

Kemampuan kanggo mbukak siji aplikasi ing platform beda diwenehake dening kompilasi kode menyang tingkat rendah WebAssembly kode intermediate, kang bisa mbukak ing sembarang OS utawa ditempelake ing program ing basa program liyane. Program kasebut minangka wadah entheng sing mbukak pseudocode WebAssembly. Wadah kasebut ora ana gandhengane karo sistem operasi lan bisa ngemot kode sing asline ditulis ing basa pamrograman apa wae. Toolkit Emscripten bisa digunakake kanggo ngumpulake menyang WebAssembly. Kanggo nerjemahake WebAssembly menyang kode mesin saka platform saiki, ndhukung sambungan saka macem-macem backends kompilasi (Singlepass, Cranelift, LLVM) lan mesin (nggunakake JIT utawa generasi kode mesin).

Aplikasi diisolasi saka sistem utama ing lingkungan kothak wedhi lan mung nduweni akses menyang fungsi sing diumumake (mekanisme keamanan adhedhasar manajemen kapabilitas - kanggo tumindak kanthi saben sumber daya (file, direktori, soket, panggilan sistem, lsp.), aplikasi kudu diwenehi kekuwatan sing cocog). Kontrol akses lan interaksi karo sistem diwenehake nggunakake API WASI (WebAssembly System Interface), sing nyedhiyakake antarmuka pemrograman kanggo nggarap file, soket lan fungsi liyane sing diwenehake dening sistem operasi.

Platform kasebut ngidini sampeyan entuk kinerja eksekusi aplikasi sing cedhak karo rakitan asli. Nggunakake Native Object Engine kanggo modul WebAssembly, sampeyan bisa generate kode mesin ("wasmer compile -native" kanggo generate precompiled .dadi, file obyek .dylib lan .dll), kang mbutuhake runtime minimal kanggo mbukak, nanging nahan kabeh wedhi isolasi. fitur. Bisa uga nyedhiyakake program sing wis dikompilasi nganggo Wasmer sing dibangun. API Rust lan Wasm-C-API ditawakake kanggo nggawe tambahan lan ekstensi.

Kanggo miwiti wadhah WebAssembly, mung nginstal Wasmer ing sistem runtime, sing teka tanpa dependensi eksternal ("curl https://get.wasmer.io -sSfL | sh"), lan mbukak file sing dibutuhake ("wasmer test.wasm" ). Program disebarake ing wangun modul WebAssembly biasa, sing bisa dikelola nggunakake manajer paket WAPM. Wasmer uga kasedhiya minangka perpustakaan sing bisa digunakake kanggo nyisipake kode WebAssembly menyang Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, lan program Java.

Owah-owahan utama ing Wasmer 3.0:

  • Nambahake kemampuan kanggo nggawe file eksekusi asli kanggo platform apa wae. Printah "wasmer create-exe" wis rampung didesain ulang kanggo ngowahi file kode perantara WebAssembly dadi eksekusi mandiri kanggo platform Linux, Windows, lan macOS sing bisa mlaku tanpa nginstal Wasmer dhewe.
  • Sampeyan bisa miwiti paket WAPM sing ana ing direktori wapm.io nggunakake printah "wasmer run". Contone, mlaku "wasmer run python/python" bakal ndownload paket python saka wapm.io repositori lan mbukak.
  • Wasmer Rust API wis rampung didesain ulang, ngganti gaya nggarap memori lan nyedhiyakake kemampuan kanggo nyimpen obyek Wasm kanthi aman ing struktur Toko. Struktur MemoryView anyar wis diusulake sing ngidini maca lan nulis data menyang area memori linear.
  • Sakumpulan komponen wasmer-js wis dileksanakake kanggo mbukak Wasmer ing browser web lan sesambungan karo JavaScript nggunakake perpustakaan wasm-bindgen. Ing kapabilitas, wasmer-js cocog karo komponen wasmer-sys sing dirancang kanggo mbukak Wasmer ing sistem operasi biasa.
  • Mesin wis disederhanakake. Tinimbang mesin kapisah kanggo JIT, link dinamis lan statis (Universal, Dylib, StaticLib), siji mesin umum saiki ditawakake, lan loading lan nyimpen kode kontrol ing tingkat paramΓ¨ter setelan.
  • Kanggo deserialize artefak, framework rkyv digunakake, kang njamin operasi ing mode nul-salinan, i.e. sing ora mbutuhake alokasi memori tambahan lan nindakake deserialization mung nggunakake buffer sing kasedhiya. Panggunaan rkyv wis nambah kacepetan wiwitan.
  • Compiler single-pass Singlepass wis apik, nambah dhukungan kanggo fungsi multi-nilai, linuwih apik, lan dhukungan tambahan kanggo pigura penanganan pangecualian.
  • Apik implementasine saka WASI (WebAssembly System Interface) API. Masalah ing antarmuka piranti lunak WASI kanggo nggarap sistem file wis dirampungake. Jinis internal wis dirancang maneh nggunakake WAI (WebAssembly Interfaces), sing bakal ngaktifake seri fitur anyar ing mangsa ngarep.

Source: opennet.ru

Add a comment