Wasmer 2.0, chishandiso chekugadzira maapplication akavakirwa paWebAssembly, iripo

Iyo Wasmer purojekiti yakaburitsa kuburitswa kwayo kwechipiri kukuru, kugadzira nguva yekumhanyisa yekuita WebAssembly modules inogona kushandiswa kugadzira zvikumbiro zvepasirese zvinogona kumhanya pane akasiyana masisitimu ekushandisa, pamwe nekumhanyisa kodhi isina kuvimbika iri yega. Iyo kodhi yeprojekiti yakanyorwa muRust uye yakagoverwa pasi peMIT rezinesi.

Kutakurika kunooneswa nekunyora kodhi yekushandisa 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).

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

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.

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.

Kuchinja kwakakosha muhuwandu hweshanduro yeWasmer inosanganiswa nekuiswa kwekuchinja kusingaenderani kune yemukati API, iyo, maererano nevagadziri, haizokanganisa 99% yevashandisi vepuratifomu. Pakati peshanduko dzinotyora kuenderana, pane zvakare shanduko mufomati ye serialized Wasm modules (modules serialized muWasmer 1.0 haigone kushandiswa muWasmer 2.0). Dzimwe shanduko:

  • Tsigiro yeSIMD (Single Instruction, Multiple Data) mirairo, inobvumira kufanana kwekuita kwedata. Pakati penzvimbo idzo kushandiswa kweSIMD kunogona kuvandudza zvakanyanya mashandiro emuchina kudzidza, vhidhiyo encoding uye decoding, kugadzirisa mifananidzo, simulation yemaitiro emuviri uye magirafu manipulation.
  • Tsigiro yemhando dzereferenzi, ichibvumira Wasm modules kuwana ruzivo mune mamwe ma module kana munzvimbo iri pasi.
  • Yakakosha performance optimizations yakaitwa. Iko kumhanya kweLLVM nguva yekumhanya nenhamba dzinoyangarara dzakawedzerwa neinosvika makumi mashanu%. Basa rekufona rakakwidziridzwa zvakanyanya nekudzikisa mamiriro anoda kuwana kernel. Cranelift code jenareta kuita kwakawedzera ne50%. Yakaderedzwa data deerialization nguva.
    Wasmer 2.0, chishandiso chekugadzira maapplication akavakirwa paWebAssembly, iripo
    Wasmer 2.0, chishandiso chekugadzira maapplication akavakirwa paWebAssembly, iripo
  • Kuti unyatsoratidza hunhu, mazita einjini akachinjwa: JIT β†’ Universal, Native β†’ Dylib (Dynamic Library), Object File β†’ StaticLib (Static Library).

Source: opennet.ru

Voeg