K dispozícii je Wasmer 2.0, sada nástrojov na vytváranie aplikácií založených na WebAssembly

Projekt Wasmer vydal svoje druhé hlavné vydanie, ktoré vyvinulo runtime na spúšťanie modulov WebAssembly, ktoré možno použiť na vytváranie univerzálnych aplikácií, ktoré môžu bežať na rôznych operačných systémoch, ako aj na spustenie nedôveryhodného kódu v izolácii. Kód projektu je napísaný v jazyku Rust a je distribuovaný pod licenciou MIT.

Prenosnosť je dosiahnutá kompiláciou aplikačného kódu do nízkoúrovňového prechodného kódu WebAssembly, ktorý môže bežať na akomkoľvek OS alebo môže byť vložený do programov v iných programovacích jazykoch. Programy sú ľahké kontajnery, ktoré spúšťajú pseudokód WebAssembly. Tieto kontajnery nie sú viazané na operačný systém a môžu obsahovať kód pôvodne napísaný v akomkoľvek programovacom jazyku. Na kompiláciu do WebAssembly možno použiť sadu nástrojov Emscripten. Pre preklad WebAssembly do strojového kódu aktuálnej platformy podporuje prepojenie rôznych kompilačných backendov (Singlepass, Cranelift, LLVM) a motorov (pomocou JIT alebo generovania strojového kódu).

Riadenie prístupu a interakcia so systémom je zabezpečená pomocou WASI (WebAssembly System Interface) API, ktoré poskytuje programovacie rozhrania pre prácu so súbormi, soketmi a ďalšími funkciami poskytovanými operačným systémom. Aplikácie sú izolované od hlavného systému v prostredí karantény a majú prístup iba k deklarovanej funkcionalite (bezpečnostný mechanizmus založený na správe schopností – pre akcie s každým zo zdrojov (súbory, adresáre, zásuvky, systémové volania atď.), žiadosti musia byť udelené príslušné právomoci).

Ak chcete spustiť kontajner WebAssembly, stačí nainštalovať Wasmer do runtime systému, ktorý sa dodáva bez externých závislostí („curl https://get.wasmer.io -sSfL | sh“), a spustiť potrebný súbor („wasmer test.wasm“ ). Programy sú distribuované vo forme bežných modulov WebAssembly, ktoré je možné spravovať pomocou správcu balíkov WAPM. Wasmer je k dispozícii aj ako knižnica, ktorú možno použiť na vloženie kódu WebAssembly do programov Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir a Java.

Platforma vám umožňuje dosiahnuť výkon vykonávania aplikácií blízky natívnym zostavám. Pomocou Native Object Engine pre modul WebAssembly môžete generovať strojový kód („wasmer kompilovať -native“ na generovanie predkompilovaných objektových súborov .so, .dylib a .dll), ktorý si vyžaduje minimálny čas spustenia, ale zachováva všetku izoláciu v karanténe. Vlastnosti. Je možné dodať predkompilované programy so vstavaným Wasmerom. Na vytváranie doplnkov a rozšírení sa ponúkajú rozhrania Rust API a Wasm-C-API.

Výrazná zmena čísla verzie Wasmer je spojená so zavedením nekompatibilných zmien do interného API, ktoré sa podľa vývojárov nedotknú 99 % používateľov platformy. Medzi zmeny, ktoré narúšajú kompatibilitu, patrí aj zmena formátu serializovaných modulov Wasm (moduly serializované vo Wasmer 1.0 nebudú môcť byť použité vo Wasmer 2.0). Ďalšie zmeny:

  • Podpora inštrukcií SIMD (Single Instruction, Multiple Data), umožňujúca paralelizáciu dátových operácií. Oblasti, v ktorých môže použitie SIMD výrazne zlepšiť výkon, zahŕňajú strojové učenie, kódovanie a dekódovanie videa, spracovanie obrazu, simuláciu fyzických procesov a manipuláciu s grafikou.
  • Podpora pre referenčné typy, ktorá umožňuje modulom Wasm prístup k informáciám v iných moduloch alebo v základnom prostredí.
  • Boli vykonané významné optimalizácie výkonu. Rýchlosť behu LLVM s číslami s pohyblivou rádovou čiarkou sa zvýšila približne o 50 %. Volania funkcií sa výrazne urýchlili znížením situácií vyžadujúcich prístup k jadru. Výkon generátora kódu Cranelift sa zvýšil o 40 %. Znížený čas deserializácie údajov.
    K dispozícii je Wasmer 2.0, sada nástrojov na vytváranie aplikácií založených na WebAssembly
    K dispozícii je Wasmer 2.0, sada nástrojov na vytváranie aplikácií založených na WebAssembly
  • Aby presnejšie odrážali podstatu, názvy motorov boli zmenené: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Zdroj: opennet.ru

Pridať komentár