A W3C bemutatta Nemrég egy poszton keresztül egy új specifikáció tervezete amely szabványosítja az előkészítési kódot WebAssembly 2.0 és a kapcsolódó API nagy teljesítményű alkalmazások létrehozásának lehetővé tétele, amelyek hordozhatók böngészők és hardverplatformok között.
Azoknak, akik most ismerkednek a WebAssembly-vel, ezt tudniuk kell ez egy általános köztes szoftvert biztosít, alacsony szintű és böngészőfüggetlen, lefordított alkalmazások futtatásához különböző programozási nyelvekből. A JIT for WebAssembly használatával a natív kódhoz közeli teljesítményszintet érhet el.
A WebAssembly-ről
WebAssemble nagy teljesítményű feladatok végrehajtására használható a böngészőben, mint például a videó kódolás, hangfeldolgozás, 3D és grafikai manipuláció, játékfejlesztés, kriptográfiai műveletek és matematikai számítások, lefordított nyelveken, például C/C++-on írt kód végrehajtásával.
A WebAssembly fő feladatai közé tartozik a hordozhatóság, a viselkedés kiszámíthatósága és a kódvégrehajtás azonossága a különböző platformokon. A közelmúltban a WebAssemblyt mint univerzális platformot népszerűsítették a biztonságos kódfuttatáshoz bármilyen infrastruktúrán, operációs rendszeren és eszközön, nem csak a böngészőkben.
A WebAssembly 2.0 tervezetéről
A WebAssembly óta végrehajtott változtatások részéről a WebAssembly 2.0 kész javaslatai a fix szélességű SIMD, a tömegmemória műveletek, a referenciatípusok, a JavaScript BigInt támogatása a WebAssembly i64 számára, a többszörös visszatérési érték támogatása és a változók importálása/exportálása. globális változók.
A W3C három WebAssembly 2.0 specifikáció tervezetet tett közzé:
- Web Assembly mag: egy alacsony szintű virtuális gépet ír le köztes WebAssembly-kód futtatásához. A WebAssembly-hez kapcsolódó erőforrások „.wasm” formátumban érkeznek, hasonlóan a Java „.class” fájlokhoz, amelyek statikus adatokat és kódszegmenseket tartalmaznak az adatokkal való együttműködéshez.
- WebAssembly JavaScript felület: 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 gazdagéppel a JavaScript kód futtatásához hasonló módon történik.
- WebAssemble Web API: meghatároz egy API-t a Promise mechanizmuson alapuló ".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 letöltésére való várakozás nélkül induljon el a végrehajtás, ami javítja a webalkalmazások válaszkészségét.
A WebAssembly és a WebAssembly 2.0 közötti különbségek
Azt is meg kell jegyezni, hogy a WebAssembly 2.0-ban van néhány fontos változás a szabvány első verziójához képest:
- v128 vektor típusú támogatás és a kapcsolódó vektorutasítások, amelyek lehetővé teszik több numerikus érték párhuzamos végrehajtását (SIMD, egyetlen utasítás, több adat).
- Képes változó globális változók importálására és exportálására, amely lehetővé teszi az értékek globális kötését veremmutatóként a C++ nyelven.
- Új utasítások a float int-re konvertálásához, amely ahelyett, hogy kivételt dobna az eredmény túlcsordulása esetén, a lehetséges minimális vagy maximális értéket adja vissza (a SIMD-hez szükséges).
- Útmutató az egész számok előjelének bővítéséhez (egy szám bitmélységének növelése az előjel és az érték megtartásával).
- Több érték blokkok és függvények szerinti visszaadásának támogatása (valamint több paraméter átadása a függvényeknek).
- Valósítsa meg a BigInt64Array és BigUint64Array JavaScript függvényeket konvertálni a JavaScript típusú BigInt és a 64 bites egész számok WebAssembly reprezentációja között.
- Referenciatípusok támogatása (funcref és externref) és a hozzájuk tartozó utasítások (select, ref.null, ref.func és ref.is_null).
- memory.copy, memory.fill, memory.init és data.drop utasítások adatok másolásához a memóriaterületek között és a memóriaterületek törléséhez.
- Utasítások a táblázatok 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 a táblák kötegelt módban történő másolására/kitöltésére (table.copy, table.init és elem.drop).
Végül, ha többet szeretne megtudni róla, akkor tanulmányozza a részleteket A következő linken.