Elérhető a Wasmer 2.0, a WebAssembly-alapú alkalmazások készítésére szolgáló eszközkészlet

A Wasmer projekt kiadta második nagy kiadását, melyben olyan WebAssembly modulok futtatására szolgáló futtatókörnyezetet fejlesztenek ki, amellyel univerzális alkalmazások hozhatók létre, amelyek különböző operációs rendszereken futhatnak, valamint nem megbízható kódokat is futtathatnak elszigetelten. A projekt kódja Rust nyelven íródott, és az MIT licenc alatt kerül terjesztésre.

A hordozhatóság úgy érhető el, hogy az alkalmazáskódot alacsony szintű WebAssembly köztes kódba fordítják, amely bármely operációs rendszeren futhat, vagy más programozási nyelvű programokba beágyazható. A programok könnyű konténerek, amelyek WebAssembly pszeudokódot futtatnak. Ezek a tárolók nincsenek az operációs rendszerhez kötve, és tartalmazhatnak eredetileg bármilyen programozási nyelven írt kódot. Az Emscripten eszközkészlettel lehet WebAssembly-re fordítani. A WebAssembly a jelenlegi platform gépi kódjára való lefordításához támogatja a különféle fordítási háttérprogramok (Singlepass, Cranelift, LLVM) és motorok (JIT vagy gépi kódgenerálás használatával) összekapcsolását.

A hozzáférés-vezérlés és a rendszerrel való interakció a WASI (WebAssembly System Interface) API-n keresztül történik, amely programozási felületeket biztosít a fájlokkal, socketekkel és az operációs rendszer által biztosított egyéb funkciókkal való munkavégzéshez. Az alkalmazások el vannak szigetelve a fő rendszertől sandbox környezetben, és csak a deklarált funkciókhoz férhetnek hozzá (a képességkezelésen alapuló biztonsági mechanizmus - az egyes erőforrásokkal (fájlok, könyvtárak, socketek, rendszerhívások stb.) végzett műveletekhez), megfelelő hatáskörrel kell rendelkezni).

A WebAssembly tároló elindításához egyszerűen telepítse a Wasmert a futásidejű rendszerbe, amely külső függőségek nélkül érkezik („curl https://get.wasmer.io -sSfL | sh”), és futtassa a szükséges fájlt („wasmer test.wasm” ). A programok terjesztése normál WebAssembly modulok formájában történik, amelyek a WAPM csomagkezelővel kezelhetők. A Wasmer könyvtárként is elérhető, amely a WebAssembly kód beágyazására használható Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir és Java programokba.

A platform lehetővé teszi a natív összeállításokhoz közeli alkalmazás-végrehajtási teljesítmény elérését. A WebAssembly modul Native Object Engine használatával gépi kódot generálhat ("wasmer compile -native" az előre lefordított .so, .dylib és .dll objektumfájlok létrehozásához), amelynek futtatása minimális futási időt igényel, de megőrzi a sandbox teljes elkülönítését. jellemzők. Lehetőség van előre lefordított programok szállítására beépített Wasmerrel. A Rust API és a Wasm-C-API bővítmények és bővítmények létrehozásához használható.

A Wasmer verziószámának jelentős változása a belső API inkompatibilis módosításainak bevezetésével függ össze, ami a fejlesztők szerint a platformfelhasználók 99%-át nem érinti. A kompatibilitást megsértő változtatások között szerepel a szerializált Wasm modulok formátumának változása is (a Wasmer 1.0-ban szerializált modulok nem használhatók a Wasmer 2.0-ban). Egyéb változások:

  • SIMD (Single Instruction, Multiple Data) utasítások támogatása, lehetővé téve az adatműveletek párhuzamosítását. Azok a területek, ahol a SIMD használata jelentősen javíthatja a teljesítményt, többek között a gépi tanulás, a videó kódolás és dekódolás, a képfeldolgozás, a fizikai folyamatszimuláció és a grafikus manipuláció.
  • Referenciatípusok támogatása, lehetővé téve a Wasm modulok számára, hogy hozzáférjenek más modulokban vagy az alapul szolgáló környezetben lévő információkhoz.
  • Jelentős teljesítményoptimalizálások történtek. A lebegőpontos számokkal rendelkező LLVM futási idő sebessége körülbelül 50%-kal nőtt. A függvényhívások jelentősen felgyorsultak a kernelhez való hozzáférést igénylő helyzetek csökkentésével. A Cranelift kódgenerátor teljesítménye 40%-kal nőtt. Csökkentett adatszerializálási idő.
    Elérhető a Wasmer 2.0, a WebAssembly-alapú alkalmazások készítésére szolgáló eszközkészlet
    Elérhető a Wasmer 2.0, a WebAssembly-alapú alkalmazások készítésére szolgáló eszközkészlet
  • A lényeg pontosabb tükrözése érdekében a motorok nevei megváltoztak: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Forrás: opennet.ru

Hozzászólás