Movatterモバイル変換


[0]ホーム

URL:


Přeskočit na obsah
WikipedieWikipedie: Otevřená encyklopedie
Hledání

WebAssembly

Z Wikipedie, otevřené encyklopedie
WebAssembly
Paradigmaimperativní,strukturované,orientované na výrazy
Vznikbřezen 2017
VývojářW3C
Typová kontrolaStatický
Ovlivněn jazykyasm.js (odMozilly)
NaCl (odGoogle)
OSWeb
LicenceApache 2.0 License
Přípona souboru.wat, .wasm

WebAssembly (wasm,WA) je vinformaticewebový standard, který definuje binární formát a odpovídající pseudo-jazyk symbolických adres pro přenositelnýstrojový kód spustitelný nawebový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 kJavaScriptu, který má zrychlit kritické částiwebových aplikací a později umožnit webový vývoj i v jinýchprogramovacích jazycích, než je JavaScript.[1][2][3] Je vyvíjen pod zastřešenímW3C inženýry z firemMozilla,Microsoft,Google aApple.[4]

Po formální verifikaci je spouštěn vsandboxu vewebovém prohlížeči. Programy mohou býtkompilovány do wasm modulů zvyšších programovacích jazyků a zaváděny jakoknihovny z JavaScriptových appletů.

Design

[editovat |editovat zdroj]

WebAssembly je abstraktníportabilní strukturovaný kód určený pro běh nazásobníkovém počítači,[5] a je navržen tak, aby bylparsován i prováděn rychleji než JavaScript[6] a aby výsledný kód byl velmi kompaktní.

Historie

[editovat |editovat zdroj]

Inspirací pro WebAssembly jsouGoogle Native Client (NaCl) aasm.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 hraAngry Bots založená na herním engineUnity v prohlížečíchFirefox,[10]Chromium,Google Chrome,[11] aMicrosoft 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]

Dne16. října2024 přišlaMozilla 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]

Podpora

[editovat |editovat zdroj]

Mozilla deklarovala podporu „ve všech hlavních prohlížečích“,[21] implicitně je podpora povolena vMicrosoft Edge verze 16.[22] Prozpě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 podporakompilace z jazykůC aC++,[6] ačkoliv je vyvíjena podpora i pro další jazyky, jako napříkladRust.[24] Po dosažení hranice minimálně životaschopného produktu je v plánu vytvoření podpory proGarbage collection,[25] což umožní pro WebAssembly podporu jazyků, které garbage collecting používají (Java,C#).

Reprezentace

[editovat |editovat zdroj]

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 domezijazyka wasm a pak do binárního formátu wasm:[27]

zdrojový kód vClineární assembly bytecode
(mezijazyk)
WASM binary kód
(hexadecimálně)
intfactorial(intn){if(n==0)return1;elsereturnn*factorial(n-1);}
get_local 0i64.eqzif (result i64)    i64.const 1else    get_local 0    get_local 0    i64.const 1    i64.sub    call 0    i64.mulend
20 005004 7E42 010520 0020 0042 017D10 007E0B

Textový formát WebAssembly může být zapsán ve složeném formátus-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(paramf64)(resultf64)))(func(export"doubleExp")(param$0f64)(resultf64)(f64.mul(call$exp(get_local$0))(f64.const2))))

Reference

[editovat |editovat zdroj]
  1. 12LARDINOIS, 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 #"mw:ExtLink nofollow" href="https://jaxenter.de/turbo-boost-fuer-javascript-eric-elliott-ueber-webassembly-21720">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. 12WebAssembly 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. 12KRILL, 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. DSL.sk - Firefox mnohonásobne zrýchlil spúšťanie WebAssembly kódu.DSL.sk [online]. [cit. 2024-10-18].Dostupné online. 
  20. MOOIJ, Jan de. 75x faster: optimizing the Ion compiler backend.SpiderMonkey JavaScript/WebAssembly Engine [online]. 2024-10-16 [cit. 2024-10-18].Dostupné online. (anglicky) 
  21. 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í“.
  22. 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í“.
  23. 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í“.
  24. 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í“.
  25. 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í“.
  26. Roadmap [online]. March 2017.Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  27. 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í“.
  28. 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

[editovat |editovat zdroj]
  • 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

[editovat |editovat zdroj]

Externí odkazy

[editovat |editovat zdroj]
Portály:Internet
Citováno z „https://cs.wikipedia.org/w/index.php?title=WebAssembly&oldid=24980775
Kategorie:
Skryté kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp