Hai già descritto cosa è . L'uso è che si tratta di un linguaggio di basso livello che funziona tra i vari tutti , è abbastanza veloce nella maggior parte e molto veloce in alcuni. Ciò che rendi di questo è aperto come quello che fai con qualsiasi altro linguaggio di programmazione.
Il caso d'uso su cui Mozilla sembra più appassionato è questo: esistono già modi per compilare linguaggi con backend LLVM (in particolare C e C ++) su JavaScript, tramite Emscripten. asm.js è molto vicino a ciò che Emscripten già emette, quindi questo permette al codice Emscripten (che è già straordinariamente veloce sui compilatori JIT JavaScript attuali) di diventare ancora più veloce, promuovendo l'obiettivo di trasferire basi di codice esistenti sul web. Ancora una volta, per cosa la usi esattamente è la tua decisione. Porting games è un caso d'uso (a cui è apparentemente coinvolto attivamente Mozilla), ma ci sono innumerevoli cose scritte in C e C ++, alcune delle quali potrebbero rivelarsi utili per il sito web di qualcuno. Alcuni che ho visto gironzolare intorno (più alcuni dei miei progetti), senza alcuna garanzia di fattibilità:
- Porting di algoritmi per scopi generali (ad esempio implementazioni di zlib, libjpeg, openssl, FFT) per consentire a JavaScript / siti Web di fare di più, senza dover creare un nuovo standard Web e in base ai singoli browser per implementarlo.
- Porting degli interpreti, in modo che le lingue diverse da JavaScript possano essere eseguite nel browser, con un sovraccarico minore e uno sforzo di porting minimo.
- Usare asm.js come back-end per più compilatori, specialmente quelli che non si adattano bene a JavaScript e non hanno bisogno della maggior parte delle sue funzionalità e sovraccarico. Un esempio potrebbe essere un linguaggio progettato per un lavoro numerico veloce senza allocazione di memoria.
- Utilizzare asm.js per creare un JIT in JavaScript. Può implementare qualsiasi lingua - ad esempio ActionScript .
- Allo stesso modo, il porting dei compilatori JIT esistenti per l'esecuzione nel browser (vedi porting interpreti, con un overhead effettivamente nullo su JS). Questo è probabilmente possibile solo quando i compilatori JIT vengono generati automaticamente, come con PyPy.