I-Wasmer 3.0, ikhithi yamathuluzi yokudala izinhlelo zokusebenza ezisuselwe ku-WebAssembly, iyatholakala

Ukukhishwa kwesithathu okukhulu kwephrojekthi ye-Wasmer kwethulwa, okuthuthukisa isikhathi sokusebenza sokuqalisa amamojula e-WebAssembly angasetshenziswa ukudala izinhlelo zokusebenza zomhlaba wonke ezingasebenza ezinhlelweni zokusebenza ezihlukene, kanye nokusebenzisa ikhodi engathenjwa ngokuhlukaniswa. Ikhodi yephrojekthi ibhalwe ngeRust futhi isatshalaliswa ngaphansi kwelayisensi ye-MIT.

Amandla okusebenzisa uhlelo olulodwa ezisekelweni ezahlukene ahlinzekwa ngokuhlanganisa ikhodi ibe ikhodi emaphakathi yezinga eliphansi ye-WebAssembly, engasebenza kunoma iyiphi i-OS noma ishumekwe ezinhlelweni kwezinye izilimi zokuhlela. Izinhlelo ziyiziqukathi ezingasindi ezisebenzisa i-WebAssembly pseudocode. Lezi ziqukathi aziboshiwe ohlelweni lokusebenza futhi zingafaka ikhodi ekuqaleni ebhalwe nganoma yiluphi ulimi lokuhlela. Ikhithi yamathuluzi ye-Emscripten ingasetshenziswa ukuhlanganisa ku-WebAssembly. Ukuze i-WebAssembly ihumushele kukhodi yomshini yesikhulumi samanje, isekela ukuxhunywa kwezindawo ezingemuva ezihlanganisiwe (Singlepass, Cranelift, LLVM) nezinjini (zisebenzisa i-JIT noma ukukhiqiza ikhodi yomshini).

Izicelo zihlukanisiwe kusistimu eyinhloko endaweni ye-sandbox futhi zifinyelela kuphela ekusebenzeni okumenyezelwe (indlela yokuvikela esekelwe ekulawuleni amandla - ngezenzo ngesisetshenziswa ngasinye (amafayela, izinkomba, amasokhethi, amakholi esistimu, njll.), isicelo kumele sinikezwe amandla afanele). Ukulawulwa kokufinyelela nokusebenzisana nohlelo kunikezwa kusetshenziswa i-WASI (WebAssembly System Interface) API, ehlinzeka ngezindawo zokusebenzelana zezinhlelo zokusebenza ngamafayela, amasokhethi kanye neminye imisebenzi ehlinzekwa isistimu yokusebenza.

Inkundla ikuvumela ukuthi ufinyelele ukusebenza kokwenziwa kohlelo lokusebenza eduze nemihlangano yomdabu. Usebenzisa iNative Object Engine yemojula ye-WebAssembly, ungakwazi ukukhiqiza ikhodi yomshini (“i-wasmer compile -native” ukuze ukhiqize amafayela ento ahlanganisiwe .so, .dylib kanye .dll), okudinga isikhathi esincane sokusebenza ukuze isebenze, kodwa igcine konke ukuhlukaniswa kwe-sandbox izici. Kungenzeka ukuhlinzeka ngezinhlelo esezihlanganiswe ngaphambili nge-Wasmer eyakhelwe ngaphakathi. I-Rust API ne-Wasm-C-API ihlinzekwa ngokudala izengezo nezandiso.

Ukuze uqalise isiqukathi se-WebAssembly, vele ufake i-Wasmer ohlelweni lwesikhathi sokusebenza, oluza ngaphandle kokuncika kwangaphandle (“curl https://get.wasmer.io -sSfL | sh”), bese uqalisa ifayela elidingekayo (“wasmer test.wasm” ). Izinhlelo zisatshalaliswa ngendlela yamamojula avamile e-WebAssembly, angaphathwa kusetshenziswa umphathi wephakheji we-WAPM. I-Wasmer iyatholakala futhi njengomtapo wolwazi ongasetshenziswa ukushumeka ikhodi ye-WebAssembly ku-Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, kanye nezinhlelo ze-Java.

Izinguquko ezinkulu ku-Wasmer 3.0:

  • Kwengezwe ikhono lokudala amafayela omdabu asebenzisekayo anoma iyiphi inkundla. Umyalo we-"wasmer create-exe" uklanywe kabusha ngokuphelele ukuze uguqule ifayela lekhodi le-WebAssembly eliphakathi libe okokusebenza okuqukethwe ngokwalo kwe-Linux, Windows, kanye nezinkundla ze-macOS ezingasebenza ngaphandle kokufaka i-Wasmer ngokwayo.
  • Kungenzeka ukuthi uqalise amaphakheji e-WAPM atholakala kuhla lwemibhalo lwe-wapm.io usebenzisa umyalo othi “wasmer run”. Isibonelo, ukusebenzisa i- "wasmer run python/python" kuzolanda iphakheji ye-python endaweni yokugcina ye-wapm.io bese igijima.
  • I-Wasmer Rust API yenziwe kabusha ngokuphelele, ishintsha isitayela sokusebenza ngenkumbulo futhi inikeza ikhono lokulondoloza ngokuphephile izinto ze-Wasm kusakhiwo Sesitolo. Kuphakanyiswe isakhiwo esisha se-MemoryView esivumela ukufundwa nokubhala idatha endaweni yememori ewumugqa.
  • Isethi yezingxenye ze-wamer-js isetshenziswe ukuze kuqalise i-Wasmer kusiphequluli sewebhu futhi ihlanganyele nayo kusukela ku-JavaScript kusetshenziswa umtapo wezincwadi we-wasm-bindgen. Ngamandla ayo, i-wamer-js ihambisana nezingxenye ze-wamer-sys eziklanyelwe ukusebenzisa i-Wasmer kumasistimu wokusebenza avamile.
  • Izinjini zenziwe zaba lula. Esikhundleni sezinjini ezihlukene ze-JIT, ukuxhumanisa okuguquguqukayo nokumile (Universal, Dylib, StaticLib), manje sekuhlinzekwa injini eyodwa evamile, futhi ukulayisha nokugcina ikhodi kulawulwa ezingeni lokusetha imingcele.
  • Ukuze ulahle izinto zobuciko, kusetshenziswe uhlaka lwe-rkyv, oluqinisekisa ukusebenza kumodi ye-zero-copy, i.e. engadingi ukwabiwa kwememori eyengeziwe futhi yenza i-deserialization isebenzisa kuphela ibhafa ehlinzekwe ekuqaleni. Ukusetshenziswa kwe-rkyv kukhuphuke kakhulu isivinini sokuqalisa.
  • I-Singlepass-single-pass compiler ithuthukisiwe, yengeza usekelo lwemisebenzi enamanani amaningi, ukwethembeka okuthuthukisiwe, nosekelo olungeziwe lwamafreyimu okuphatha ahlukile.
  • Ukuqaliswa okuthuthukisiwe kwe-WASI (WebAssembly System Interface) API. Izinkinga kusixhumi esibonakalayo sesofthiwe ye-WASI sokusebenza nesistimu yefayela sezixazululiwe. Izinhlobo zangaphakathi ziklanywe kabusha kusetshenziswa i-WAI (WebAssembly Interfaces), ezonika amandla uchungechunge lwezici ezintsha esikhathini esizayo.

Source: opennet.ru

Engeza amazwana