Wasmer 3.0 je k dispozícii, nastroj na vytváranie aplikácií založených na WebAssembly

Bol názov tretej významnej verzie projektu Wasmer, ktorý vyvíja runtime pre vykonávanie modulov WebAssembly, ktorý sa dá použiť na vytváranie univerzálnych aplikácií schopných bežať na rôznych operačných systémoch, ako aj na izolované vykonávanie kódu, ktorý nie je dôveryhodný. Kód projektu je napísaný v jazyku Rust a je distribuovaný pod licenciou MIT.

Možnosť spustiť jednu aplikáciu na rôznych platformách je zabezpečená vďaka kompilácii kódu do nízkoúrovňového medzičlánku WebAssembly, ktorý môže bežať na akýchkoľvek OS alebo sa včleniť do programov v iných programovacích jazykoch. Aplikácie predstavujú ľahké kontajnery, v ktorých sa vykonáva 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 sa môže použiť nástroj Emscripten. Na preklad WebAssembly do strojového kódu aktuálnej platformy sa podporuje pripojenie rôznych backendov kompilácie (Singlepass, Cranelift, LLVM) a engine (využitie JIT alebo generovanie strojového kódu).

Aplikácie sú izolované od hlavného systému v sandboxovom prostredí a majú prístup len k deklarovanej funkcionalite (mechanizmus zabezpečenia založený na správe oprávnení — pre akcie s každým z prostriedkov (súbory, adresáre, sockety, systémové volania atď.) musia byť aplikácii dané príslušné oprávnenia). Správa prístupu a interakcia so systémom sú zabezpečené pomocou API WASI (WebAssembly System Interface), ktorý poskytuje programové rozhrania pre prácu so súbormi, socketmi a inými funkciami poskytovanými operačným systémom.

Platforma umožňuje dosáhnout výkonu provádění aplikací blízkého výkonu nativních sestavení. Pomocí Native Object Engine pro WebAssembly modul je možné generovat strojový kód („wasmer compile —native“ pro generaci předkompilovaných objektových souborů .so, .dylib a .dll), pro jehož spuštění je vyžadován minimální runtime, ale zachovávají se všechny možnosti sandboxové izolace. Je možná dodávka předkompilovaných programů se zabudovaným Wasmerem. Pro vytváření nadstaveb a doplňků jsou k dispozici Rust API a Wasm-C-API.

Na spustenie kontajnera WebAssembly stačí nainštalovať do systému runtime Wasmer, ktorý sa dodáva bez vonkajších závislostí ("curl https://get.wasmer.io -sSfL | sh"), a spustiť potrebný súbor ("wasmer test.wasm"). Programy sa distribuujú vo forme bežných modulov WebAssembly, pričom na ich správu je možné použiť balíčkový manažér WAPM. Wasmer je tiež k dispozícii vo forme knižnice, ktorú je možné využiť na implementáciu kódu WebAssembly do programov v jazykoch Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir a Java.

Hlavné zmeny vo Wasmer 3.0:

  • Pridaná možnosť vytvárať natívne spustiteľné súbory pre akékoľvek platformy. Kompletne prepracovaný príkaz „wasmer create-exe“, ktorý umožňuje previesť súbor s medzičlánkom WebAssembly na samostatné spustiteľné súbory pre platformy Linux, Windows a macOS, ktoré môžu fungovať bez inštalácie samotného Wasmer.
  • Bola pridaná možnosť spúšťania WAPM balíkov, umiestnených v adresári wapm.io, pomocou príkazu „wasmer run“. Napríklad, vykonanie „wasmer run python/python“ spôsobí, že sa z repozitára wapm.io stiahne balík python a spustí sa.
  • Bolo úplne prepracované rozhranie Wasmer Rust API, v ktorom bol zmenený štýl práce s pamäťou a zabezpečená možnosť bezpečného uloženia objektov Wasm v štruktúre Store. Bola navrhnutá nová štruktúra MemoryView, ktorá umožňuje čítanie a zápis údajov do lineárnej oblasti pamäte.
  • Bol implementovaný súbor komponentov wasmer-js na spustenie Wasmer v webovom prehliadači a interakciu s ním z JavaScriptu pomocou knižnice wasm-bindgen. Z hľadiska možností zodpovedá wasmer-js komponentom wasmer-sys, určeným na spustenie Wasmer v bežných operačných systémoch.
  • Motory boli zjednodušené. Namiesto oddelených motorov pre JIT, dynamické a statické prepojenie (Universal, Dylib, StaticLib) je teraz k dispozícii jeden spoločný motor a načítanie a ukladanie kódu, s ktorým sa zaobchádza na úrovni nastavenia parametrov.
  • Pre deserializáciu artefaktov bol zavedený rámec rkyv, ktorý zabezpečuje prevádzku v režime zero-copy, t.j. nevyžaduje pridelenie dodatočnej pamäte a vykonáva deserializáciu iba s použitím pôvodne poskytnutého buffera. Použitie rkyv umožnilo výrazne zvýšiť rýchlosť spustenia.
  • Bola vylepšená jednoprehľadová kompilátor Singlepass, v ktorom pribudla podpora funkcií s viacerými argumentmi (multi-value), bola zvýšená spoľahlivosť prevádzky a pridala sa podpora rámcov spracovania výnimiek.
  • Bola zlepšená implementácia API WASI (WebAssembly System Interface). Riešili sa problémy v programovom rozhraní WASI pre prácu s súborovým systémom. Interné typy boli prepracované s použitím WAI (WebAssembly Interfaces), čo v budúcnosti umožní realizáciu série nových možností.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster