Máris nagy lökést kapott a WebAssembly

A WebAssembly egészen új dolognak számít a web szempontjából. A koncepciót a Mozilla, a Google és a Microsoft, illetve külsős támogatóként az Apple szeretné életre hívni, amolyan közösen támogatott iparági szabványként. A WebAssembly, vagy röviden WASM célja a webes alkalmazások totális reformja. Már egy ideje megfigyelhető az az irány, amelyen belül a JavaScript kap különböző szoftverrendszereket, hogy lehetőség legyen a nem biztonságos nyelveken írt programok futtatására zárt környezeten belül. Az ASM.js és a SIMD.js ezt próbálja megvalósítani, de a JavaScript önmagában egy korlátozó tényező, tehát a célt is csak korlátozott mértékben lehet elérni.

A WebAssembly a gyökerénél kezeli a problémát, és nem csak felületes megoldást kínál a nem biztonságos nyelveken írt programok zárt környezetben történő futtatására. A WebAssembly lényegében egy bájtkód, amely célozható a különböző programnyelveken keresztül. Az így kapott, lefordított kódot a böngésző fordítja tovább az adott hardver virtuális és valós utasításarchitektúrájának megfelelően.

A WebAssembly bizonyos mértékig az ASM.js továbbfejlesztésének is felfogható. Bár nem a szó legszorosabb értelmében, mivel különálló fejlesztésekről van szó, de az ASM.js során felmerült problémák egy részére sikerült megoldást találni, míg egy másik részére egyszerűen nem. A WebAssembly gyakorlatilag az ASM.js-ben nem megoldható gondokra reflektál, mint például a vállalhatatlanul hosszú feldolgozási idők az adott kód első futtatásakor. Éppen ezért nem leváltója lesz az ASM.js-nek, hanem az alternatívája, sőt, bizonyos szempontok alapján a JavaScript kiegészítése.

A WebAssembly koncepciójának nagy lökést adhat, hogy az LLVM-be is bekerül a támogatás. Ez most már hivatalos, és lehetővé teszi a fejlesztők számára, hogy a programjukat egy számos magasabb szintű nyelv valamelyikén írják meg, amelyet a Clang lefordít WASM-re. Fontos kiemelni, hogy az LLVM-re önmagában nincs elengedhetetlenül szükség a WebAssembly használatához, ugyanis ez a fordítóprogram-infrastruktúra nem szabványosított, így az egyes verziók nem feltétlenül kompatibilisek egymással. A Mozilla, a Google és a Microsoft a fontosabb nyelvekhez nem LLVM fordítóprogram-infrastruktúrát fog használni, de az LLVM-be épített támogatás akkor is fontos, mert a WASM-et támogatott programnyelvek száma jelentősen megnő.

A WebAssembly előnye még, hogy jövőbiztosra lesz tervezve. Az aktuális webes koncepciók egyik hátránya, hogy elavult alapokra építenek, így nehéz lépést tartaniuk a natív programfuttatással. Például a WebGL lassan ténylegesen elterjed és hamarosan elkészül a WebGL 2.0, de még utóbbi API is az elavultnak tekinthető OpenGL ES 3.0-ra alapoz. És innen nagyon nehéz továbblépni az aktuális alapokkal, mert a komolyabb grafikus API-k támogatására nem igazán van meg a technológiai lehetőség. A WebAssembly erre is reagál, így támogathatja például az OpenGL 4-et is, vagy a még modernebb grafikus API-kat, sőt, a compute API-k sincsenek kizárva. A WASM-ben tehát megvan a lehetőség, hogy a következő évek potenciális problémáira reflektálva a fejlesztők hardverhez közeli kódokat írhassanak, legyen szó CPU-ról vagy GPU-ról.

Persze a WebAssembly még fejlesztés alatt áll, így a megjelenésére még várni kell, de a közösség láthatóan rajong az ötletért, illetve a Mozilla, a Google, a Microsoft összefogása is nagyon jó előjel, az Apple járulékos támogatása pedig eldönti a tényleg valós problémákra reflektáló rendszer sorsát.

Előzmények

Hirdetés