Publikovaný štandard WebAssembly 3.0

Konzorcium W3C oznámil pripravenosť špecifikácie, ktorá štandardizuje medzičlánkový kód WebAssembly 3.0 a súvisiace API, umožňujúce vytvárať vysokovýkonové aplikácie, prenositeľné medzi prehliadačmi a hardvérovými platformami. WebAssembly poskytuje univerzálny nízkoúrovňový medzičlánkový kód nezávislý od prehliadača pre vykonávanie aplikácií, ktoré boli skompilované z rôznych programovacích jazykov.

Technológia WebAssembly sa môže použiť na vykonávanie v prehliadači úloh vyžadujúcich vysoký výkon, ako napríklad kódovanie videa, spracovanie zvuku, manipulácia s grafikou a 3D, vývoj hier, kryptografické operácie a matematické výpočty prostredníctvom organizácie vykonávania kódu napísaného v kompilovateľných jazykoch, ako sú C/C++. Vďaka využitiu JIT pre WebAssembly je možné dosiahnuť úroveň výkonu blízku natívnemu kódu.

Medzi hlavné úlohy WebAssembly patrí zabezpečenie prenositeľnosti, predvídateľnosti správania a identity vykonávania kódu na rôznych platformách. WebAssembly nie je obmedzené na prehliadače a tiež sa propaguje ako univerzálna platforma pre bezpečné vykonávanie kódu v akýchkoľvek infraštruktúrach, operačných systémoch a zariadeniach.

K dispozícii sú nasledujúce špecifikácie:

  • WebAssembly Core — popisuje nízkoúrovňový virtuálny stroj na vykonávanie medzičlánkového kódu WebAssembly. Súvisiace s WebAssembly zdroje sa dodávajú vo formáte „.wasm“, podobnom súborom „.class“ v Jave a obsahujúce statické dáta a segmenty kódu na prácu s týmito dátami.
  • WebAssembly JavaScript API — poskytuje API pre integráciu s JavaScriptom. Umožňuje získavať hodnoty a posielať parametre do funkcií WebAssembly. Vykonávanie WebAssembly zodpovedá modelu zabezpečenia JavaScriptu a všetka interakcia s hlavnou systémom sa vykonáva analogicky k vykonávaniu JavaScriptového kódu.
  • WebAssembly Web API — definuje programové rozhranie založené na mechanizme Promise pre požiadavku a vykonávanie zdrojov „.wasm“. Formát zdrojov WebAssembly je optimalizovaný na začiatok vykonávania, bez čakania na úplné načítanie súboru, čo umožňuje zvýšiť odozvu webových aplikácií.
  • WASI API — definuje modulárne systémové rozhranie pre spúšťanie WebAssembly mimo prehliadačov a poskytuje prístup k zdrojom ako sú súbory, sieťové pripojenia, generátor pseudonáhodných čísel a systémové hodiny.

Je zrejmé, že v novej verzii štandardu bola výrazne vylepšená podpora kompilácie vysokonáročných jazykov do WebAssembly. Napríklad bola implementovaná možnosť kompilácie projektov napísaných v jazykoch Java, OCaml, Scala, Kotlin, Scheme a Dart. Hlavné zmeny vo WebAssembly 3.0 v porovnaní s druhou verziou štandardu sú:

  • Bola implementovaná podpora 64-bitového adresného priestoru. Pre adresovanie pamäte môže byť teraz použitý typ i64, a nie len i32, čo rozširuje dostupný adresný priestor pre aplikácie z 4 GB na 16 EB (pri vykonávaní v prehliadači je nastavené obmedzenie na 16 GB).
  • Bola poskytnutá možnosť súčasného použitia viacerých objektov pamäte v jednom WebAssembly-module a práce s rôznymi adresnými priestormi. Okrem iného je možné kopírovať dáta medzi rôznymi inštanciami objektov pamäte umiestnenými v rôznych adresných priestoroch.
  • Bola pridaná podpora pre zber odpadu. Okrem predtým dostupnej lineárnej pamäte bol navrhnutý osobitný typ úložiska, ktorý je automaticky spravovaný pomocou zberného mechanizmu. Kompiler môže teraz používať samostatné dátové štruktúry, polia a premenné, za ktoré je zodpovedné WebAssembly pri prideľovaní pamäte a správe životného cyklu.
  • Bola pridaná podpora typovaných odkazov, ktoré môžu popisovať presnú štruktúru hodnoty, na ktorú odkaz odkazuje, čo umožňuje vyhnúť sa dodatočným kontrolám počas vykonávania. Podporujú sa podtypy, recirkulácia typov a možnosť bezpečného používania odkazov na funkcie, ktoré si nevyžadujú kontrolu typov a hraníc počas vykonávania.
  • Bola pridaná podpora pre tail call, pri ktorých aktuálna funkcia okamžite ukončuje vykonávanie po volaní inej funkcie, bez spotreby miesta na zásobníku.
  • Bola pridaná podpora pre spracovanie výnimiek.
  • Bola pridaná podpora pre 'oslabené' (relaxed) vektorové SIMD-inštrukcie, ktoré umožňujú dosiahnuť vyšší výkon zrieknutím sa prísneho dodržiavania sémantiky na všetkých hardvérových platformách.
  • Pridaná podpora deterministického profilu vykonávania, ktorý určuje nezávislé od aktuálnej platformy správanie pre inštrukcie, ktorých výsledky vykonávania sa môžu líšiť na rôznych platformách (operácie s pohyblivou desatinnou čiarkou, vrátenie hodnoty NaN, oslabené vektorové inštrukcie). Pri výbere tohto profilu Wasm zabezpečuje deterministické správanie, reprodukovateľnosť a prenositeľnosť.
  • Pridaná syntax na vytváranie vlastných anotácií, ktoré umožňujú pripojiť ďalšie informácie kódu WebAssembly. Predtým bola podpora používateľských sekcií, ktoré umožňujú uchovávať ľubovoľné informácie, dostupná v binárnom formáte WebAssembly, ale chýbala v textovom formáte WebAssembly. Teraz je možné pridávať tieto informácie v čitateľnej a upravovateľnej podobe.
  • Do JavaScript API boli pridané vstavané funkcie na prácu s reťazcami. Predtým bolo možné reťazce JavaScriptu prenášať do WebAssembly len ako externé odkazy, ale teraz je možné priamo pristupovať k reťazcom a manipulovať s nimi vo vnútri WebAssembly.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster