K dispozici je standardní náhled WebAssembly 2.0

W3C zveřejnilo návrh nové specifikace, která standardizuje middleware WebAssembly 2.0 a jeho přidružené API, což umožňuje vytvářet vysoce výkonné aplikace, které jsou přenosné napříč prohlížeči a hardwarovými platformami. WebAssembly poskytuje na prohlížeči nezávislý, univerzální, nízkoúrovňový přechodný kód pro spouštění aplikací zkompilovaných z různých programovacích jazyků. Pomocí JIT pro WebAssembly můžete dosáhnout úrovně výkonu blízké nativnímu kódu.

Technologie WebAssembly může být použita k provádění vysoce výkonných úloh v prohlížeči, jako je kódování videa, zpracování zvuku, grafika a 3D manipulace, vývoj her, kryptografické operace a matematické výpočty tím, že umožňuje kód psaný v kompilovaných jazycích, jako je C/C++. .

Mezi hlavní cíle WebAssembly patří zajištění přenositelnosti, předvídatelného chování a identického provádění kódu na různých platformách. Nedávno byla WebAssembly také propagována jako univerzální platforma pro bezpečné spouštění kódu v jakékoli infrastruktuře, operačním systému a zařízení, neomezeně na prohlížeče.

W3C zveřejnilo tři návrhy specifikací pro WebAssembly 2.0:

  • WebAssembly Core – popisuje nízkoúrovňový virtuální stroj pro spouštění středního kódu WebAssembly. Prostředky spojené s WebAssembly jsou dodávány ve formátu „.wasm“, podobně jako soubory „.class“ v Javě, které obsahují statická data a segmenty kódu pro práci s těmito daty.
  • WebAssembly JavaScript rozhraní - poskytuje API pro integraci s JavaScript. Umožňuje získat hodnoty a předávat parametry funkcím WebAssembly. Spuštění WebAssembly se řídí bezpečnostním modelem JavaScriptu a veškerá interakce s hlavním systémem se provádí stejným způsobem jako spouštění kódu JavaScript.
  • WebAssembly Web API – definuje programovací rozhraní založené na mechanismu Promise pro vyžádání a spouštění zdrojů „.wasm“. Formát prostředku WebAssembly je optimalizován tak, aby spustil provádění bez čekání na úplné načtení souboru, což zlepšuje odezvu webových aplikací.

Hlavní změny ve WebAssembly 2.0 ve srovnání s první verzí standardu:

  • Podpora vektorového typu v128 a souvisejících vektorových instrukcí, které umožňují provádět akce na více číselných hodnotách paralelně (SIMD, jedna instrukce, více dat).
  • Schopnost importovat a exportovat proměnné globální proměnné, což umožňuje globální vazbu pro hodnoty, jako jsou ukazatele zásobníku v C++.
  • Nové instrukce převodu 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 (nezbytné pro SIMD).
  • Instrukce pro znaménkové rozšíření celých čísel (zvýšení bitové hloubky čísla při zachování znaménka a hodnoty).
  • Podpora bloků a funkcí vracejících více hodnot (kromě předávání více parametrů funkcím).
  • Implementace funkcí JavaScriptu BigInt64Array a BigUint64Array pro převod mezi typem JavaScriptu BigInt a reprezentací WebAssembly 64bitových celých čísel.
  • Podpora pro typy odkazů (funcref a externref) a jejich přidružené instrukce (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 vymazání oblastí paměti.
  • Pokyny pro přímý přístup a úpravu 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).

Zdroj: opennet.ru

Přidat komentář