Wasmer 2.0, o se meafaigaluega mo le fausiaina o WebAssembly-faʻavae talosaga, o loʻo avanoa

O le poloketi Wasmer ua faʻasalalau lona faʻasalalauga lona lua, faʻavaeina se taimi faʻatulagaina mo le faʻatinoina o le WebAssembly modules e mafai ona faʻaogaina e fatuina ai faʻaoga lautele e mafai ona faʻaogaina i luga o faiga faʻaoga eseese, faʻapea foʻi ma le faʻaogaina o code le talitonuina i le vavae ese. O le fa'ailoga o le poloketi o lo'o tusia i le Rust ma fa'asoa i lalo ole laisene MIT.

E maua le gafatia e ala i le tuʻufaʻatasia o le numera o talosaga ile laʻititi laʻititi WebAssembly code intermediate, lea e mafai ona taʻavale i soʻo se OS pe faʻapipiʻi i polokalame i isi gagana polokalame. O polokalame o ni koneteina mama e faʻatautaia WebAssembly pseudocode. O nei koneteina e le o noatia i le faiga fa'aoga ma e mafai ona aofia ai le fa'ailoga na tusia muamua i so'o se gagana polokalame. O le Emscripten toolkit e mafai ona faʻaogaina e tuʻufaʻatasia i WebAssembly. Ina ia faaliliu le WebAssembly i totonu o le masini numera o le tulaga o loʻo i ai nei, e lagolagoina ai le fesoʻotaʻiga o faʻasalalauga tuʻufaʻatasiga eseese (Singlepass, Cranelift, LLVM) ma afi (faʻaaogaina le JIT poʻo le faʻasologa o le masini).

O le puleaina o avanoa ma fegalegaleaiga ma le faiga e tuʻuina atu e faʻaaoga ai le WASI (WebAssembly System Interface) API, lea e tuʻuina atu ai fesoʻotaʻiga polokalame mo le galulue ai ma faila, sockets ma isi galuega e tuʻuina atu e le faʻaogaina o le polokalama. O talosaga e vavae ese mai le faiga autu i totonu o le sandbox siosiomaga ma e naʻo le faʻaalia o galuega faʻatino (o se masini saogalemu e faʻavae i luga o le puleaina o gafatia - mo gaioiga faʻatasi ma punaoa taʻitasi (faila, directories, sockets, system calls, etc.), le talosaga e tatau ona tuuina atu i ai malosiaga talafeagai).

Ina ia faʻalauiloa se pusa WebAssembly, naʻo le faʻapipiʻiina o Wasmer i le taimi faʻaoga, lea e sau e aunoa ma se faʻalagolago i fafo ("curl https://get.wasmer.io -sSfL | sh"), ma faʻasolo le faila talafeagai ("wasmer test.wasm" ). Polokalama o loʻo tufatufaina i le tulaga o faʻaoga masani WebAssembly, lea e mafai ona faʻatautaia e faʻaaoga ai le WAPM package manager. O loʻo avanoa foi Wasmer o se faletusi e mafai ona faʻaogaina e faʻapipiʻi ai le WebAssembly code i Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, ma Java polokalame.

O le fa'avae e mafai ai ona e ausia le fa'atinoga o le fa'atinoina o talosaga e latalata i fa'apotopotoga fa'ale-aganu'u. I le fa'aaogaina o le Native Object Engine mo le WebAssembly module, e mafai ona e fa'atupuina le fa'ailoga masini ("wasmer compile -native" e fa'atupuina .so, .dylib ma .dll faila faila), lea e mana'omia ai se taimi itiiti e ta'avale ai, ae fa'atumauina uma le fa'aesea o le sandbox. foliga. E mafai ona tuʻuina atu polokalame faʻapipiʻi muamua i totonu o Wasmer. O le Rust API ma le Wasm-C-API o loʻo ofoina atu mo le fatuina o faʻaopoopoga ma faʻaopoopoga.

O se suiga taua i le numera numera o Wasmer e fesoʻotaʻi ma le faʻaofiina o suiga faʻafeiloaʻi i totonu o le API, lea, e tusa ai ma le au atinaʻe, o le a le afaina ai le 99% o tagata faʻaoga. Faatasi ai ma suiga e malepelepe ai le fesoʻotaʻiga, o loʻo i ai foi se suiga i le faatulagaga o faʻasologa o le Wasm modules (modules faʻasalalau i Wasmer 1.0 o le a le mafai ona faʻaaogaina i Wasmer 2.0). O isi suiga:

  • Lagolago mo faʻatonuga a le SIMD (Single Instruction, Multiple Data), faʻatagaina le faʻaogaina o faʻamatalaga faʻamatalaga. O vaega e mafai ai e le faʻaogaina o le SIMD ona faʻaleleia atili le faʻatinoga e aofia ai le aʻoaʻoina o masini, faʻasologa o ata vitio ma le faʻavasegaina, faʻasologa o ata, faʻataʻitaʻiga o le tino, ma le faʻaogaina o ata.
  • Lagolago mo ituaiga faʻamatalaga, faʻatagaina Wasm modules e maua faʻamatalaga i isi modules poʻo totonu o le siosiomaga faʻavae.
  • Ua faia ni fa'atonuga taua. O le saoasaoa o le LLVM runtime ma numera faʻafefeteina ua faʻateleina e tusa ma le 50%. Ua matua faatelevaveina valaau galuega e ala i le faaitiitia o tulaga e manaomia ai le avanoa i le fatu. Ua siitia i le 40%. Fa'aiti'itia taimi fa'alētalatala fa'amatalaga.
    Wasmer 2.0, o se meafaigaluega mo le fausiaina o WebAssembly-faʻavae talosaga, o loʻo avanoa
    Wasmer 2.0, o se meafaigaluega mo le fausiaina o WebAssembly-faʻavae talosaga, o loʻo avanoa
  • Ina ia sili atu ona saʻo le atagia o le aano, ua suia igoa o afi: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

puna: opennet.ru

Faaopoopo i ai se faamatalaga