WebAssembly

WebAssembly
Paradigmaimperativní, strukturované, orientované na výrazy
Vznikbřezen 2017
VývojářW3C
Typová kontrolaStatický
Ovlivněn jazykyasm.js (od Mozilly)
NaCl (od Google)
OSWeb
LicenceApache 2.0 License
Přípona souboru.wat, .wasm

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ů.

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]

Podpora

Mozilla deklarovala podporu „ve všech hlavních prohlížečích“,[19] implicitně je podpora povolena v Microsoft Edge verze 16.[20] 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).[21]

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.[22] Po dosažení hranice minimálně životaschopného produktu je v plánu vytvoření podpory pro Garbage collection,[23] 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.[24] 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:[25]

zdrojový kód v C lineární assembly bytecode
(mezijazyk)
WASM binary kód
(hexadecimálně)
int factorial(int n) {
  if (n == 0)
    return 1;
  else
    return n * factorial(n-1);
}
get_local 0
i64.eqz
if (result i64)
    i64.const 1
else
    get_local 0
    get_local 0
    i64.const 1
    i64.sub
    call 0
    i64.mul
end
20 00
50
04 7E
42 01
05
20 00
20 00
42 01
7D
10 00
7E
0B

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ý:[26]

(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))))

Reference

  1. a b LARDINOIS, Frederic. Google, Microsoft, Mozilla And Others Team Up To Launch WebAssembly, A New Binary Format For The Web. TechCrunch. 2015-06-17. Dostupné online [cit. 2017-12-24]. (anglicky) Je zde použita šablona {{Cite news}} označená jako k „pouze dočasnému použití“.
  2. CIMPANU, Catalin. Mozilla, Microsoft, Google, and Apple Join Efforts to Create a Binary File Format for the Web. softpedia. 2015-06-18. Dostupné online [cit. 2017-12-23]. (anglicky) Je zde použita šablona {{Cite news}} označená jako k „pouze dočasnému použití“.
  3. HOFFMANN, Moritz. Turbo-Boost für JavaScript: Eric Elliott über WebAssembly. JAXenter. 2015-06-23. Dostupné online [cit. 2017-12-23]. (německy) Je zde použita šablona {{Cite news}} označená jako k „pouze dočasnému použití“.
  4. BRIGHT, Peter. The Web is getting its bytecode: WebAssembly [online]. Condé Nast, 18 June 2015. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  5. Design Rationale [online]. 1 October 2016. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  6. a b WebAssembly High-Level Goals [online]. 11 December 2015. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  7. AVRAM, Abel. Google Is to Remove Support for PNaCl [online]. 2017-05-31 [cit. 2017-12-22]. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  8. WebAssembly: a binary format for the web [online]. 18 June 2015. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  9. Launch bug [online]. 11 June 2015. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  10. WAGNER, Luke. A WebAssembly Milestone: Experimental Support in Multiple Browsers [online]. 14 March 2016. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  11. THOMPSON, Seth. Experimental support for WebAssembly in V8 [online]. 15 March 2016. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  12. ZHU, Limin. Previewing WebAssembly experiments in Microsoft Edge [online]. 15 March 2016. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  13. a b KRILL, Paul. WebAssembly is now ready for browsers to use. InfoWorld. 2017-03-06. Dostupné online [cit. 2017-12-23]. (anglicky) Je zde použita šablona {{Cite news}} označená jako k „pouze dočasnému použití“.
  14. WebAssembly [online]. [cit. 2018-03-07]. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  15. WebAssembly First Public Working Drafts [online]. W3C, February 15, 2018 [cit. 2018-04-20]. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  16. WebAssembly Core Specification [online]. W3C, February 15, 2018 [cit. 2018-04-20]. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  17. WebAssembly JavaScript Interface [online]. W3C, February 15, 2018 [cit. 2018-04-20]. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  18. WebAssembly Web API [online]. W3C, February 15, 2018 [cit. 2018-04-20]. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  19. WebAssembly support now shipping in all major browsers [online]. [cit. 2017-11-21]. Dostupné online. (anglicky) Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  20. Introducing new JavaScript optimizations, WebAssembly, SharedArrayBuffer, and Atomics in EdgeHTML 16 [online]. [cit. 2017-11-21]. Dostupné online. (anglicky) Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  21. BRIGHT, Peter. The Web is getting its bytecode: WebAssembly. Ars Technica. 2015-06-18. Dostupné online [cit. 2017-12-23]. (anglicky) Je zde použita šablona {{Cite news}} označená jako k „pouze dočasnému použití“.
  22. KRILL, Paul. Direct WebAssembly compilation comes to Rust language. InfoWorld. 2017-11-29. Dostupné online [cit. 2017-12-24]. (anglicky) Je zde použita šablona {{Cite news}} označená jako k „pouze dočasnému použití“.
  23. KRILL, Paul. What's next for WebAssembly: GC, threads, debugging. TechWorld. 2017-10-26. Dostupné online [cit. 2017-12-24]. Je zde použita šablona {{Cite news}} označená jako k „pouze dočasnému použití“.
  24. Roadmap [online]. March 2017. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  25. jfbastien; ROSSBERG-CHROMIUM; KRIPKEN; TITZER; S3THTHOMPSON; SUNFISHCODE; LUKEWAGNER. Text Format [online]. GitHub, 9 March 2017. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
  26. Folded instructions [online]. Dostupné online. Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“. / WebAssembly / spec

