K dispozici je Wasmer 3.0, nástroj pro vytváření aplikací na základě WebAssembly

Byl uveden třetí významný release projektu Wasmer, který vyvíjí runtime pro provádění modulů WebAssembly, jenž lze využít k vytváření univerzálních aplikací schopných běžet na různých operačních systémech, stejně jako k izolovanému provádění kódu, který si nezasluhuje důvěru. Kód projektu je napsán v jazyce Rust a je distribuován pod licencí MIT.

Možnost spuštění jedné aplikace na různých platformách je zajištěna díky kompilaci kódu do nízkoúrovňového mezikódu WebAssembly, který může běžet na jakýchkoli operačních systémech nebo být zabudován do programů v jiných programovacích jazycích. Programy představují lehké kontejnery, v nichž se provádí pseudokód WebAssembly. Tyto kontejnery nejsou vázány na operační systém a mohou obsahovat kód původně napsaný v jakémkoli programovacím jazyce. Pro kompilaci do WebAssembly může být použit nástroj Emscripten. Pro překlad WebAssembly do strojového kódu aktuální platformy je podporováno připojení různých kompilátorů (Singlepass, Cranelift, LLVM) a enginů (využití JIT nebo generace strojového kódu).

Aplikace jsou izolovány od hlavního systému v sandboxovém prostředí a mají přístup pouze k deklarované funkcionalitě (bezpečnostní mechanismus na bázi správy oprávnění — pro akce s každým z prostředků (soubory, adresáře, sokety, systémové volání atd.) musí být aplikaci udělena příslušná oprávnění). Správa přístupu a interakce se systémem je zajištěna pomocí API WASI (WebAssembly System Interface), které poskytuje programové rozhraní pro práci se soubory, sokety a dalšími funkcemi poskytovanými operačním systémem.

Platforma umožňuje dosáhnout výkonu provádění aplikací blízkého provádění nativních sestavení. Pomocí Native Object Engine pro WebAssembly modul lze 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áno minimální runtime, ale zachovávají se všechny možnosti sandboxové izolace. Je možná dodávka předkompilovaných programů s integrovaným Wasmerem. Pro vytváření nadstaveb a doplňků jsou k dispozici Rust API a Wasm-C-API.

K spuštění konteineru WebAssembly stačí nainstalovat do systému runtime Wasmer, který je dodáván bez externích závislostí ("curl https://get.wasmer.io -sSfL | sh") a spustit požadovaný soubor ("wasmer test.wasm"). Programy jsou distribuovány ve formě běžných modulů WebAssembly, jejichž správu lze provádět pomocí správce balíčků WAPM. Wasmer je také dostupný ve formě knihovny, kterou lze použít k integraci kódu WebAssembly do programů v jazycích Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir a Java.

Hlavní změny v Wasmer 3.0:

  • Byla přidána možnost vytváření nativních spustitelných souborů pro jakékoli platformy. Kompletně byla přepracována příkaz "wasmer create-exe", který umožňuje převést soubor s mezikódem WebAssembly na samostatné spustitelné soubory pro platformy Linux, Windows a macOS, které mohou fungovat bez instalace samotného Wasmeru.
  • Byla poskytnuta možnost spuštění WAPM balíčků uložených v katalogu wapm.io pomocí příkazu "wasmer run". Například spuštění "wasmer run python/python" způsobí stažení balíčku python z repozitáře wapm.io a jeho spuštění.
  • Kompletně byl přepracován Wasmer Rust API, ve kterém byl změněn styl práce s pamětí a byla zajištěna možnost bezpečného ukládání objektů Wasm ve struktuře Store. Byla navržena nová struktura MemoryView, která umožňuje číst a zapisovat data do lineární oblasti paměti.
  • Byl realizován soubor komponent wasmer-js pro spuštění Wasmeru v webovém prohlížeči a interakci s ním z JavaScriptu pomocí knihovny wasm-bindgen. Co se týče svých možností, wasmer-js odpovídá komponentům wasmer-sys, které jsou určeny pro spuštění Wasmeru v běžných operačních systémech.
  • Byly zjednodušeny enginy. Místo samostatných enginů pro JIT, dynamické a statické linkování (Universal, Dylib, StaticLib) je nyní nabízen jeden společný engine a načítání a ukládání kódu, které se spravuje na úrovni nastavení parametrů.
  • Pro deserializaci artefaktů byl použit framework rkyv, který zajišťuje provozování v režimu zero-copy, tj. nevyžaduje alokaci další paměti a provádí deserializaci pouze s využitím zpočátku poskytnutého bufferu. Použití rkyv umožnilo výrazně zvýšit rychlost spuštění.
  • Byl vylepšen jednopassový kompilátor Singlepass, ve kterém byla přidána podpora funkcí s více argumenty (multi-value), zvýšena spolehlivost práce a přidána podpora pro rámce zpracování výjimek.
  • Byla vylepšena implementace API WASI (WebAssembly System Interface). Byly vyřešeny problémy v programovém rozhraní WASI pro práci se souborovým systémem. Vnitřní typy byly přepracovány s využitím WAI (WebAssembly Interfaces), což v budoucnu umožní realizaci nové řady funkcí.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster