A W3C konzorcium közzétette a WebAssembly 2.0 új specifikációjának tervezetét, amely standardizálja a köztes kódot és a hozzá kapcsolódó API-t, lehetővé téve a teljesítményorientált alkalmazások létrehozását, amelyek átkonvertálhatók böngészők és hardverplatformok között. A WebAssembly egy böngészőfüggetlen, univerzális alacsony szintű köztes kódot biztosít az alkalmazások végrehajtásához, amelyet különböző programozási nyelvekből fordítanak le. A WebAssembly JIT használatával a natív kódhoz közeli teljesítményszint érhető el.
A WebAssembly technológia alkalmazható olyan feladatok böngészőben való végrehajtására, amelyek magas teljesítményt igényelnek, például videók kódolására, hangfeldolgozásra, grafikai és 3D manipulációkra, játékfejlesztésre, kriptográfiai műveletekre és matematikai számításokra, lehetővé téve a böngésző számára, hogy közvetlenül futtasson kódot, amelyet fordítható nyelveken, például C/C++-ban írtak.
A WebAssembly főbb feladatai közé tartozik a hordozhatóság biztosítása, a viselkedés kiszámíthatósága, valamint a kód végrehajtásának azonosítottsága különböző platformokon. Az utóbbi időben a WebAssembly-t egyetemes platformként is népszerűsítik a kód biztonságos végrehajtására bármilyen infrastruktúrában, operációs rendszeren és eszközön, nem korlátozva a böngészőkre.
A W3C közzétett három előzetes WebAssembly 2.0 specifikációt:
- A WebAssembly Core — leírja a köztes kód WebAssembly végrehajtásához szükséges alacsony szintű virtuális gépet. A WebAssembly-hez kapcsolódó erőforrások „.wasm” formátumban érkeznek, hasonlóan a Java „.class” fájlokhoz, és statikus adatokat, valamint kódszegmenseket tartalmaznak ezeknek az adatoknak a kezelésére.
- A WebAssembly JavaScript Interface — API-t biztosít a JavaScripttel való integrációhoz. Lehetővé teszi értékek lekérését és paraméterek átadását a WebAssembly függvényekbe. A WebAssembly végrehajtása megfelel a JavaScript biztonsági modelljének, és minden interakció a fő rendszerrel a JavaScript kód végrehajtásához hasonló módon zajlik.
- A WebAssembly Web API — a Promise mechanizmus alapú programozási interfészt határoz meg a „.wasm” erőforrások kérésére és végrehajtására. A WebAssembly erőforrások formátuma optimalizálva van a végrehajtás kezdetéhez, nem várva meg a fájl teljes betöltését, ami javítja a webalkalmazások reagálóképességét.
A WebAssembly 2.0 főbb változásai az első verzióhoz képest:
- A v128 vektortípus és a hozzá kapcsolódó vektoreljárások támogatása, amelyek lehetővé teszik több numerikus érték párhuzamos feldolgozását (SIMD, egyetlen utasítás, több adat).
- Globális változók importálásának és exportálásának lehetősége, amelyek módosíthatók, lehetővé téve a globális kötést olyan értékekhez, mint a C++-beli veremmutatók.
- Új utasítások a float típus int-tá alakítására, amelyek a túlfutásos kivételek helyett a legkisebb vagy legnagyobb lehetséges értéket adják vissza (ez szükséges a SIMD-hez).
- Utasítások a pozitív egész számok kiterjesztésére (a szám méretének növelése a jel és az érték megőrzésével).
- Több érték blokkokban és függvények által történő visszaadásának támogatása (a különböző paraméterek átadása mellett).
- A JavaScript BigInt64Array és BigUint64Array függvények megvalósítása a JavaScript BigInt típus és a 64-bites egész számok WebAssembly-beli ábrázolása közötti átalakításhoz.
- Referencia típusok (funcref és externref) és a hozzájuk kapcsolódó utasítások támogatása (select, ref.null, ref.func és ref.is_null).
- memory.copy, memory.fill, memory.init és data.drop utasítások az adatok memóriaterületek közötti másolására és a memória régiók törlésére.
- Utasítások közvetlen hozzáférésre és táblák módosítására (table.set, table.get, table.size, table.grow). Több tábla létrehozásának, importálásának és exportálásának lehetősége egy modulon belül. Táblák másolására/töltésére szolgáló funkciók kötegelt módban (table.copy, table.init és elem.drop).
Forrás: opennet.ru
