Saadaval on Wasmer 2.0, tööriistakomplekt WebAssembly-põhiste rakenduste loomiseks

Wasmeri projekt on välja andnud oma teise suurema väljalaske, töötades välja käitusaja WebAssembly moodulite käivitamiseks, mida saab kasutada universaalsete rakenduste loomiseks, mis võivad töötada erinevates operatsioonisüsteemides, aga ka ebausaldusväärse koodi eraldi käivitamiseks. Projekti kood on kirjutatud Rust keeles ja seda levitatakse MIT litsentsi all.

Teisaldatavus saavutatakse rakenduse koodi kompileerimisega madala taseme WebAssembly vahekoodiks, mis võib töötada mis tahes OS-is või olla manustatud teiste programmeerimiskeelte programmidesse. Programmid on kerged konteinerid, mis käitavad WebAssembly pseudokoodi. Need konteinerid ei ole operatsioonisüsteemiga seotud ja võivad sisaldada algselt mis tahes programmeerimiskeeles kirjutatud koodi. Emscripteni tööriistakomplekti saab kasutada WebAssemblysse kompileerimiseks. WebAssembly tõlkimiseks praeguse platvormi masinkoodiks toetab see erinevate kompileerimise taustaprogrammide (Singlepass, Cranelift, LLVM) ja mootorite (kasutades JIT-i või masinkoodi genereerimist) ühendamist.

Juurdepääsu kontroll ja süsteemiga suhtlemine toimub WASI (WebAssembly System Interface) API abil, mis pakub programmeerimisliideseid failide, pistikupesade ja muude operatsioonisüsteemi pakutavate funktsioonidega töötamiseks. Rakendused on liivakastikeskkonnas põhisüsteemist isoleeritud ja neil on juurdepääs ainult deklareeritud funktsioonidele (võimehaldusel põhinev turvamehhanism – iga ressursiga (failid, kataloogid, pistikupesad, süsteemikutsed jne) tehtavate toimingute jaoks) taotlusele tuleb anda asjakohased volitused).

WebAssembly konteineri käivitamiseks installige Wasmer käitussüsteemi, mis on ilma väliste sõltuvusteta (“curl https://get.wasmer.io -sSfL | sh”), ja käivitage vajalik fail ("wasmer test.wasm" ). Programme levitatakse tavaliste WebAssembly moodulitena, mida saab hallata WAPM paketihalduri abil. Wasmer on saadaval ka raamatukoguna, mida saab kasutada WebAssembly koodi manustamiseks Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir ja Java programmidesse.

Platvorm võimaldab teil saavutada rakenduste täitmise jõudluse, mis on lähedane algkoostudele. Kasutades WebAssembly mooduli jaoks Native Object Engine'i, saate genereerida masinkoodi (“wasmer compile -native”, et genereerida eelkompileeritud .so, .dylib ja .dll objektifailid), mis nõuab käitamiseks minimaalset käitusaega, kuid säilitab kogu liivakasti isolatsiooni. Funktsioonid. Eelkompileeritud programme on võimalik varustada sisseehitatud Wasmeriga. Lisandmoodulite ja laienduste loomiseks pakutakse Rust API ja Wasm-C-API.

Märkimisväärne muutus Wasmeri versiooninumbris on seotud sisemise API mitteühilduvate muudatuste sisseviimisega, mis arendajate sõnul ei mõjuta 99% platvormi kasutajatest. Ühilduvust rikkuvate muudatuste hulgas on ka serialiseeritud Wasm-moodulite vormingu muudatus (Wasmer 1.0-s serialiseeritud mooduleid ei saa Wasmer 2.0-s kasutada). Muud muudatused:

  • SIMD (Single Instruction, Multiple Data) käskude tugi, mis võimaldab andmetoimingute paralleelsust. Valdkonnad, kus SIMD kasutamine võib jõudlust oluliselt parandada, hõlmavad masinõpet, video kodeerimist ja dekodeerimist, pilditöötlust, füüsiliste protsesside simuleerimist ja graafika manipuleerimist.
  • Viitetüüpide tugi, mis võimaldab Wasmi moodulitel pääseda juurde teistes moodulites või aluseks olevas keskkonnas olevale teabele.
  • On tehtud olulisi jõudluse optimeerimisi. Ujukomanumbritega LLVM-i käitusaja kiirust on suurendatud ligikaudu 50%. Funktsioonikutsed on oluliselt kiirendatud, vähendades olukordi, mis nõuavad juurdepääsu tuumale. Cranelift koodigeneraatori jõudlust on suurendatud 40%. Vähendatud andmete deserialiseerimise aeg.
    Saadaval on Wasmer 2.0, tööriistakomplekt WebAssembly-põhiste rakenduste loomiseks
    Saadaval on Wasmer 2.0, tööriistakomplekt WebAssembly-põhiste rakenduste loomiseks
  • Olemuse täpsemaks kajastamiseks on muudetud mootorite nimesid: JIT → Universal, Native → Dylib (Dünaamiline teek), Objektifail → StaticLib (Staatiline teek).

Allikas: opennet.ru

Lisa kommentaar