K dispozici je Wasmer 2.0, sada nástrojů pro vytváření aplikací založených na WebAssembly

Projekt Wasmer vydal svou druhou hlavní verzi, která vyvíjí běhové prostředí pro spouštění modulů WebAssembly, které lze použít k vytváření univerzálních aplikací, které lze spustit na různých operačních systémech, a také ke spouštění nedůvěryhodného kódu v izolaci. Kód projektu je napsán v jazyce Rust a je distribuován pod licencí MIT.

Přenositelnosti je dosaženo kompilací aplikačního kódu do nízkoúrovňového přechodného kódu WebAssembly, který může běžet na jakémkoli operačním systému nebo být zabudován do programů v jiných programovacích jazycích. Programy jsou lehké kontejnery, které spouštějí 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. Ke kompilaci do WebAssembly lze použít sadu nástrojů Emscripten. Pro převod WebAssembly do strojového kódu aktuální platformy podporuje propojení různých kompilačních backendů (Singlepass, Cranelift, LLVM) a enginů (pomocí JIT nebo generování strojového kódu).

Řízení přístupu a interakce se systémem je zajištěna pomocí WASI (WebAssembly System Interface) API, které poskytuje programovací rozhraní pro práci se soubory, sokety a dalšími funkcemi poskytovanými operačním systémem. Aplikace jsou izolované od hlavního systému v prostředí sandbox a mají přístup pouze k deklarované funkčnosti (mechanismus zabezpečení založený na správě schopností – pro akce s každým ze zdrojů (soubory, adresáře, sokety, systémová volání atd.), žádosti musí být uděleny příslušné pravomoci).

Chcete-li spustit kontejner WebAssembly, stačí nainstalovat Wasmer do runtime systému, který je dodáván bez externích závislostí („curl https://get.wasmer.io -sSfL | sh“), a spustit potřebný soubor („wasmer test.wasm“ ). Programy jsou distribuovány ve formě běžných modulů WebAssembly, které lze spravovat pomocí správce balíčků WAPM. Wasmer je k dispozici také jako knihovna, kterou lze použít k vložení kódu WebAssembly do programů Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir a Java.

Platforma vám umožňuje dosáhnout výkonu spouštění aplikací blízkého nativním sestavám. Pomocí Native Object Engine pro modul WebAssembly můžete generovat strojový kód („wasmer kompilace -native“ pro generování předkompilovaných objektových souborů .so, .dylib a .dll), který vyžaduje minimální běh, ale zachovává veškerou izolaci sandboxu. funkce. Je možné dodat předkompilované programy s vestavěným Wasmerem. Pro vytváření doplňků a rozšíření se nabízí rozhraní Rust API a Wasm-C-API.

Výrazná změna čísla verze Wasmer je spojena se zavedením nekompatibilních změn interního API, které se podle vývojářů nedotknou 99 % uživatelů platformy. Mezi změny, které narušují kompatibilitu, je také změna formátu serializovaných modulů Wasm (moduly serializované ve Wasmer 1.0 nebudou moci být použity ve Wasmer 2.0). Další změny:

  • Podpora instrukcí SIMD (Single Instruction, Multiple Data), umožňující paralelizaci datových operací. Oblasti, ve kterých může použití SIMD výrazně zlepšit výkon, zahrnují strojové učení, kódování a dekódování videa, zpracování obrazu, simulaci fyzických procesů a manipulaci s grafikou.
  • Podpora pro referenční typy, umožňující modulům Wasm přístup k informacím v jiných modulech nebo v základním prostředí.
  • Byla provedena významná optimalizace výkonu. Rychlost běhu LLVM s čísly s pohyblivou řádovou čárkou byla zvýšena přibližně o 50 %. Volání funkcí bylo výrazně urychleno omezením situací vyžadujících přístup k jádru. Výkon generátoru kódu Cranelift byl zvýšen o 40 %. Snížená doba deseralizace dat.
    K dispozici je Wasmer 2.0, sada nástrojů pro vytváření aplikací založených na WebAssembly
    K dispozici je Wasmer 2.0, sada nástrojů pro vytváření aplikací založených na WebAssembly
  • Aby přesněji odrážely podstatu, byly změněny názvy enginů: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Zdroj: opennet.ru

Přidat komentář