Na voljo je Wasmer 2.0, komplet orodij za izdelavo aplikacij, ki temeljijo na WebAssembly

Projekt Wasmer je izdal svojo drugo večjo izdajo, v kateri je razvil runtime za izvajanje modulov WebAssembly, ki jih je mogoče uporabiti za ustvarjanje univerzalnih aplikacij, ki se lahko izvajajo v različnih operacijskih sistemih, kot tudi za izvajanje nezaupljive kode v izolaciji. Projektna koda je napisana v Rustu in se distribuira pod licenco MIT.

Prenosljivost je dosežena s prevajanjem aplikacijske kode v nizkonivojsko vmesno kodo WebAssembly, ki se lahko izvaja v katerem koli operacijskem sistemu ali je vdelana v programe v drugih programskih jezikih. Programi so lahki vsebniki, ki izvajajo psevdokodo WebAssembly. Ti vsebniki niso vezani na operacijski sistem in lahko vključujejo kodo, prvotno napisano v katerem koli programskem jeziku. Komplet orodij Emscripten lahko uporabite za prevajanje v WebAssembly. Za prevajanje WebAssembly v strojno kodo trenutne platforme podpira povezavo različnih ozadij prevajanja (Singlepass, Cranelift, LLVM) in motorjev (z uporabo JIT ali generiranja strojne kode).

Nadzor dostopa in interakcija s sistemom je zagotovljena z uporabo API-ja WASI (WebAssembly System Interface), ki zagotavlja programske vmesnike za delo z datotekami, vtičnicami in drugimi funkcijami, ki jih zagotavlja operacijski sistem. Aplikacije so izolirane od glavnega sistema v okolju peskovnika in imajo dostop samo do deklarirane funkcionalnosti (varnostni mehanizem, ki temelji na upravljanju zmogljivosti – za dejanja z vsakim od virov (datoteke, imeniki, vtičnice, sistemski klici itd.), aplikacija mora imeti ustrezna pooblastila).

Če želite zagnati vsebnik WebAssembly, preprosto namestite Wasmer v sistem izvajalnega okolja, ki prihaja brez zunanjih odvisnosti (»curl https://get.wasmer.io -sSfL | sh«) in zaženite potrebno datoteko (»wasmer test.wasm« ). Programi so distribuirani v obliki navadnih modulov WebAssembly, ki jih je mogoče upravljati z upraviteljem paketov WAPM. Wasmer je na voljo tudi kot knjižnica, ki jo je mogoče uporabiti za vdelavo kode WebAssembly v programe Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir in Java.

Platforma vam omogoča doseganje zmogljivosti izvajanja aplikacij, ki je blizu domačim sestavom. Z uporabo Native Object Engine za modul WebAssembly lahko ustvarite strojno kodo (»wasmer compile -native« za ustvarjanje vnaprej prevedenih objektnih datotek .so, .dylib in .dll), ki za izvajanje zahteva minimalen čas izvajanja, vendar ohrani vso izolacijo peskovnika Lastnosti. Možno je dobaviti vnaprej prevedene programe z vgrajenim Wasmerjem. Rust API in Wasm-C-API sta na voljo za ustvarjanje dodatkov in razširitev.

Pomembna sprememba številke različice Wasmerja je povezana z uvedbo nezdružljivih sprememb notranjega API-ja, ki po mnenju razvijalcev ne bodo vplivale na 99% uporabnikov platforme. Med spremembami, ki rušijo združljivost, je tudi sprememba formata serializiranih modulov Wasm (modulov, serializiranih v Wasmer 1.0, ne bo mogoče uporabiti v Wasmer 2.0). Druge spremembe:

  • Podpora za ukaze SIMD (Eno navodilo, več podatkov), ki omogočajo paralelizacijo podatkovnih operacij. Področja, na katerih lahko uporaba SIMD bistveno izboljša zmogljivost, vključujejo strojno učenje, video kodiranje in dekodiranje, obdelavo slik, fizično simulacijo procesov in grafično manipulacijo.
  • Podpora za referenčne vrste, ki omogoča modulom Wasm dostop do informacij v drugih modulih ali v osnovnem okolju.
  • Opravljene so bile pomembne optimizacije delovanja. Hitrost izvajalnega okolja LLVM s števili s plavajočo vejico je bila povečana za približno 50 %. Funkcijski klici so bili znatno pospešeni z zmanjšanjem situacij, ki zahtevajo dostop do jedra. Zmogljivost generatorja kode Cranelift se je povečala za 40 %. Skrajšan čas deserializacije podatkov.
    Na voljo je Wasmer 2.0, komplet orodij za izdelavo aplikacij, ki temeljijo na WebAssembly
    Na voljo je Wasmer 2.0, komplet orodij za izdelavo aplikacij, ki temeljijo na WebAssembly
  • Da bi natančneje odražali bistvo, so bila spremenjena imena motorjev: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Vir: opennet.ru

Dodaj komentar