Esiste un compilatore di codice macchina nativo per JavaScript?

Esiste un compilatore di codice macchina nativo per JavaScript? Non sto parlando di una VM. Se non esiste può essere fatto?
Mi chiedo se possa essere compilato in binario a causa della natura dynamic della lingua.

Per quanto ne so, non ci sono compilatori statici per JavaScript. È certamente teoricamente ansible; tuttavia, una compilazione statica di JavaScript richiede un runtime molto pesante per supportare tutte le sue funzionalità (come la digitazione dynamic e l’eval). A parte il piccolo, quando si presentava la necessità di compilare staticamente Python (un altro linguaggio dinamico), gli sviluppatori PyPy hanno finito per creare un linguaggio che era un sottoinsieme molto ristretto di Python (chiamato RPython), privo di alcune delle più dinamiche funzionalità di Python, che era in grado di essere compilato staticamente.

Se lo stai chiedendo allo scopo di creare un eseguibile standalone dal codice JavaScript, sono sicuro che ci devono essere wrapper che essenzialmente creerebbero un eseguibile contenente il tuo script e una VM JavaScript incorporata (purtroppo, non ne conosco a priori ).

È sicuramente fattibile, anche se l’unico modo in cui so come farlo al momento è un processo in due fasi …

  1. Compilare il javascript in Java usando Mozilla Rhino JSC .
  2. Compilare il file di class java risultante in eseguibile usando qualcosa come GCJ di GNU .

Perché vorresti, però? Quale vantaggio ti aspetti di trovare?

Il motore di Google V8 compila JavaScript nel codice macchina nativo. Questa funzione è utilizzata nel compilatore EncloseJS che ho scritto per i progetti node.js e io.js.

Nota che tutte queste soluzioni sono DOM meno, quindi nessuna libreria come angular.js o jquery , solo underscore.js / lodash

Seguendo la risposta di Falaina , PyPy ha un valore per JavaScript

Inoltre, Appcelerator Titanium ha un js > JavaBit > android

Infine, node.js può usare nexe Explained in questa altra risposta

È teoricamente ansible, ma ci sarà molto bagaglio di supporto in runtime coinvolto (e persino un compilatore o interprete Javascript completo per supportare eval ).

Stai cercando un compilatore di codice nativo o stai cercando qualcosa che possa unire codice Javascript insieme a un runtime in un unico binario eseguibile?

Sono sicuro che Microsoft ha un compilatore Jscript (“Microsoft’s javascript”) scaricabile

se hai windows: Se scrivi un file di testo javascript puoi compilarlo: aprendo il prompt dei comandi usando cd per arrivare alla directory del file di testo (se hai windows) scrivi: C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ jsc.exe textfile.js

altrimenti: scarica un compilatore jscript digita la directory del compilatore jscript e poi il nome del file di testo javascript

è ansible aggiungere variabili di ambiente se non si desidera digitare l’intero nome della directory nel compilatore.

questo ragazzo lo spiega meglio: http://www.phpied.com/make-your-javascript-a-windows-exe/

Personalmente penso che sia davvero fantastico. Spero solo che ci fosse più documentazione per questo.

Sono abbastanza sicuro che sia quello che stai cercando, ma sono un po ‘nuovo.

TraceMonkey in FF3.5 fallo in alcune parti del codice javascript. Potresti essere in grado di ottenere alcune indicazioni da lì!

Il compilatore AOT di Adobe AIR per iOS compila staticamente un superset di JavaScript chiamato Actionscript 3.0 fino al bytecode ABC, quindi il codice macchina tramite LLVM. Se dovessi scrivere il tuo codice AS3 senza classi e senza annotazioni di tipo, sarebbe essenzialmente JavaScript, e quindi il compilatore sarebbe felice di compilarlo fino al codice macchina. Purtroppo questo non è un software open source e non si ha accesso a nessun DOM (a cui molti pensano quando pensano di JavaScript) perché è in esecuzione essenzialmente in un’istanza di Flash Player.