A WebAssembly 2.0 szabványos előnézete elérhető

A W3C közzétette egy új specifikáció tervezetét, amely szabványosítja a WebAssembly 2.0 köztes szoftvert és a hozzá tartozó API-t, lehetővé téve a böngészők és hardverplatformok között hordozható, nagy teljesítményű alkalmazások létrehozását. A WebAssembly böngészőfüggetlen, univerzális, alacsony szintű középszintű kódot biztosít különféle programozási nyelvekből összeállított alkalmazások futtatásához. A JIT for WebAssembly használatával a natív kódhoz közeli teljesítményszinteket érhet el.

A WebAssembly technológia nagy teljesítményű feladatok végrehajtására használható a böngészőben, mint például videó kódolás, hangfeldolgozás, grafika és 3D manipuláció, játékfejlesztés, kriptográfiai műveletek és matematikai számítások azáltal, hogy lehetővé teszi a kódok írását olyan lefordított nyelveken, mint a C/C++ .

A WebAssembly fő céljai között szerepel a hordozhatóság, a kiszámítható viselkedés és az azonos kódvégrehajtás biztosítása a különböző platformokon. A közelmúltban a WebAssemblyt olyan univerzális platformként is népszerűsítették, amely biztonságosan végrehajtja a kódot bármilyen infrastruktúrán, operációs rendszeren és eszközön, nem csak a böngészőkben.

A W3C három specifikációtervezetet tett közzé a WebAssembly 2.0-hoz:

  • WebAssembly Core – egy alacsony szintű virtuális gépet ír le a WebAssembly köztes kód futtatásához. A WebAssembly-hez társított erőforrások „.wasm” formátumban kerülnek szállításra, hasonlóan a Java „.class” fájljaihoz, amelyek statikus adatokat és kódszegmenseket tartalmaznak az adatokkal való munkavégzéshez.
  • WebAssembly JavaScript interfész – 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ényeknek. A WebAssembly végrehajtása a JavaScript biztonsági modelljét követi, és minden interakció a fő rendszerrel ugyanúgy történik, mint a JavaScript kód végrehajtása.
  • WebAssembly Web API – A Promise mechanizmuson alapuló programozási felületet határoz meg a „.wasm” erőforrások kérésére és végrehajtására. A WebAssembly erőforrásformátum úgy van optimalizálva, hogy a fájl teljes betöltődésének megvárása nélkül kezdje meg a végrehajtást, ami javítja a webalkalmazások válaszkészségét.

A WebAssembly 2.0 főbb változásai a szabvány első verziójához képest:

  • A v128 vektortípus és a kapcsolódó vektorutasítások támogatása, amelyek lehetővé teszik, hogy párhuzamosan több numerikus értéken hajtson végre műveleteket (SIMD, egyetlen utasítás, több adat).
  • Mutatható globális változók importálása és exportálása, lehetővé téve az értékek globális kötését, például a veremmutatókat a C++ nyelven.
  • Új float int konverziós utasítások, amelyek ahelyett, hogy kivételt dobnának az eredmény túlcsordulása esetén, a lehető legkisebb vagy maximális értéket adják vissza (szükséges a SIMD-hez).
  • Utasítások egész számok előjelbővítéséhez (a szám bitmélységének növelése az előjel és az érték megtartása mellett).
  • Több értéket visszaadó blokkok és függvények támogatása (amellett, hogy több paramétert ad át a függvényeknek).
  • A BigInt64Array és BigUint64Array JavaScript-függvények megvalósítása a BigInt JavaScript típus és a 64 bites egész számok WebAssembly reprezentációja közötti konvertáláshoz.
  • Támogatás a referenciatípusokhoz (funcref és externref) és a hozzájuk tartozó utasításokhoz (select, ref.null, ref.func és ref.is_null).
  • Memory.copy, memory.fill, memory.init és data.drop utasítások a memóriaterületek közötti adatok másolásához és a memóriaterületek törléséhez.
  • Útmutató a táblák közvetlen eléréséhez és módosításához (table.set, table.get, table.size, table.grow). Lehetőség több tábla létrehozására, importálására és exportálására egy modulban. Függvények táblák kötegelt módban történő másolásához/kitöltéséhez (table.copy, table.init és elem.drop).

Forrás: opennet.ru

Hozzászólás