WebAssembly
Tipus | bytecode, plataforma informàtica, format de fitxer i expression-oriented programming language (en) |
---|---|
Data de creació | 2015 |
Disseny | World Wide Web Consortium |
Desenvolupador | World Wide Web Consortium, Mozilla, Microsoft, Google i Apple Inc |
Paradigma de programació | llenguatge imperatiu, programació estructurada i stakema programat |
Darrera versió estable | 2.0 () |
Influenciat per | asm.js i Google Native Client (en) |
Extensió dels fitxers | wast i wasm |
Codi font | Codi font i Codi font |
Llicència | llicència Apache |
Etiqueta d'Stack Exchange | Etiqueta |
Pàgina web | webassembly.org |
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,0 1,1 «WebAssembly High-Level Goals». GitHub / WebAssembly / design, 11-12-2015.
- ↑ «Design Rationale». GitHub / WebAssembly / design, 01-10-2016.
- ↑ «Launch bug», 11-06-2015.
- ↑ Wagner, Luke. «A WebAssembly Milestone: Experimental Support in Multiple Browsers», 14-03-2016.
- ↑ Thompson, Seth. «Experimental support for WebAssembly in V8», 15-03-2016.
- ↑ Zhu, Limin. «Previewing WebAssembly experiments in Microsoft Edge», 15-03-2016.
- ↑ «WebAssembly». Can I use. [Consulta: 11 agost 2017].
- ↑ «WebAssembly: a binary format for the web». ②ality – JavaScript and more, 18-06-2015.
- ↑ «WebAssembly/design». Arxivat de l'original el 4 abril 2017. [Consulta: 28 desembre 2015].
- ↑ «WebAssembly/gc».
- ↑ Bright, Peter. «The Web is getting its bytecode: WebAssembly». Ars Technica. Condé Nast, 18-06-2015.
- ↑ «Roadmap», 01-03-2017.
- ↑ ; rossberg-chromium; kripken; titzer; s3ththompson«Text Format». GitHub, 09-03-2017.