Wasmer 3.0, chida chopangira mapulogalamu kutengera WebAssembly, ilipo

Kutulutsidwa kwakukulu kwachitatu kwa polojekiti ya Wasmer kumayambitsidwa, yomwe imapanga nthawi yogwiritsira ntchito ma modules a WebAssembly omwe angagwiritsidwe ntchito popanga mapulogalamu apadziko lonse omwe angayende pa machitidwe osiyanasiyana ogwiritsira ntchito, komanso kuchita kachidindo kosadalirika payekha. Khodi ya projekitiyo idalembedwa mu Rust ndipo imagawidwa pansi pa layisensi ya MIT.

Kutha kuyendetsa pulogalamu imodzi pamapulatifomu osiyanasiyana kumaperekedwa polemba kachidindo mu code yapakatikati ya WebAssembly, yomwe imatha kuthamanga pa OS iliyonse kapena kuyikidwa m'mapulogalamu amitundu ina. 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).

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

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.

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.

Zosintha zazikulu mu Wasmer 3.0:

  • Adawonjezera kuthekera kopanga mafayilo amtundu wamtundu uliwonse. Lamulo la "wasmer create-exe" lakonzedwanso kuti lisinthe fayilo yapakatikati ya WebAssembly kukhala zodzipangira zokha pa nsanja za Linux, Windows, ndi macOS zomwe zimatha kuthamanga popanda kukhazikitsa Wasmer yokha.
  • Ndizotheka kukhazikitsa phukusi la WAPM lomwe lili mu bukhu la wapm.io pogwiritsa ntchito lamulo la "wasmer run". Mwachitsanzo, kuthamanga "wasmer run python/python" kutsitsa phukusi la python kuchokera pamalo osungira wapm.io ndikuyendetsa.
  • Wasmer Rust API yasinthidwa kwathunthu, ikusintha mawonekedwe ogwirira ntchito ndi kukumbukira ndikupereka kuthekera kosunga zinthu za Wasm mu Store. Mapangidwe atsopano a MemoryView aperekedwa omwe amalola kuwerenga ndi kulemba deta kumalo okumbukira.
  • Gulu la zida za wasmer-js zakhazikitsidwa kuti zigwiritse ntchito Wasmer mu msakatuli ndikulumikizana nazo kuchokera ku JavaScript pogwiritsa ntchito laibulale ya wasm-bindgen. Mu mphamvu zake, wasmer-js imagwirizana ndi zida za wasmer-sys zomwe zimapangidwira kuyendetsa Wasmer pamakina ogwiritsira ntchito nthawi zonse.
  • Injini zakhala zosavuta. M'malo mwa injini zosiyana za JIT, zolumikizana zokhazikika komanso zokhazikika (Universal, Dylib, StaticLib), injini imodzi wamba tsopano imaperekedwa, ndipo kutsitsa ndikusunga kachidindo kumayendetsedwa pamlingo wokhazikitsa magawo.
  • Kuti awononge zinthu zakale, chimango cha rkyv chimagwiritsidwa ntchito, chomwe chimatsimikizira kugwira ntchito mu zero-copy mode, i.e. zomwe sizifuna kugawidwa kowonjezera kukumbukira ndipo zimapanga deserialization pogwiritsa ntchito buffer yomwe idaperekedwa poyamba. Kugwiritsa ntchito rkyv kwachulukitsa kwambiri liwiro loyambira.
  • Singlepass single-pass compiler yakonzedwa bwino, ndikuwonjezera kuthandizira kwazinthu zambiri zamtengo wapatali, kudalirika kodalirika, ndi chithandizo chowonjezera cha mafelemu osagwira ntchito.
  • Kupititsa patsogolo kukhazikitsidwa kwa WASI (WebAssembly System Interface) API. Mavuto mu mawonekedwe a pulogalamu ya WASI yogwirira ntchito ndi mafayilo asinthidwa. Mitundu yamkati idakonzedwanso pogwiritsa ntchito WAI (WebAssembly Interfaces), zomwe zithandizira mndandanda wazinthu zatsopano mtsogolo.

Source: opennet.ru

Kuwonjezera ndemanga