W3C představena Nedávno prostřednictvím příspěvku návrh nové specifikace který standardizuje kód přípravy WebAssembly 2.0 a související API umožnit vytváření vysoce výkonných aplikací, které jsou přenosné napříč prohlížeči a hardwarovými platformami.
Pro nové uživatele WebAssembly byste to měli vědět to poskytuje obecný middleware, nízká úroveň a nezávislý na prohlížeči, ke spouštění zkompilovaných aplikací z různých programovacích jazyků. Pomocí JIT pro WebAssembly můžete dosáhnout úrovně výkonu blízké nativnímu kódu.
O WebAssembly
WebAssembly lze použít k provádění vysoce výkonných úloh v prohlížeči, jako je kódování videa, zpracování zvuku, 3D a grafická manipulace, vývoj her, kryptografické operace a matematické výpočty, prováděním kódu napsaného v kompilovaných jazycích, jako je C/C++.
Mezi hlavní úkoly WebAssembly patří zajištění přenositelnosti, předvídatelnosti chování a identity provádění kódu na různých platformách. V poslední době se WebAssembly také prosazuje jako univerzální platforma pro bezpečné spouštění kódu na jakékoli infrastruktuře, operačním systému a zařízení, neomezeně na prohlížeče.
O návrhu WebAssembly 2.0
Na straně změn, které byly provedeny od WebAssembly, jsou hotové návrhy pro WebAssembly 2.0 SIMD s pevnou šířkou, operace s velkokapacitní pamětí, typy odkazů, podpora JavaScript BigInt pro WebAssembly i64, podpora více návratových hodnot a import/export proměnných globální proměnné.
W3C zveřejnilo tři návrhy specifikací WebAssembly 2.0:
- Web Assembly Core: popisuje nízkoúrovňový virtuální stroj pro spouštění přechodného kódu WebAssembly. Zdroje související s WebAssembly přicházejí ve formátu „.wasm“, podobně jako soubory Java „.class“, které obsahují statická data a segmenty kódu pro práci s těmito daty.
- Rozhraní JavaScriptu WebAssembly: poskytuje API pro integraci s JavaScriptem. Umožňuje získat hodnoty a předávat parametry funkcím WebAssembly. Provádění WebAssembly se řídí bezpečnostním modelem JavaScriptu a veškerá interakce s hostitelem se provádí způsobem podobným spouštění kódu JavaScript.
- WebAssembly Web API: definuje API založené na mechanismu Promise pro vyžádání a spouštění zdrojů „.wasm“. Formát prostředků WebAssembly je optimalizován tak, aby spustil provádění bez čekání na úplné stažení souboru, což zlepšuje odezvu webových aplikací.
Rozdíly mezi WebAssembly a WebAssembly 2.0
Také je třeba poznamenat, že ve WebAssembly 2.0 došlo ve srovnání s první verzí standardu k některým důležitým změnám:
- podpora vektorového typu v128 a související vektorové instrukce, které umožňují provádět operace s více číselnými hodnotami paralelně (SIMD, jedna instrukce, více dat).
- Schopnost importovat a exportovat proměnné globální proměnné, který umožňuje globální vazbu pro hodnoty jako ukazatele zásobníku v C++.
- Nové instrukce pro převod float na int, který místo vyvolání výjimky při přetečení výsledku vrátí minimální nebo maximální možnou hodnotu (požadováno pro SIMD).
- Návod na rozšíření znaménka celých čísel (zvyšte bitovou hloubku čísla při zachování znaménka a hodnoty).
- Podpora pro vracení více hodnot podle bloků a funkcí (stejně jako předávání více parametrů funkcím).
- Implementujte funkce JavaScriptu BigInt64Array a BigUint64Array pro převod mezi typem JavaScript BigInt a reprezentací WebAssembly 64bitových celých čísel.
- Podpora pro referenční typy (funcref a externref) a jejich související příkazy (select, ref.null, ref.func a ref.is_null).
- instrukce memory.copy, memory.fill, memory.init a data.drop pro kopírování dat mezi oblastmi paměti a mazání oblastí paměti.
- Pokyny pro přímý přístup a úpravy tabulek (table.set, table.get, table.size, table.grow).
- Schopnost vytvářet, importovat a exportovat více tabulek v jednom modulu. Funkce pro kopírování/vyplňování tabulek v dávkovém režimu (table.copy, table.init a elem.drop).
Konečně, pokud máte zájem dozvědět se o tom více, můžete konzultovat podrobnosti Na následujícím odkazu.