Elérhető a Wasmer 3.0, a WebAssembly alapú alkalmazások fejlesztésére szolgáló eszközkészlet.

Bemutatkozott a Wasmer projekt harmadik jelentős kiadása, amely a WebAssembly modulok futtatásához szükséges runtime-ot fejleszti, és amelyet univerzális alkalmazások létrehozására lehet használni, amelyek különböző operációs rendszerekben futtathatók, valamint megbízhatatlan kód elkülönített futtatására. A projekt kódját Rust nyelven írták, és MIT licenc alatt terjesztik.

Egy alkalmazás különböző platformokon való futtatásának lehetősége a kód WebAssembly alacsony szintű köztes kódra való fordításának köszönhető, amely bármilyen operációs rendszerben futtatható, vagy más programozási nyelvekbe ágyazható. Az alkalmazások könnyű konténerek, amelyekben a WebAssembly pszeudokód fut. Ezek a konténerek nem kötődnek az operációs rendszerhez, és bármilyen programozási nyelven írt kódot tartalmazhatnak. A WebAssembly-re való fordításhoz az Emscripten eszközkészlet használható. A WebAssembly gépi kódra való fordításához különböző fordító hátterek (Singlepass, Cranelift, LLVM) és motorok (JIT aktiválása vagy gépi kód generálása) csatlakoztatása támogatott.

Az alkalmazások elkülönítve vannak a fő rendszertől egy sandbox környezetben, és csak a kijelölt funkciókhoz férnek hozzá (a biztonsági mechanizmus a lehetőségek kezelése alapján - a források (fájlok, könyvtárak, socketek, rendszerhívások stb.) kezeléséhez a megfelelő jogosultságokkal kell rendelkeznie az alkalmazásnak). A hozzáférés és a rendszerrel való kölcsönhatás kezelését a WASI (WebAssembly System Interface) API biztosítja, amely programozási interfészeket nyújt fájlokkal, socketekkel és az operációs rendszer által biztosított egyéb funkciókkal való munkához.

A platform that achieves application performance close to that of native builds. With the Native Object Engine for the WebAssembly module, machine code can be generated ("wasmer compile —native" to generate precompiled object files .so, .dylib, and .dll), minimally requiring runtime but retaining all sandbox isolation capabilities. It’s possible to deliver precompiled programs with an integrated Wasmer. To create extensions and add-ons, Rust API and Wasm-C-API are available.

A WebAssembly konténer elindításához elegendő a Wasmer runtime telepítése a rendszerbe, amely külső függőségek nélkül érkezik („curl https://get.wasmer.io -sSfL | sh”), és az szükséges fájl elindítása („wasmer test.wasm”). A programok hagyományos WebAssembly modulok formájában terjesztendők, amelyeket a WAPM csomagkezelővel lehet kezelni. A Wasmer könyvtár formájában is elérhető, amely lehetővé teszi a WebAssembly kód beépítését Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir és Java nyelvű programokba.

A Wasmer 3.0 főbb változásai:

  • Hozzáadva a natív végrehajtható fájlok létrehozásának lehetősége bármely platform számára. Teljesen átdolgozták a «wasmer create-exe» parancsot, amely lehetővé teszi a WebAssembly köztes kódot tartalmazó fájl önálló végrehajtható fájlokká való átalakítását Linux, Windows és macOS platformokra, amelyek a Wasmer telepítése nélkül működhetnek.
  • Lehetőség nyílt WAPM-csomagok indítására, amelyek a wapm.io könyvtárában találhatók, a „wasmer run” parancs segítségével. Például a „wasmer run python/python” végrehajtása a wapm.io tárolóból a python csomag letöltését és indítását eredményezi.
  • Teljesen átdolgozták a Wasmer Rust API-t, amelyben megváltozott a memória kezelési stílusa, és lehetőség nyílt a Wasm objektumok biztonságos tárolására a Store struktúrában. Javasolták az új MemoryView struktúrát, amely lehetővé teszi az adatok olvasását és írását a lineáris memória területen.
  • Megvalósították a wasmer-js összetevők sorozatát a Wasmer webböngészőben történő futtatására és JavaScript-ből való interakciójára, a wasm-bindgen könyvtár használatával. A wasmer-js képességei megegyeznek a wasmer-sys összetevőkével, amelyeket a Wasmer normál operációs rendszerekben való futtatására terveztek.
  • Egyszerűsítették a motorokat. A JIT, dinamikus és statikus linkeléshez (Universal, Dylib, StaticLib) külön motorok helyett most egy közös motor és a kód betöltése és tárolása a paraméterezési szint vezérlésével történik.
  • Az artefaktumok deszerializálásához az rkyv keretrendszert alkalmazták, amely zero-copy módban működik, azaz nem igényel további memóriaallokációt, és csak az eredeti biztosított puffert használja a deszerializáláshoz. Az rkyv alkalmazása jelentősen megnövelte az indítási sebességet.
  • Javították az egypasszos kompilátort, a Singlepass-t, amelybe bekerült a többargumentumos függvények (multi-value) támogatása, növelték a megbízhatóságot és hozzáadták a kivételkezelési keretek támogatását.
  • Javították a WASI (WebAssembly System Interface) API megvalósítását. Megoldották a WASI programozási interfész problémáit a fájlrendszerrel való munkavégzés során. A belső típusokat újragondolták WAI (WebAssembly Interfaces) használatával, ami a jövőben új lehetőségek megvalósítását teszi lehetővé.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster