Attualmente il suo target di esecuzione è il browser , ma in un prossimo futuro potrebbe tranquillamente girare su sistemi operativi mobile, come ChromeOs e WebOS, ma anche su server e app desktop. Per non parlare poi di applicazioni 3D che sfruttano le GPU ed hanno bisogno di prestazioni elevatissime.

WebAssembly è lo standard W3C per eseguire codice macchina in formato binario all’interno del browser . Progettato per lavorare in perfetta simbiosi con javascript, fornisce al browser nuove pontezialitá e frontiere da esplorare. Tutto parte con Emscripten, che rese possibile eseguire codice C++ all’interno del browser. Ma il codice generato era ancora lento a confronto di quello nativo.

WebAssembly potrebbe avere un futuro splendente in questi scenari:

codice ad alte prestazioni già esistente, da incorporare all’interno di una web app;

codice ad alte prestazioni da scrivere da zero, in tutti quei casi dove le prestazioni di javascript non sono sufficienti;

il porting di applicazioni desktop sul web, Autocad ed il motore 3D Unity, solo per citarne un paio, sfruttano giá WebAssembly per i loro prodotti web based.

Attualmente i linguaggi che possono essere compilati in WebAssembly sono Rust, C/C++, Kotlin/Native, Go e D.

Esistono anche dei tool di terze parti che permettono a .Net e Java di compilare su bytecode wasm.

Per quanto riguarda linguaggi interpretati come Python e Ruby, vi sono degli interpreti scritti in WebAssembly che ne permettono l’esecuzione.

Rust al momento sembra essere il linguaggio meglio supportato. Questo grazie anche al fatto di essere un prodotto di “mamma” Mozilla.

In combinata con Firefox Developer Edition si possono testare le ultime features di WebAssembly.

LE INTERNET NATIVE APPLICATIONS

Grazie a WebAssembly ed altre tecnologie come WebWorkers, IndexDB, a nuovi protocolli come HTTP/2 e QUIC, ci stiamo muovendo verso nuove inesplorate praterie: le Internet Native Applications.

Applicazioni web con le performance di app native, portando a convergenza il meglio di entrambi i mondi.

WebAssembly non è qui per rimpiazzare javascript, bensì per lavorare in simbiosi ad esso, andando a migliorare, e sostanzialmente, i suoi talloni d’Achille.

Anche per Brendan Eich, l’inventore di javascript, WebAssembly è una rivoluzione copernicana, uno degli sviluppi piú interessanti del web che ha visto negli ultimi anni.

Per quanto riguarda l’adozione di tale tecnologia, la situazione fotografata dal sito “Can I use” a partire da marzo 2018, rileva che il 72.75% dei browser a livello globale supporta WebAssembly.

I PROSSIMI STEP DI WEBASSEMBLY

A detta di Mozilla, attivamente impegnata in prima persona nello sviluppo, i prossimi step del linguaggio saranno

multithreading (per sfruttare appieno i processori multi core)

(per sfruttare appieno i processori multi core) simd (tecnica per processare dati in parallelo, come? dividendoli in sezioni, su cui far eseguire la stessa funzione da processi diversi nello stesso lasso di tempo, simile al concetto di map/reduce)

(tecnica per processare dati in parallelo, come? dividendoli in sezioni, su cui far eseguire la stessa funzione da processi diversi nello stesso lasso di tempo, simile al concetto di map/reduce) 64bit wasm

streaming compilation (compilazione del codice al volo, mentre lo stiamo ancora scaricando)

(compilazione del codice al volo, mentre lo stiamo ancora scaricando) tiered compilation (una seconda compilazione una volta scaricato tutto il codice, molto più performante ma allo stesso tempo più lenta)

(una seconda compilazione una volta scaricato tutto il codice, molto più performante ma allo stesso tempo più lenta) caching http implicito

veloce interazione tra js e wasm

tra e facile e veloce scambio dati tra js e wasm

tra e integrazione moduli ES (per importare i moduli wasm come fossero js)

WebAssembly è sicuramente una tecnologia molto promettente, che apre scenari fino a poco tempo fa inimmaginabili e che rivoluzionerà lo sviluppo del web e delle app in generale. Qui in Interlogica lo stiamo attentamente valutando per le prossime sfide future.

#RustWasm2019