Internet

Nasce WebAssembly, nuovo formato binario per il Web

Google, Microsoft, Mozilla e altri ingegneri del progetto WebKit hanno annunciato di aver unito le forze per lanciare WebAssembly, un nuovo formato binario per la compilazione di applicazioni per il web. Il web vive di norme e, nel bene e nel male, JavaScript è il suo linguaggio di programmazione. Nel corso degli anni, però, abbiamo visto sempre più sforzi per consentire agli sviluppatori di lavorare attorno ad alcune delle limitazioni di JavaScript con la costruzione di compilatori che convertono codice in altre linguaggi diversi da JavaScript.

Alcuni di questi progetti si concentrano sull’aggiunta di nuove funzionalità al linguaggio (come TypeScript di Microsoft) o all’accelerazione di JavaScript (come asm.js di Mozilla). Ora, molti di questi progetti stanno iniziando a riunirsi sottoforma di WebAssmbly.

Il nuovo formato è destinato a consentire ai programmatori di compilare il loro codice per il browser (attualmente il focus è sul C/C ++, con altri linguaggi presto in arrivo), dove viene poi eseguito all’interno del motore JavaScript. Invece di dover analizzare il codice completo, cosa che spesso può richiedere molto tempo (soprattutto sul cellulare), WebAssembly può essere decodificato molto più velocemente.

webassembly-google-internet-informatblog

L’idea è che WebAssembly fornirà agli sviluppatori un singolo target di compilazione per il web che, alla fine, diventerà uno standard web implementato in tutti i browser.

I file JavaScript sono semplici file di testo scaricati dal server e analizzati e compilati dal motore JavaScript direttamente nel browser. Il team WebAssembly deciso usare un formato binario perché tale codice può essere compresso anche più dei file di testo standard JavaScript e perché è molto più veloce per il motore decodificare il formato binario (fino a 23 volte più veloce nel prototipo attuale) rispetto al parsing del codice asm.js, per esempio.

Asm.js di Mozilla ha da tempo l’obiettivo di portare velocità al web. Il Progetto di Google Native Client per l’esecuzione di codice nativo nel browser aveva obiettivi simili, ma ha avuto relativamente poca spinta. Sembra che WebAssemly possa essere in grado di portare adesso il meglio di questi progetti sul browser.

Come primo passo, il team di WebAssembly si propone di offrire circa le stesse funzionalità di asm.js (e gli sviluppatori saranno in grado di utilizzare lo stesso strumento Emscripten per WebAssembly che utilizzano per la compilazione del codice asm.js oggi).

In questa fase iniziale, il team prevede anche di lanciare una cosiddetta libreria polyfill che tradurrà il codice WebAssembly in JavaScript in modo che possa essere eseguito su qualsiasi browser – anche quelli senza supporto WebAssembly nativo (che è ovviamente un po’assurdo, ma questo passo non sarà più necessario quando i browser potranno eseguire questo codice nativamente). Nel corso del tempo poi, i team costruiranno più strumenti (compilatori, debugger, ecc) e aggiungeranno il supporto per più linguaggi (Rust, Go e C#, per esempio).

Come inventore di Javascript (e CEO di Mozilla per un po’) Brendan Eich ha sottolineato che una volta che i principali browser supporteranno il nuovo formato nativo, JavaScript e WebAssembly potranno divergere di nuovo.

Il team sottolinea che l’idea qui non è di sostituire JavaScript, tra l’altro, ma di consentire a molti più linguaggi da essere compilati per il Web. Infatti, è probabile che sia JavaScript che WebAssembly verranno utilizzati fianco a fianco, e alcune parti delle applicazioni così progettate potranno utilizzare i moduli WebAssembly (animazione, visualizzazione, compressione, ecc), mentre l’interfaccia utente sarà ancora in gran parte scritta in JavaScript, per esempio.

Non capita spesso di vedere tutti i principali produttori di browser al lavoro insieme su un progetto come questo, quindi sarà sicuramente qualcosa di cui varrà la pena fare attenzione nei mesi e anni a venire. (Fonte)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Le guide più interessanti