Literatura

  • HAAS, Andreas; ROSSBERG, Andreas; SCHUFF, Derek L.; TITZER, Ben L.; GOHMAN, Dan; WAGNER, Luke; ZAKAI, Alon. Bringing the web up to speed with WebAssembly. Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation. Association for Computing Machinery, June 2017, s. 185–200. Dostupné online. Je zde použita šablona {{Cite journal}} označená jako k „pouze dočasnému použití“.
  • WATT, Conrad. Mechanising and Verifying the WebAssembly Specification. ACM SIGPLAN International Conference on Certified Programs and Proofs. ACM, 2018. Dostupné online. DOI 10.1145/3167082. Je zde použita šablona {{Cite journal}} označená jako k „pouze dočasnému použití“.

Související články

Externí odkazy


Zdroj datcs.wikipedia.org
Originálcs.wikipedia.org/wiki/WebAssembly
Zobrazit sloupec 

Kalkulačka - Výpočet

Výpočet čisté mzdy

Důchodová kalkulačka

Přídavky na dítě

Příspěvek na bydlení

Rodičovský příspěvek

Životní minimum

Hypoteční kalkulačka

Povinné ručení

Banky a Bankomaty

Úrokové sazby, Hypotéky

Směnárny - Euro, Dolar

Práce - Volná místa

Úřad práce, Mzda, Platy

Dávky a příspěvky

Nemocenská, Porodné

Podpora v nezaměstnanosti

Důchody

Investice

Burza - ČEZ

Dluhopisy, Podílové fondy

Ekonomika - HDP, Mzdy

Kryptoměny - Bitcoin, Ethereum

Drahé kovy

Zlato, Investiční zlato, Stříbro

Ropa - PHM, Benzín, Nafta, Nafta v Evropě

Podnikání

Města a obce, PSČ

Katastr nemovitostí

Katastrální úřady

Ochranné známky

Občanský zákoník

Zákoník práce

Stavební zákon

Daně, formuláře

Další odkazy

Auto - Cena, Spolehlivost

Registr vozidel - Technický průkaz, eTechničák

Finanční katalog

Volby, Mapa webu

English version

Czech currency

Prague stock exchange


Ochrana dat, Cookies

 

Copyright © 2000 - 2024

Kurzy.cz, spol. s r.o., AliaWeb, spol. s r.o.