I-Wasmer 2.0, isixhobo sokwenza izicelo ezisekelwe kwiWebAssembly, iyafumaneka

Iprojekthi ye-Wasmer ikhuphe ukukhululwa kwayo okwesibini okukhulu, ukuphuhlisa ixesha lokuqhuba iimodyuli zeWebAssembly ezingasetyenziselwa ukudala izicelo zendalo yonke ezinokusebenza kwiinkqubo ezahlukeneyo zokusebenza, kunye nokuqhuba ikhowudi engathembekanga ngokuzimeleyo. Ikhowudi yeprojekthi ibhalwe kwi-Rust kwaye ihanjiswa phantsi kwelayisenisi ye-MIT.

Ukuphatheka kufezekiswa ngokuqulunqa ikhowudi yesicelo kwikhowudi ephakathi ye-WebAssembly ephakathi, enokuthi iqhube kuyo nayiphi na i-OS okanye ifakwe kwiiprogram kwezinye iilwimi zeprogram. Iinkqubo zizikhongozeli ezikhaphukhaphu ezisebenzisa i-WebAssembly pseudocode. Ezi zikhongozeli azibotshelelwanga kwinkqubo yokusebenza kwaye zinokubandakanya ikhowudi ebhalwe ekuqaleni kulo naluphi na ulwimi lwenkqubo. I-Emscripten toolkit ingasetyenziselwa ukuqokelela kwiWebAssembly. Ukuguqulela i-WebAssembly kwikhowudi yomshini weqonga langoku, lixhasa ukudibanisa kwee-backends ezahlukeneyo zokuhlanganiswa (i-Singlepass, i-Cranelift, i-LLVM) kunye neenjini (usebenzisa i-JIT okanye ukuveliswa kwekhowudi yomatshini).

Ukulawulwa kokufikelela kunye nokusebenzisana kunye nenkqubo kubonelelwa ngokusebenzisa i-WASI (WebAssembly System Interface) API, ebonelela ngeenkqubo zokusebenzisana kunye nokusebenza ngeefayile, iziseko kunye neminye imisebenzi enikezelwa yinkqubo yokusebenza. Izicelo zibekwe zodwa kwinkqubo engundoqo kwindawo yebhokisi yesanti kwaye inofikelelo kuphela kumsebenzi ochaziweyo (indlela yokhuseleko esekwe kulawulo lwesakhono - ngezenzo ngesixhobo ngasinye (iifayile, abalawuli, iisokethi, iifowuni zenkqubo, njl. njl.), isicelo kufuneka sinikwe amagunya afanelekileyo).

Ukuqalisa i-container ye-WebAssembly, vele ufake i-Wasmer kwi-runtime system, eza ngaphandle kokuxhomekeka kwangaphandle ("curl https://get.wasmer.io -sSfL | sh"), kwaye uqhube ifayile efunekayo ("wasmer test.wasm" ). Iinkqubo zihanjiswa ngendlela yeemodyuli zeWebAssembly eziqhelekileyo, ezinokulawulwa ngokusebenzisa umphathi wepakethe ye-WAPM. I-Wasmer iyafumaneka njengethala leencwadi elingasetyenziselwa ukubethelela ikhowudi yeWebAssembly kwiRust, C / C ++, C #, D, Python, JavaScript, Go, PHP, Ruby, Elixir, kunye neenkqubo zeJava.

Iqonga likuvumela ukuba ufezekise ukusebenza kwesicelo kufutshane neendibano zomthonyama. Ukusebenzisa iNjini yeNative Object kwimodyuli yeWebAssembly, unokuvelisa ikhowudi yomatshini ("i-wasmer compile -native" ukuvelisa i-precompiled .so, .dylib kunye .dll iifayile zento), efuna ixesha elincinci lokugijima, kodwa igcina yonke i-sandbox yodwa. Iimbonakalo. Kuyenzeka ukubonelela ngeenkqubo eziqulunqwe kwangaphambili ngeWasmer eyakhelweyo. I-Rust API kunye ne-Wasm-C-API zinikezelwa ngokudala izongezo kunye nezandiso.

Utshintsho oluphawulekayo kwinombolo yenguqulo ye-Wasmer ihambelana nokuqaliswa kweenguqu ezingahambelaniyo kwi-API yangaphakathi, leyo, ngokutsho kwabaphuhlisi, ayiyi kuchaphazela i-99% yabasebenzisi beqonga. Phakathi kweenguqu eziqhawula ukuhambelana, kukho kwakhona utshintsho kwifomathi yeemodyuli ze-serialized Wasm (iimodyuli ze-serialized kwi-Wasmer 1.0 aziyi kukwazi ukusetyenziswa kwi-Wasmer 2.0). Olunye utshintsho:

  • Inkxaso ye-SIMD (Umyalelo omnye, iDatha ezininzi) imiyalelo, evumela ukuhambelana nokusebenza kwedatha. Imimandla apho ukusetyenziswa kwe-SIMD kunokuphucula kakhulu ukusebenza kubandakanya ukufundwa komatshini, ukufakwa kwekhowudi yevidiyo kunye ne-decoding, ukusetyenzwa kwemifanekiso, ukulinganisa inkqubo yomzimba, kunye nokuguqulwa kwemizobo.
  • Inkxaso yeentlobo zereferensi, ukuvumela iimodyuli zeWasm ukuba zifikelele kulwazi kwezinye iimodyuli okanye kwindawo ephantsi.
  • Ukulungelelaniswa komsebenzi okubalulekileyo kwenziwe. Isantya sexesha lokuqhuba le-LLVM enamanani eendawo ezidadayo sinyuswe malunga ne-50%. Iifowuni zokusebenza ziye zakhawuleziswa kakhulu ngokunciphisa iimeko ezifuna ukufikelela kwi-kernel. Ukusebenza kwejenereyitha yekhowudi yeCranelift yonyuswe ngama-40%. Ixesha elincitshisiweyo lokuchithwa kwedatha.
    I-Wasmer 2.0, isixhobo sokwenza izicelo ezisekelwe kwiWebAssembly, iyafumaneka
    I-Wasmer 2.0, isixhobo sokwenza izicelo ezisekelwe kwiWebAssembly, iyafumaneka
  • Ukubonisa ngokuchanekileyo i-essence, amagama eenjini atshintshiwe: I-JIT β†’ Universal, Native β†’ Dylib (Dynamic Library), Ifayile Yento β†’ StaticLib (Static Library).

umthombo: opennet.ru

Yongeza izimvo