Wasmer 2.0, chida chopangira mapulogalamu kutengera WebAssembly, ilipo

Pulojekiti ya Wasmer yatulutsa kumasulidwa kwake kwakukulu kwachiwiri, kupanga nthawi yogwiritsira ntchito ma modules a WebAssembly omwe angagwiritsidwe ntchito popanga mapulogalamu apadziko lonse omwe amatha kuyendetsa machitidwe osiyanasiyana, komanso kuyendetsa kachidindo kosadalirika payekha. Khodi ya projekitiyo idalembedwa mu Rust ndipo imagawidwa pansi pa layisensi ya MIT.

Kusunthika kumatheka polemba khodi yogwiritsira ntchito mu code yapakatikati ya WebAssembly, yomwe imatha kugwira ntchito pa OS iliyonse kapena kuyikidwa m'mapulogalamu azinenero zina. Mapulogalamuwa ndi zotengera zopepuka zomwe zimayendetsa WebAssembly pseudocode. Zotengerazi sizimangiriridwa ku makina ogwiritsira ntchito ndipo zingaphatikizepo ma code omwe adalembedwa m'chinenero chilichonse cha mapulogalamu. Zida za Emscripten zitha kugwiritsidwa ntchito kuphatikiza ku WebAssembly. Kumasulira WebAssembly kukhala makina a pulatifomu yapano, imathandizira kulumikizana kwa ma backends osiyanasiyana (Singlepass, Cranelift, LLVM) ndi injini (pogwiritsa ntchito JIT kapena makina opanga makina).

Kuwongolera ndi kuyanjana ndi dongosololi kumaperekedwa pogwiritsa ntchito WASI (WebAssembly System Interface) API, yomwe imapereka mawonekedwe a mapulogalamu ogwirira ntchito ndi mafayilo, sockets ndi ntchito zina zomwe zimaperekedwa ndi opaleshoni. Mapulogalamu amasiyanitsidwa ndi dongosolo lalikulu m'malo a sandbox ndipo amatha kugwiritsa ntchito zomwe zalengezedwa (njira yachitetezo yotengera luso la kasamalidwe - pazochita ndi chilichonse (mafayilo, maulalo, soketi, mafoni amtundu, etc.), kugwiritsa ntchito kuyenera kupatsidwa mphamvu zoyenera).

Kuti mutsegule chidebe cha WebAssembly, ingoikani Wasmer mu nthawi yothamanga, yomwe imabwera popanda kudalira kunja ("curl https://get.wasmer.io -sSfL | sh"), ndikuyendetsa fayilo yofunikira ("wasmer test.wasm" ). Mapulogalamu amagawidwa mu mawonekedwe a WebAssembly modules nthawi zonse, omwe amatha kuyang'aniridwa pogwiritsa ntchito phukusi la WAPM. Wasmer imapezekanso ngati laibulale yomwe ingagwiritsidwe ntchito kuyika khodi ya WebAssembly mu Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, ndi mapulogalamu a Java.

Pulatifomu imakulolani kuti mukwaniritse magwiridwe antchito pafupi ndi misonkhano yachibadwidwe. Pogwiritsa ntchito Native Object Engine pa WebAssembly module, mukhoza kupanga makina a code ("wasmer compile -native" kuti apange precompiled .so, .dylib ndi .dll mafayilo azinthu), zomwe zimafuna nthawi yochepa yothamanga, koma imasunga kudzipatula kwa sandbox yonse. Mawonekedwe. Ndizotheka kupereka mapulogalamu omwe adapangidwa kale ndi Wasmer yomangidwa. Rust API ndi Wasm-C-API amaperekedwa kuti apange zowonjezera ndi zowonjezera.

Kusintha kwakukulu kwa chiwerengero cha Wasmer kumagwirizana ndi kukhazikitsidwa kwa kusintha kosagwirizana ndi API yamkati, yomwe, malinga ndi omanga, sichidzakhudza 99% ya ogwiritsa ntchito nsanja. Pakati pa zosintha zomwe zimaphwanya kuyanjana, palinso kusintha kwa mawonekedwe a serialized Wasm modules (ma module opangidwa mu Wasmer 1.0 sangathe kugwiritsidwa ntchito mu Wasmer 2.0). Zosintha zina:

  • Thandizo la malangizo a SIMD (Single Instruction, Multiple Data), kulola kufanana kwa ntchito za data. Madera omwe kugwiritsa ntchito SIMD kungawongolere magwiridwe antchito ndikuphatikiza kuphunzira pamakina, kusindikiza mavidiyo ndi kujambula, kukonza zithunzi, kuyerekezera kachitidwe ka thupi, ndi kusintha kwazithunzi.
  • Kuthandizira kwa mitundu yolozera, kulola ma module a Wasm kuti azitha kudziwa zambiri m'ma module ena kapena m'malo omwe ali pansi.
  • Kukhathamiritsa kwakukulu kwa magwiridwe antchito apangidwa. Kuthamanga kwa nthawi yothamanga ya LLVM yokhala ndi ziwerengero zoyandama zawonjezeka ndi pafupifupi 50%. Mafoni ogwira ntchito afulumizitsidwa kwambiri pochepetsa zochitika zomwe zimafuna mwayi wofikira kernel. Ntchito ya jenereta ya cranelift yawonjezeka ndi 40%. Kuchepetsa nthawi yochotsa deta.
    Wasmer 2.0, chida chopangira mapulogalamu kutengera WebAssembly, ilipo
    Wasmer 2.0, chida chopangira mapulogalamu kutengera WebAssembly, ilipo
  • Kuti muwonetsere zenizeni zenizeni, mayina a injini asinthidwa: JIT β†’ Universal, Native β†’ Dylib (Dynamic Library), Fayilo Yachinthu β†’ StaticLib (Static Library).

Source: opennet.ru

Kuwonjezera ndemanga