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

Iphrojekthi ye-Wasmer ikhiphe ukukhululwa kwayo kwesibili okukhulu, ithuthukisa isikhathi sokusebenza sokwenza amamojula e-WebAssembly angasetshenziswa ukudala izinhlelo zokusebenza zomhlaba wonke ezingasebenza ezinhlelweni zokusebenza ezihlukene, kanye nokusebenzisa ikhodi engathenjwa ngokuzihlukanisa. Ikhodi yephrojekthi ibhalwe ngeRust futhi isatshalaliswa ngaphansi kwelayisensi ye-MIT.

Ukuphatheka kufinyelelwa ngokuhlanganisa ikhodi yohlelo lokusebenza kwikhodi emaphakathi ye-WebAssembly yezinga eliphansi, 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 uhumushe i-WebAssembly ibe ikhodi yomshini yesikhulumi samanje, isekela ukuxhunywa kwezindawo ezingemuva ezihlanganisiwe (Singlepass, Cranelift, LLVM) nezinjini (zisebenzisa i-JIT noma ukukhiqizwa kwekhodi yomshini).

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. Izicelo zihlukanisiwe kusistimu eyinhloko endaweni ye-sandbox futhi zinokufinyelela kuphela ekusebenzeni okumenyezelwe (indlela yokuvikela esekelwe ekulawuleni amandla - ngezenzo ngesisetshenziswa ngasinye (amafayela, izinkomba, amasokhethi, amakholi esistimu, njll.), isicelo kumele sinikezwe amandla afanele).

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.

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.

Ushintsho olubalulekile kunombolo yenguqulo ye-Wasmer luhlotshaniswa nokwethulwa kwezinguquko ezingahambelani ku-API yangaphakathi, lokho, ngokusho konjiniyela, okungeke kuthinte u-99% wabasebenzisi benkundla. Phakathi kwezinguquko ezinqamula ukuhambisana, kukhona futhi ushintsho kufomethi yamamojula e-Serialized Wasm (amamojula ahlelwe ku-Wasmer 1.0 ngeke akwazi ukusetshenziswa ku-Wasmer 2.0). Ezinye izinguquko:

  • Ukusekela imiyalelo ye-SIMD (Imiyalo Eyodwa, Idatha Eningi), okuvumela ukufana kokusebenza kwedatha. Izindawo lapho ukusetshenziswa kwe-SIMD kungathuthukisa kakhulu ukusebenza kuhlanganisa ukufunda komshini, ukubhala ngekhodi kwevidiyo nokuqopha, ukucutshungulwa kwesithombe, ukulingisa inqubo yomzimba, kanye nokukhohliswa kwezithombe.
  • Ukusekelwa kwezinhlobo zereferensi, okuvumela amamojula we-Wasm ukuthi afinyelele ulwazi kwamanye amamojula noma endaweni engaphansi.
  • Ukuthuthukiswa kokusebenza okubalulekile kwenziwe. Isivinini sesikhathi sokusebenza se-LLVM esinezinombolo zamaphuzu antantayo sikhuphuke cishe ngo-50%. Izingcingo ezisebenzayo zisheshiswe kakhulu ngokunciphisa izimo ezidinga ukufinyelela ku-kernel. Ukusebenza kwejeneretha yekhodi ye-Cranelift kukhuphuke ngo-40%. Isikhathi esincishisiwe sokukhishwa kwedatha.
    I-Wasmer 2.0, ikhithi yamathuluzi yokudala izinhlelo zokusebenza ezisuselwe ku-WebAssembly, iyatholakala
    I-Wasmer 2.0, ikhithi yamathuluzi yokudala izinhlelo zokusebenza ezisuselwe ku-WebAssembly, iyatholakala
  • Ukuze ubonise ngokunembe kakhudlwana ingqikithi, amagama ezinjini ashintshiwe: I-JIT β†’ Universal, Native β†’ Dylib (Dynamic Library), Ifayela Lento β†’ I-StaticLib (I-Static Library).

Source: opennet.ru

Engeza amazwana