Byl zveřejněn standard WebAssembly 3.0

Konsorcium W3C oznámilo dokončení specifikace standardizující mezikód WebAssembly 3.0 a související API, které umožňuje vytvářet vysoce výkonné aplikace přenosné mezi prohlížeči a hardwarovými platformami. WebAssembly poskytuje nezávislý na prohlížeči univerzální nízkoúrovňový mezikód pro provádění aplikací přeložených z různých programovacích jazyků.

Technologie WebAssembly může být použita k provádění ve webovém prohlížeči úloh vyžadujících vysoký výkon, například kódování videa, zpracování zvuku, manipulaci s grafikou a 3D, vývoji her, kryptografickým operacím a matematickým výpočtům prostřednictvím organizace provádění kódu napsaného v kompilovaných jazycích, jako je C/C++. Díky využití JIT pro WebAssembly lze dosáhnout úrovně výkonu blízké nativnímu kódu.

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. WebAssembly není omezeno na prohlížeče a také se prosazuje jako univerzální platforma pro bezpečné provádění kódu v jakýchkoli infrastrukturách, operačních systémech a zařízeních.

K dispozici jsou následující specifikace:

  • WebAssembly Core — popisuje nízkoúrovňový virtuální stroj pro provádění mezikódu WebAssembly. Související zdroje WebAssembly jsou dodávány ve formátu „.wasm“, který je podobný souborům „.class“ v Javě a obsahuje statická data a segmenty kódu pro práci s těmito daty.
  • WebAssembly JavaScript API — poskytuje API pro integraci s JavaScriptem. Umožňuje získávat hodnoty a předávat parametry do funkcí WebAssembly. Provádění WebAssembly odpovídá bezpečnostnímu modelu JavaScriptu a veškerá interakce s hlavním systémem probíhá analogicky jako při provádění JavaScriptového kódu.
  • WebAssembly Web API — definuje programové rozhraní založené na mechanismu Promise pro dotazování a provádění zdrojů „.wasm“. Formát zdrojů WebAssembly je optimalizován pro zahájení provádění, aniž by čekal na úplné načtení souboru, což zvyšuje odezvu webových aplikací.
  • WASI API — určuje modulární systémové rozhraní pro spouštění WebAssembly mimo prohlížeče a poskytuje přístup k takovým zdrojům, jako jsou soubory, síťová připojení, generátor pseudonáhodných čísel a systémové hodiny.

Je zaznamenáno, že v nové verzi standardu byla výrazně zlepšena podpora kompilace vysokolevelových jazyků do WebAssembly. Například byla implementována možnost kompilace projektů v jazycích Java, OCaml, Scala, Kotlin, Scheme a Dart. Hlavní změny ve WebAssembly 3.0, ve srovnání s druhou verzí standardu:

  • Byla implementována podpora 64bitového adresního prostoru. Pro adresaci paměti nyní může být použit typ i64, nikoli pouze i32, což rozšiřuje dostupný adresní prostor pro aplikace ze 4 GB na 16 EB (při provádění v prohlížeči je omezení na 16 GB).
  • Byla poskytnuta možnost souběžného použití více objektů paměti v jednom modulu WebAssembly a práce s různými adresními prostory. Mimo jiné je možné kopírovat data mezi různými instancemi objektů paměti umístěnými v různých adresních prostorech.
  • Byla přidána podpora garbage collection. Kromě dříve dostupné lineární paměti byl nabízen samostatný typ úložiště, které je automaticky spravováno pomocí garbage collectoru. Kompilátor nyní může používat oddělené datové struktury, pole a proměnné, za jejichž alokaci paměti a správu životního cyklu odpovídá WebAssembly.
  • Byla přidána podpora typovaných odkazů, které mohou popisovat přesnou strukturu hodnoty, na kterou odkaz ukazuje, což umožňuje vyhnout se dodatečným kontrolám během běhu. Podporovány jsou podtypy, rekurze typů a možnost bezpečného používání odkazů na funkce, které nevyžadují kontrolu typů a hranic během běhu.
  • Byla přidána podpora tail call, při které aktuální funkce okamžitě ukončuje provádění po volání jiné funkce, aniž by spotřebovala místo na zásobníku.
  • Byla přidána podpora zpracování výjimek.
  • Byla přidána podpora „oslabených“ (relaxed) vektorových SIMD instrukcí, které umožňují dosáhnout vyšší výkonnosti tím, že se vzdávají přísného dodržování sémantiky na všech hardwarových platformách.
  • Byla přidána podpora deterministického profilu vykonávání, který určuje platformě nezávislé chování pro instrukce, jejichž výsledky se mohou lišit na různých platformách (operace s plovoucí desetinnou čárkou, vracení hodnoty NaN, oslabené vektorové instrukce). Při výběru tohoto profilu poskytuje Wasm deterministické chování, reprodukovatelnost a přenositelnost.
  • Byla přidána syntaxe pro vytváření vlastních anotací, které umožňují připojit dodatečné informace k kódu WebAssembly. Dříve byla podpora uživatelských sekcí, které umožňovaly ukládat libovolné informace, dostupná v binárním formátu WebAssembly, ale chyběla v textovém formátu WebAssembly. Nyní je možné přidávat tyto informace ve čitelné a editovatelné podobě.
  • Do API JavaScriptu byly přidány vestavěné funkce pro práci s řetězci. Dříve bylo možné předávat řetězce JavaScriptu do WebAssembly pouze jako externí odkazy, nyní je možné přímo přistupovat k řetězcům a manipulovat s nimi uvnitř WebAssembly.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster