12/02/2021
Emscripten: strumento a supporto di WebAssembly
Non sarebbe una novità oggi constatare che, in confronto al passato, il browser non serva solamente più a navigare in Internet, ma a sua volta svolge funzioni che un tempo erano delegate ad applicazioni dedicate, tramite le Web Application (uno dei maggiori prodotti di Wonderlab).
Taluni pensano, addirittura, che il browser sia diventato una specie di "sistema operativo", offrendo un'enormità di servizi alle applicazioni ed essendo, generalmente, software di una complessità piuttosto ingente (basti pensare che il codice sorgente di Chrome o Firefox è di svariate centinaia di megabyte).
Le Web Application, eseguendosi tramite browser, diventano automaticamente "multipiattaforma", non necessitando di ricompilazioni oppure dell'installazione di una macchina virtuale, come avviene per Java. Dunque, a titolo di esempio, nessuna installazione o eseguibili diversi per Windows, Mac, Linux, ecc. Nonostante i diversi vantaggi attestati fin dall’inizio, nel tempo è emerso un limite da non sottovalutare: non poter usare linguaggio al di fuori di Javascript per una Web application interattiva. Tale problematica poneva fuori uso l'immensità di codice e librerie scritte in linguaggi come C e C++, o non permetteva il porting di un'applicazione preesistente, scritta in un altro linguaggio di programmazione, al Web. Recentemente oltre a Javascript, ai maggiori browser si è aggiunto WebAssembly, che usa bytecode e non più codice sorgente, facendo diventare il browser una "macchina virtuale" a tutti gli effetti. Naturalmente, scrivere direttamente in assembly può essere molto tedioso oltre che molto complesso per chi non ne ha esperienza.
A tal fine, è stato ideato e sviluppato a supporto il progetto emscripten.
Infatti, Emscripten fornisce il supporto a WebAssembly e Javascript ad LLVM, la backend che genera il codice macchina vero e proprio per compilatori (come Clang).
Questo permette, ad esempio, di usare Clang per compilare un programma in C o C++ in Javascript o WebAssembly, e di eseguirlo nel browser come Web application. Ancora, essendo presente un porting della libreria SDL, sono stati ricompilati videogiochi scritti in C e C++ ed eseguiti sul browser; è stato addirittura portato AutoCAD al Web.
Emscripten ha davvero un potenziale enorme ed è uno strumento che potrebbe sempre più aumentare la convergenza sul browser.