Wasmer 2.0, toolkit kanggo mbangun aplikasi basis WebAssembly, kasedhiya

Proyèk Wasmer wis ngrilis rilis utama sing kapindho, ngembangake runtime kanggo nglakokaké modul WebAssembly sing bisa digunakake kanggo nggawe aplikasi universal sing bisa mlaku ing sistem operasi sing beda-beda, uga kanggo mbukak kode sing ora dipercaya kanthi terpisah. Kode proyek ditulis ing Rust lan disebarake miturut lisensi MIT.

Portabilitas digayuh kanthi nglumpukake kode aplikasi dadi kode perantara WebAssembly tingkat rendah, sing bisa mlaku ing OS apa wae utawa diselehake ing program ing basa pamrograman 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 mesin kode generasi).

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

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.

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.

Owah-owahan sing signifikan ing nomer versi Wasmer digandhengake karo introduksi owah-owahan sing ora kompatibel karo API internal, sing, miturut pangembang, ora bakal mengaruhi 99% pangguna platform. Antarane owah-owahan sing break kompatibilitas, ana uga owah-owahan ing format serialized modul Wasm (modul serialized ing Wasmer 1.0 ora bakal bisa digunakake ing Wasmer 2.0). Owah-owahan liyane:

  • Dhukungan kanggo instruksi SIMD (Single Instruction, Multiple Data), ngidini paralelisasi operasi data. Wilayah sing nggunakake SIMD bisa ningkatake kinerja kanthi signifikan kalebu learning machine, enkoding lan dekoding video, pangolahan gambar, simulasi proses fisik, lan manipulasi grafis.
  • Dhukungan kanggo jinis referensi, ngidini modul Wasm ngakses informasi ing modul liyane utawa ing lingkungan sing ndasari.
  • Optimisasi kinerja sing signifikan wis digawe. Kacepetan runtime LLVM kanthi nomer floating point wis tambah kira-kira 50%. Panggilan fungsi wis digawe cepet kanthi nyuda kahanan sing mbutuhake akses menyang kernel. Kinerja generator kode Cranelift wis tambah 40%. Suda wektu deserialization data.
    Wasmer 2.0, toolkit kanggo mbangun aplikasi basis WebAssembly, kasedhiya
    Wasmer 2.0, toolkit kanggo mbangun aplikasi basis WebAssembly, kasedhiya
  • Kanggo nggambarake inti kanthi luwih akurat, jeneng mesin wis diganti: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Source: opennet.ru

Add a comment