Wasmer 3.0, chishandiso chekugadzira maapplication akavakirwa paWebAssembly, iripo

Kuburitswa kukuru kwechitatu kweprojekiti yeWasmer inounzwa, iyo inovandudza nguva yekumhanya yekuita WebAssembly modules inogona kushandiswa kugadzira zvikumbiro zvepasirese zvinogona kushanda pane akasiyana masisitimu anoshanda, pamwe nekuita isina kuvimbika kodhi iri yega. Iyo kodhi yeprojekiti yakanyorwa muRust uye yakagoverwa pasi peMIT rezinesi.

Kugona kumhanyisa application imwe pamapuratifomu akasiyana kunopihwa nekunyora kodhi mune yakaderera-level WebAssembly yepakati kodhi, iyo inogona kumhanya pane chero OS kana kuisirwa muzvirongwa mune mimwe mitauro yekuronga. Zvirongwa zvacho midziyo isingaremi inomhanya WebAssembly pseudocode. Iyi midziyo haina kusungirirwa kune inoshanda sisitimu uye inogona kusanganisira kodhi yakanyorwa pakutanga mune chero mutauro wechirongwa. Iyo Emscripten toolkit inogona kushandiswa kuunganidza kuWebAssembly. Kushandura WebAssembly kuita kodhi yemuchina yepuratifomu yazvino, inotsigira kubatana kweakasiyana-siyana ekubatanidza backends (Singlepass, Cranelift, LLVM) uye injini (uchishandisa JIT kana muchina kodhi yekugadzira).

Zvikumbiro zvakaparadzaniswa neiyo huru sisitimu munzvimbo yejecha uye inokwanisa chete kune yakaziviswa mashandiro (nzira yekuchengetedza yakavakirwa pakugona manejimendi - yezviito neimwe yezviwanikwa (mafaira, madhairekitori, sockets, system mafoni, nezvimwewo), iyo chikumbiro chinofanira kupihwa masimba akakodzera). Kupinda kwekutonga uye kupindirana nehurongwa kunopiwa uchishandisa WASI (WebAssembly System Interface) API, iyo inopa zvirongwa zvekugadzirisa zvekushanda nemafaira, zvigadziko uye mamwe mabasa anopiwa nehurongwa hwekushanda.

Iyo puratifomu inobvumidza iwe kuti uwane kuita kwekuita kwekushandisa padhuze nemagungano emunharaunda. Uchishandisa Native Object Engine yeWebAssembly module, unogona kugadzira machine code ("wasmer compile -native" kuti ibudise precompiled .so, .dylib uye .dll chinhu mafaira), izvo zvinoda nguva shoma yekumhanya kuti iite, asi inochengetedza bhokisi rose rejecha rega. features. Zvinokwanisika kupa zvirongwa zvakafanorongwa neWasmer yakavakirwa. Iyo Rust API uye Wasm-C-API inopihwa kugadzira ma-add-ons uye ekuwedzera.

Kuti utange mudziyo weWebAssembly, ingoisa Wasmer muruntime system, inouya isina zvinotsamira kunze ("curl https://get.wasmer.io -sSfL | sh"), uye mhanyisa faira rinodiwa ("wasmer test.wasm" ) Zvirongwa zvinogovaniswa nenzira yenguva dzose WebAssembly modules, iyo inogona kutarisirwa uchishandisa WAPM package maneja. Wasmer inowanikwawo seraibhurari inogona kushandiswa kubatika WebAssembly kodhi muRust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, uye Java zvirongwa.

Shanduko huru muWasmer 3.0:

  • Yakawedzera kugona kugadzira mafaera echinyakare anogona kuitiswa chero papuratifomu. Iwo "wasmer gadzira-exe" murairo wakagadziridzwa zvachose kuti uchinje WebAssembly yepakati kodhi faira kuita yega-ine executable yeLinux, Windows, uye macOS mapuratifomu anogona kumhanya asina kuisa Wasmer pachayo.
  • Zvinogoneka kuvhura WAPM mapakeji ari muwapm.io dhairekitori uchishandisa iyo "wasmer run" kuraira. Semuenzaniso, kumhanya "wasmer run python/python" kunodhawunirodha python package kubva pawapm.io repository uye woimhanyisa.
  • Iyo Wasmer Rust API yakagadziridzwa zvachose, ichichinja maitiro ekushanda nendangariro uye ichipa kugona kuchengetedza zvakachengeteka zvinhu zveWasm muChitoro chimiro. Chimiro chitsva cheMemoryView chakapihwa chinobvumira kuverenga nekunyora data kune mutsara ndangariro nzvimbo.
  • Seti yezvikamu zvewamer-js yakaitwa kuti imhanye Wasmer muwebhu browser uye kutaurirana nayo kubva kuJavaScript uchishandisa iyo wasm-bindgen raibhurari. Mukukwanisa kwayo, wasmer-js inoenderana newamer-sys zvikamu zvakagadzirirwa kumhanyisa Wasmer pane yenguva dzose inoshanda masisitimu.
  • Injini dzakarerutswa. Panzvimbo peinjini dzakaparadzana dzeJIT, ine simba uye yakamira yekubatanidza (Universal, Dylib, StaticLib), imwe yakajairika injini yave kupihwa, uye kurodha uye kuchengetedza kodhi inodzorwa pamwero wekuseta paramita.
  • Kuti deserialize zvigadzirwa, iyo rkyv framework inoshandiswa, iyo inovimbisa kushanda mu zero-copy mode, i.e. iyo inoda kusawedzerwa ndangariro kugoverwa uye inoita deserialization chete uchishandisa iyo yekutanga yakapihwa buffer. Iko kushandiswa kwerkyv kwakawedzera zvakanyanya kumhanya kwekutanga.
  • Iyo Singlepass single-pass compiler yakagadziridzwa, ichiwedzera tsigiro yeakawanda-value mabasa, yakagadziridzwa kuvimbika, uye yakawedzera rutsigiro rwekusarudzika kubata mafuremu.
  • Kuvandudzwa kwekushandiswa kweWASI (WebAssembly System Interface) API. Matambudziko muWASI software interface yekushanda nefaira system yakagadziriswa. Mhando dzemukati dzakagadziridzwa patsva uchishandisa WAI (WebAssembly Interfaces), izvo zvinogonesa nhevedzano yezvinhu zvitsva mune ramangwana.

Source: opennet.ru

Voeg