WebAssembly

WebAssembly (Wasm, WA) è uno standard web che definisce un formato binario e un corrispondente formato testuale per la scrittura di codice eseguibile nelle pagine web. Ha lo scopo di abilitare l'esecuzione del codice quasi alla stessa velocità con cui esegue il codice macchina nativo. È stato…

WebAssembly (Wasm, WA) è uno standard web che definisce un formato binario e un corrispondente formato testuale per la scrittura di codice eseguibile nelle pagine web. Ha lo scopo di abilitare l'esecuzione del codice quasi alla stessa velocità con cui esegue il codice macchina nativo. È stato progettato come integrazione di JavaScript per accelerare le prestazioni delle parti critiche delle applicazioni Web e in seguito per consentire lo sviluppo web in altri linguaggi oltre a JavaScript. È sviluppato dal World Wide Web Consortium (W3C) con ingegneri provenienti da Mozilla, Microsoft, Google e Apple.

Viene eseguito in una sandbox nel browser Web dopo una fase di verifica formale. I programmi possono essere compilati da linguaggi di alto livello in moduli Wasm e caricati come librerie dalle applet JavaScript.

Progettazione

Il codice WebAssembly è concepito per essere eseguito su una stack machine portabile strutturata e astratta, progettato per essere più veloce da analizzare di JavaScript e più veloce da eseguire e per consentire una rappresentazione molto compatta del codice.

Storia

Le tecnologie precorritrici "vendor-specific" sono state Google Native Client (NaCl) e asm.js.

L'implementazione iniziale del supporto di WebAssembly nei browser era basata sul set di funzionalità di asm.js.

È stato annunciato per la prima volta il 17 giugno 2015 e il 15 marzo 2016 è stata dimostrata l'esecuzione di Unity's Angry Bots in Firefox, Chromium, Google Chrome, e Microsoft Edge. Nel marzo 2017, la progettazione del prodotto minimo vitale è stata dichiarata completata e la fase di anteprima conclusa. Alla fine di settembre 2017, è stato rilasciato il supporto in Safari 11. A partire da marzo 2019, il sito Can I use rileva che il 81.41% dei browser a livello globale supporta WebAssembly (e indirettamente, attraverso polyfill, altri browser sono supportati). Nel febbraio 2018 il WebAssembly Working Group ha pubblicato tre bozze di lavoro per Core Specification, JavaScript Interface, e Web API.

Supporto

Mozilla ha dichiarato il supporto "in tutti i principali browser", per esempio è stato abilitato di default anche in Edge 16.

Per compatibilità con le versioni precedenti, Wasm può essere compilato in asm.js da un'applet JavaScript (il cosiddetto polyfill) ed eseguito su browser incompatibili in questo modo.

Emscripten può compilare in Wasm usando LLVM nel backend.

Il suo obiettivo iniziale è supportare la compilazione da C e C++, tuttavia sta emergendo anche il supporto per altri linguaggi come Rust. Dopo il rilascio del prodotto minimo vitale (MVP, minimum viable product), è previsto il supporto della garbage collection che renderebbe WebAssembly una destinazione di compilazione per i linguaggi di programmazione come Java e C#.

Rappresentazione

Nel marzo 2017, il WebAssembly Community Group ha raggiunto il consenso sul formato binario iniziale (MVP), sull'API JavaScript e sull'interprete di riferimento. Esso definisce un formato binario di WebAssembly, che non è progettato per essere utilizzato dagli esseri umani, così come un formato bytecode lineare scrittura di assembly leggibile dall'uomo che assomiglia ai tradizionali linguaggi assembly.

La tabella seguente rappresenta tre diverse viste dello stesso codice sorgente così come immesso (a sinistra), convertito in una rappresentazione intermedia Wasm (al centro), e infine in formato binario Wasm:

Il formato di testo di WebAssembly può anche essere scritto in un formato compatto usando le s-expressions. Questo formato è puramente uno zucchero sintattico e non presenta differenze comportamentali con il formato lineare. Un esempio è mostrato di seguito:

Video: DotJS 2017- Sean Larkin - Webpack-WebAssembly- Under the hood — dotconferences — CC BY 3.0 — Wikimedia Commons

Servizi correlati

Altre voci

Libero (portale)L

Libero (portale)

Libero è un portale italiano di proprietà di Italiaonline, fondato da Infostrada con il nome di Italia On Line nel 1994 come sito di assistenza agli utenti nella navigazione Internet (al tempo, ancora a pagamento) e nella configurazione della posta elettronica.

Leggi la voce →
S

Sviluppatore web

In informatica, lo sviluppatore web (o in inglese web developer) è una figura professionale che si occupa dello sviluppo di applicazioni web, in particolare dello sviluppo del codice sorgente di programmazione, dell'ottimizzazione dei database e dei linguaggi di markup attraverso tecniche di…

Leggi la voce →
BrowserB

Browser

In informatica il browser Web (o semplicemente browser /ˈbraʊzə(r)/), in italiano navigatore in rete, è un'applicazione usata principalmente per l'acquisizione, la presentazione e la navigazione di risorse sul Web. Tali risorse (come pagine web, immagini o video) sono messe a disposizione sul…

Leggi la voce →
W

Web manager

Il web manager è il responsabile del coordinamento di un progetto web che può essere lo sviluppo di un semplice sito web statico o di una complessa applicazione per il web. Normalmente lavora in una web agency o in un'agenzia di comunicazione. Può, tuttavia, essere anche una figura professionale…

Leggi la voce →
Fandom (sito web)F

Fandom (sito web)

Fandom (precedentemente Wikicities, poi Wikia) è un servizio di web hosting gratuito e dominio gestito da Fandom Inc., che consiste in una collezione di wiki della società Fandom Inc. Creata nel 2004 da Jimmy Wales e da Angela Beesley, guidata da Perkins Miller come amministratore delegato.

Leggi la voce →
Genius (sito web)G

Genius (sito web)

Genius (precedentemente Rap Genius) è un sito internet dedicato alla spiegazione e all'interpretazione di testi musicali, in particolare testi hip hop.

Leggi la voce →