K dispozícii je štandardná ukážka WebAssembly 2.0

Konferencia W3C zverejnila návrh novej špecifikácie, ktorá štandardizuje middleware WebAssembly 2.0 a s ním spojené API, čo umožňuje vytváranie vysokovýkonných aplikácií, ktoré sú prenosné medzi prehliadačmi a hardvérovými platformami. WebAssembly poskytuje univerzálny, nízkoúrovňový prechodný kód nezávislý od prehliadača na spúšťanie aplikácií zostavených z rôznych programovacích jazykov. Použitím JIT pre WebAssembly môžete dosiahnuť úrovne výkonu blízke natívnemu kódu.

Technológia WebAssembly môže byť použitá na vykonávanie vysokovýkonných úloh v prehliadači, ako je kódovanie videa, spracovanie zvuku, grafika a 3D manipulácia, vývoj hier, kryptografické operácie a matematické výpočty, a to vďaka možnosti napísania kódu v kompilovaných jazykoch, ako je C/C++. .

Medzi hlavné ciele WebAssembly patrí zabezpečenie prenosnosti, predvídateľného správania a rovnakého spúšťania kódu na rôznych platformách. Nedávno bola WebAssembly propagovaná aj ako univerzálna platforma na bezpečné spúšťanie kódu v akejkoľvek infraštruktúre, operačnom systéme a zariadení, nielen v prehliadačoch.

Konferencia W3C zverejnila tri návrhy špecifikácií pre WebAssembly 2.0:

  • WebAssembly Core – opisuje nízkoúrovňový virtuálny stroj na spustenie prechodného kódu WebAssembly. Prostriedky spojené s WebAssembly sa dodávajú vo formáte „.wasm“, podobnom súborom „.class“ v jazyku Java, ktoré obsahujú statické údaje a segmenty kódu na prácu s týmito údajmi.
  • WebAssembly JavaScript Interface - Poskytuje API pre integráciu s JavaScriptom. Umožňuje získať hodnoty a odovzdať parametre funkciám WebAssembly. Spustenie WebAssembly sa riadi bezpečnostným modelom JavaScript a všetka interakcia s hlavným systémom sa vykonáva rovnakým spôsobom ako pri spúšťaní kódu JavaScript.
  • WebAssembly Web API – Definuje programovacie rozhranie založené na mechanizme Promise na vyžiadanie a spustenie zdrojov „.wasm“. Formát prostriedkov WebAssembly je optimalizovaný na spustenie bez čakania na úplné načítanie súboru, čo zlepšuje odozvu webových aplikácií.

Hlavné zmeny vo WebAssembly 2.0 v porovnaní s prvou verziou štandardu:

  • Podpora vektorového typu v128 a súvisiacich vektorových inštrukcií, ktoré vám umožňujú vykonávať akcie na viacerých číselných hodnotách paralelne (SIMD, jedna inštrukcia, viaceré dáta).
  • Schopnosť importovať a exportovať meniteľné globálne premenné, čo umožňuje globálnu väzbu pre hodnoty, ako sú ukazovatele zásobníka v C++.
  • Nové pokyny na konverziu float na int, ktoré namiesto vyhodenia výnimky pri pretečení výsledku vrátia minimálnu alebo maximálnu možnú hodnotu (potrebné pre SIMD).
  • Pokyny na znamienkové rozšírenie celých čísel (zvýšenie bitovej hĺbky čísla pri zachovaní znamienka a hodnoty).
  • Podpora blokov a funkcií vracajúcich viacero hodnôt (okrem odovzdávania viacerých parametrov funkciám).
  • Implementácia funkcií JavaScript BigInt64Array a BigUint64Array na konverziu medzi typom JavaScript BigInt a reprezentáciou 64-bitových celých čísel WebAssembly.
  • Podpora typov odkazov (funcref a externref) a ich pridružených inštrukcií (select, ref.null, ref.func a ref.is_null).
  • Pokyny Memory.copy, memory.fill, memory.init a data.drop na kopírovanie údajov medzi oblasťami pamäte a vymazanie oblastí pamäte.
  • Pokyny na priamy prístup a úpravu tabuliek (table.set, table.get, table.size, table.grow). Schopnosť vytvárať, importovať a exportovať viacero tabuliek v jednom module. Funkcie pre kopírovanie/vypĺňanie tabuliek v dávkovom režime (table.copy, table.init a elem.drop).

Zdroj: opennet.ru

Pridať komentár