„wasm3“, „WebAssembly“ vertėjas išleidžia savo pirmąją versiją

W3

Neseniai buvo išleista pirmoji „wasm3“ versija, kuris yra vertėjas labai greitas tarpinis kodas pateikė „WebAssembly“Kadangi jis pirmiausia skirtas paleisti „WebAssembly“ programas mikrovaldikliuose ir platformose, kuriose nėra JIT diegimo „WebAssembly“, nepakanka atminties, kad JIT veiktų, arba sukuriant vykdomųjų atminties puslapių, reikalingų JIT diegimui.

Tiems, kurie nėra susipažinę su „WebAssembly“, turėtumėte žinoti, kad taip yra žemo lygio kalba, iš pradžių buvo sukurtas kaip tikslinis formatas kompiliuojant iš C ir C ++, nors jis palaiko ir kitų kalbų, pvz., „Rust“ ir „Go“, kodą. Šis nešiojamojo dvejetainio kodo formatas naudojamas visiškam scenarijų vykdymui iš kliento naršyklės.

Apie wasm3

„Wasm3“ išlaikė suderinamumo testus su „WebAssembly 1.0“ specifikacija ir gali būti naudojamas paleisti daugelį WASI programų, teikiantis tik 4-5 kartus mažesnį našumą nei JIT varikliai ir 11.5 karto mažesnį nei įprasto kodo vykdymas.

Palyginti su kitais atlikėjais iš „WebAssembly“ („wac“, „life“, „wasm-micro-runtime“), wasm3 buvo 15.8 karto greitesnis.

„Wasm3“ buvo pradėtas kaip mokslinis projektas ir toks jis tebėra daugeliu būdų. Variklio įvertinimas skirtingose ​​aplinkose yra tyrimo dalis. Kadangi MCU veikia „Lua“, JS, „Python“, „Lisp“ (…), „WebAssembly“ iš tikrųjų yra perspektyvi alternatyva. Tai suteikia visiškai izoliuotą, gerai apibrėžtą ir nuspėjamą aplinką. Tarp praktinio naudojimo atvejų galime išvardyti pažangiausius skaičiavimus, scenarijus, IoT taisyklių vykdymą, „blockchain“ sutartis ir kt.

wasm3 kodui reikalinga 64 KB atminties ir 10 KB RAM, ką tu leidžia naudotis projektu paleisti kompiliuotas programas „WebAssembly“ mikrovaldikliuose kaip „Arduino MKR *“, „Arduino Due“, dalelių fotonas, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 „Blue Pill“ (STM32F103C8T6), „MXChip AZ3166“ (EMW3166), „Maix“ (K210), „HiFive1“ (E310), E40, E5) taip pat plokštėse ir kompiuteriuose, pagrįstuose architektūra x86, x64, ARM, MIPS, RISC-V ir Xtens.

Didelis našumas pasiekiamas naudojant „Massey Meta Machine“ techniką (M3) vertėjo žodžiu, kuriame siekiant sumažinti baito kodo dekodavimo pridėtines išlaidas, baito kodas yra aktyviai išverstas efektyvesnėse operacijose, kuriančiose pseudo mašinų kodą, o sukrautos virtualios mašinos vykdymo modelis tampa efektyvesniu registru fokusavimo operacijos M3 yra C funkcijos, kurių argumentai yra virtualiosios mašinos registrai, kurie gali atsispindėti procesoriaus registruose .

Dažnos optimizavimo darbo eigos virsta suvestinėmis operacijomis.

Be to, Tyrimo rezultatus galima stebėti „WebAssembly on the Web“, išanalizavus 948 tūkstančius populiariausių „Alexa“ įvertintų svetainių, mokslininkai nustatė, kad „WebAssembly“ naudoja 1639 0.17 svetainės (1%), tai yra 600 iš XNUMX svetainių.

Iš viso svetainėse buvo atskleista 1950 „WebAssembly“ modulių apkrova, iš kurių 150 yra unikalūs.

Svarstant „WebAssembly“ apimtį, buvo padarytos nuviliančios išvados: daugiau nei 50% atvejų „WebAssemble“ buvo naudojamas kenkėjiškiems tikslams, pavyzdžiui, kriptovaliutoms išgauti (55,7%) ir kodui slėpti nuo kenkėjiškų scenarijų (0,2, XNUMX%). ).

Palaikomų operacinių sistemų „Wasm3“, galime rasti Linux įskaitant „OpenWRT“ pagrįstus maršrutizatorius, „Windows“, „MacOS“, „Android“ ir „iOS“. Taip pat buvo galima sukompiliuoti „wasm3“ į tarpinį „WebAssembly“ kodą, kad būtų galima paleisti vertėją naršyklėje arba savarankiškai talpinti.

Iš teisėtų „WebAssembly“ naudojimo būdų pastebėta bibliotekos vykdymas (38.8%), žaidimo kūrimas (3.5%) ir ne „JavaScript“ vietinio kodo vykdymas (0.9%). 14,9% atvejų „WebAssembly“ buvo naudojama analizuojant aplinką, skirtą vartotojo identifikavimui (pirštų atspaudams) nustatyti.

Išbandykite „wasm3“

Tiems, kurie nori naudotis šiuo vertėju savo sistemoje, galite susipažinti su dokumentais ir projekto kodu kuri parašyta C kalba ir platinama pagal MIT licenciją, Šioje nuorodoje.