Cos'è ASM.js e cosa significa per tutti?

27

Sto iniziando a sentire rumori riguardo a questo progetto chiamato ASM.js . Attualmente il loro sito web è terribile e confuso. Ecco quello che so dalla mia ricerca sul web.

  • È un sottoinsieme di JavaScript che può essere altamente ottimizzato. Sto indovinando perché evita le parti più dinamiche della lingua.
  • Le prestazioni del codice compilato su ASM.js vengono eseguite a circa metà della velocità di C (non chiaro).
  • L'intenzione è che i compilatori facciano la loro lingua di destinazione ASM.js.
  • Firefox verrà distribuito con l'ottimizzazione di ASM.j.
  • I team di Mozilla e Unreal hanno portato su Unreal Engine al Web con esso e la sua esecuzione in una build di Firefox a velocità quasi nativa.

Non sembrano esserci informazioni concrete sul web su cosa sia veramente o sull'utilità o il fine ultimo. È che posso compilare le mie basi di codice altrimenti lato server e farlo funzionare nel browser a velocità ravvicinate? Quali sono le implicazioni per gli sviluppatori?

    
posta Jarrod Nettles 27.03.2013 - 20:23
fonte

2 risposte

21

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.
risposta data 27.03.2013 - 21:08
fonte
4

Immagina ASM.js come un grande ArrayBuffer binario chiamato heap e un insieme di moduli JavaScript, che iniziano con una direttiva prologo: "use asm"; ed eseguono operazioni veloci a basso livello su dati binari non elaborati, simili ai linguaggi di assemblaggio. Questi moduli potrebbero essere scritti a mano o meglio compilati dal codice LLVM da script come Emscripten. Le loro prestazioni potrebbero essere potenziate grazie al motore Mozilla OdinMonkey, ma sono compatibili con le versioni precedenti della maggior parte dei moderni interpreti ECMAScript.

ASM.js non è limitato ai giochi, puoi persino eseguire intere app Qt nel tuo browser, come questi !

    
risposta data 01.04.2013 - 01:18
fonte

Leggi altre domande sui tag