Vés al contingut

WebAssembly

De la Viquipèdia, l'enciclopèdia lliure
Infotaula de llenguatge de programacióWebAssembly
Tipusbytecode, plataforma informàtica, format de fitxer i expression-oriented programming language (en) Tradueix Modifica el valor a Wikidata
Data de creació2015 Modifica el valor a Wikidata
DissenyWorld Wide Web Consortium Modifica el valor a Wikidata
DesenvolupadorWorld Wide Web Consortium, Mozilla, Microsoft, Google i Apple Inc Modifica el valor a Wikidata
Paradigma de programacióllenguatge imperatiu, programació estructurada i stakema programat Modifica el valor a Wikidata
Darrera versió estable2.0 () Modifica el valor a Wikidata
Influenciat perasm.js i Google Native Client (en) Tradueix Modifica el valor a Wikidata
Extensió dels fitxerswast i wasm Modifica el valor a Wikidata
Codi fontCodi font i Codi font Modifica el valor a Wikidata
Llicènciallicència Apache Modifica el valor a Wikidata
Etiqueta d'Stack ExchangeEtiqueta Modifica el valor a Wikidata
Pàgina webwebassembly.org Modifica el valor a Wikidata

WebAssembly (o Wasm) és un format de codi de bytes (un llenguatge de programació de baix nivell) per estendre les pàgines web amb programes que s'executen en els navegadors. Malgrat haver sorgit com una evolució de JavaScript, el seu objectiu és servir de llenguatge resultant de la compilació de molts llenguatges d'alt nivell, començant per C i C++.[1] En anglès, "WebAssembly" vol dir "llenguatge d'assemblador web".

Disseny

[modifica]

WebAssembly és una màquina de pila que executa codi que és portable[2] i alhora més ràpid d'analitzar i d'executar que JavaScript.[1]

Història

[modifica]

WebAssembly es va anunciar el 17 de juny del 2015[3] i es va presentar el 15 de març del 2016 executant el videojoc Angry Bots de Unity dins dels navegadors Firefox,[4] Chromium, Google Chrome,[5] i Microsoft Edge.[6]

Segons el lloc web Can I use, la majoria dels navegadors en ús ja són compatibles amb WebAssembly.[7]

Desenvolupament

[modifica]

La implementació inicial de WebAssembly en els navegadors es va basar en les característiques presents al llenguatge asm.js.[8] Després de publicar l'MVP, el pla és afegir-hi la recollida de memòria brossa,[9][10] cosa que permetria compilar a WebAssembly els llenguatges que la necessiten, com ara Java i C#. A l'equip que treballa en WebAssembly hi ha gent de Mozilla, Microsoft, Google i Apple.[11]

Representació

[modifica]

El març del 2017, el grup comunitari de WebAssembly al W3C va acabar de consensuar-ne el format binari inicial (MVP), l'API de JavaScript i l'intèrpret de referència.[12] A més del format binari de WebAssembly, que no està dissenyat perquè l'utilitzin els humans, també s'hi defineix un format textual similar als llenguatges d'assemblador que els humans poden llegir més fàcilment.

La taula següent conté un exemple dels diferents formats: a l'esquerra hi ha el codi font original escrit en el llenguatge C, al centre el mateix programa en el format WebAssembly textual resultant de la compilació i a la dreta en format WebAssembly binari hexadecimal:[13]

C Wasm textual Wasm binari
int factorial(int n) {
 if (n == 0)
 return 1;
 else
 return n * factorial(n-1);
}
get_local 0
i64.eqz
if 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

Referències

[modifica]
  1. 1,0 1,1 «WebAssembly High-Level Goals». GitHub / WebAssembly / design, 11-12-2015.
  2. «Design Rationale». GitHub / WebAssembly / design, 01-10-2016.
  3. «Launch bug», 11-06-2015.
  4. Wagner, Luke. «A WebAssembly Milestone: Experimental Support in Multiple Browsers», 14-03-2016.
  5. Thompson, Seth. «Experimental support for WebAssembly in V8», 15-03-2016.
  6. Zhu, Limin. «Previewing WebAssembly experiments in Microsoft Edge», 15-03-2016.
  7. «WebAssembly». Can I use. [Consulta: 11 agost 2017].
  8. «WebAssembly: a binary format for the web». ②ality – JavaScript and more, 18-06-2015.
  9. «WebAssembly/design». Arxivat de l'original el 4 abril 2017. [Consulta: 28 desembre 2015].
  10. «WebAssembly/gc».
  11. Bright, Peter. «The Web is getting its bytecode: WebAssembly». Ars Technica. Condé Nast, 18-06-2015.
  12. «Roadmap», 01-03-2017.
  13. ; rossberg-chromium; kripken; titzer; s3ththompson«Text Format». GitHub, 09-03-2017.

Enllaços externs

[modifica]