WebAssembly
webový standard From Wikipedia, the free encyclopedia
Remove ads
WebAssembly (wasm, WA) je v informatice webový standard, který definuje binární formát a odpovídající pseudo-jazyk symbolických adres pro přenositelný strojový kód spustitelný na webových stránkách. Umožňuje provádět kód téměř tak rychle, jako nativní strojový kód. Představuje tak doplněk k JavaScriptu, který má zrychlit kritické části webových aplikací a později umožnit webový vývoj i v jiných programovacích jazycích, než je JavaScript.[1][2][3] Je vyvíjen pod zastřešením W3C inženýry z firem Mozilla, Microsoft, Google a Apple.[4]
Po formální verifikaci je spouštěn v sandboxu ve webovém prohlížeči. Programy mohou být kompilovány do wasm modulů z vyšších programovacích jazyků a zaváděny jako knihovny z JavaScriptových appletů.
Remove ads
Design
WebAssembly je abstraktní portabilní strukturovaný kód určený pro běh na zásobníkovém počítači,[5] a je navržen tak, aby byl parsován i prováděn rychleji než JavaScript[6] a aby výsledný kód byl velmi kompaktní.
Historie
Inspirací pro WebAssembly jsou Google Native Client (NaCl) a asm.js.[1][7] První implementace v prohlížeči byla založena na schopnostech asm.js.[8] poprvé byl uveden 17. června 2015[9] a 15. března 2016 byla demonstrována hra Angry Bots založená na herním engine Unity v prohlížečích Firefox,[10] Chromium, Google Chrome,[11] a Microsoft Edge.[12] V březnu 2017 bylo deklarováno, že vývoj dosáhl hranice minimálně životaschopného produktu a uváděcí fáze byla dokončena.[13] Prohlížeč Safari dostal podporu ve verze 11 (konec roku 2017). V březnu 2018 byla deklarována podpora pro 72,75% globáně používaných prohlížečů (zbytek může mít podporu přes polyfill).[14] V únoru 2018 zveřejnila pracovní skupina WebAssembly Working Group tři návrhy standardů pro Core Specification, Javascript Interface a Web API.[15][16][17][18]
Dne 16. října 2024 přišla Mozilla s významným zrychlením spouštění WebAssembly, které dosahuje až 75 násobek dřívější rychlosti spouštění před optimalizací. Mozilla zaroveň uvádí, že pracuje na dalším zrychlení spouštění.[19][20]
Remove ads
Podpora
Mozilla deklarovala podporu „ve všech hlavních prohlížečích“,[21] implicitně je podpora povolena v Microsoft Edge verze 16.[22] Pro zpětnou kompatibilitu může být wasm zkompilován do asm.js pomocí JavaScript appletu (ve webových prohlížečích označována jako tzv. polyfill).[23]
Emscripten může zkompilovat do wasm[13] v backendu pomocí LLVM.
Prvotní záměr je podpora kompilace z jazyků C a C++,[6] ačkoliv je vyvíjena podpora i pro další jazyky, jako například Rust.[24] Po dosažení hranice minimálně životaschopného produktu je v plánu vytvoření podpory pro Garbage collection,[25] což umožní pro WebAssembly podporu jazyků, které garbage collecting používají (Java, C#).
Reprezentace
V březnu 2017 byl dosažen konsenzus pro počáteční formu binárního formátu, JavaScript API a referenční interpret.[26] Definuje binární formát, který není určen k tomu, aby byl lidmi používán podobně jako klasický lineární kód jazyka symbolických adres, který je všeobecně znám.
Následující tabulka ukazuje tři různé pohledy na stejný zdrojový kód zobrazený vlevo a vpravo od něj je převeden do mezijazyka wasm a pak do binárního formátu wasm:[27]
Textový formát WebAssembly může být zapsán ve složeném formátu s-výrazů. Tento formát je čistě syntaktický cukr a není od lineárního formátu nijak významově odlišný:[28]
(module
(import "math" "exp" (func $exp (param f64) (result f64)))
(func (export "doubleExp") (param $0 f64) (result f64)
(f64.mul
(call $exp
(get_local $0))
(f64.const 2))))
Remove ads
Reference
Literatura
Související články
Externí odkazy
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads