NectarJS, compila il tuo JS in codice nativo

In questo articolo Adrian Thierry ci parla di NectarJS, questo progetto un po' folle apparso di recente su KickStarter permette di compilare codice JavaScript nativamente su qualsiasi piattaforma, in WebAssembly o anche in ASM.js.

Ciao Adrien, e grazie per questa intervista, ti propongo innanzitutto di presentarti:

Ciao Mathieu, sono un imprenditore francese, esperto di sicurezza informatica e appassionato di nuove tecnologie. Ho fondato Seraum, una società di consulenza e formazione sulla sicurezza IT, 5 anni fa. In particolare ho condotto diverse ricerche sulla sicurezza dei pagamenti online e sulla sicurezza degli accessi in generale. Sviluppo diverse soluzioni di sicurezza e le prove in tempo hackmyfortress.com, una sfida di hacking che offre 30 000 $ chiunque riesca ad hackerarlo.

Puoi spiegarci cos'è NectarJS?

NectarJS è un compilatore JavaScript multipiattaforma in SAASo CAAS (Compiler As A Service). Ti consente di compilare JavaScript da qualsiasi piattaforma, su qualsiasi piattaforma. Attualmente è possibile compilare su Windows (32 e 64 bit), Linux (32, 64 bit e ARM), Arduino (UNO e Mega), in WebAssembly et ASM.JS. È quindi possibile compilare JavaScript da un Rasbperry PI 3 a un Arduino. Sto parlando di compilazione, il risultato ottenuto è un file binario eseguibile o firmware specifico per la piattaforma di destinazione. Puoi anche compilare dal tuo telefono Android su Windows o Linux. La piattaforma di sviluppo non è più un ostacolo. All'interno di un team di sviluppatori, non sarà più necessario preoccuparsi di una tale versione di VM o di un tale ambiente di test o compilazione.

NetarJS in azione
nettare
Tutto questo funziona già e può essere testato con un semplice browser: http://nectar-lang.com

Come ti è venuta l'idea per questo progetto?

Facendo benchmark: ho scoperto Cristallo, che ti permette di compilare codice molto vicino a Ruby. Il risultato compilato è 5-10 volte più veloce di NodeJS sulle richieste HTTP. Avevo 2 scelte per aumentare la velocità, migrare il mio stack NodeJS su Crystal (che è limitato a Linux) o compilare JavaScript per aumentare la velocità. Ho optato per la seconda scelta e ho ottenuto risultati incoraggianti molto rapidamente. Vari benchmark hanno confermato le mie scelte e mi hanno spinto a continuare lo sviluppo. Ho pubblicato una notizia casuale su Hacker News che ha fatto scalpore (137 punti e 78 commenti).

Questo progetto sembra davvero troppo folle per essere vero, puoi spiegarci un po' come funziona senza dare l'intera ricetta?

NectarJS crea un AST (albero della sintassi astratto) e da esso genera un linguaggio intermedio (IL) che può quindi essere compilato su qualsiasi piattaforma. Il client NectarJS, installato sulle macchine che desiderano compilare, crittograferà semplicemente il codice e lo invierà ai server per la compilazione.

Quali sono le attuali limitazioni del progetto, posso compilare la mia applicazione Node/Express?

Non ancora, siamo all'inizio dello sviluppo e abbiamo ancora molte librerie da codificare o trascrivere. Possiamo già compilare alcuni pezzi della libreria FS (FileSystem) o Process di NodeJS, ma c'è ancora molta strada da fare. Alla fine, non ci saranno limitazioni. Intendiamo compilare completamente JavaScript secondo lo standard ES5, quindi su ES6 ed ES7. Abbiamo anche l'algoritmo che ci permette di compilare “eval()” o “this.”.

Come eseguirei il debug della mia applicazione compilata in modo nativo?

Ci saranno diversi modi per eseguire il debug dell'applicazione. Il browser, tramite WebAssembly, può essere un modo semplice per analizzare il funzionamento del suo codice con gli strumenti di uso quotidiano. Abbiamo anche in programma di integrare in NectarJS tutti gli strumenti di tracciamento e debug, che consentiranno la compilazione in modalità debug e faciliteranno le indagini. Vogliamo davvero democratizzare lo sviluppo e faremo di tutto per renderlo il più semplice ed efficiente possibile.

Pensi che il tuo progetto potrebbe eventualmente sostituire le lingue native delle app mobili?

Se ampiamente adottato, potrebbe sostituire molte cose: sviluppo mobile, ma anche sviluppo per IoT, sviluppo server, sviluppo web... Con NectarJS, JavaScript diventa universale ed efficiente. Chiunque può programmare con qualsiasi cosa, la potenza di calcolo non ha importanza poiché sono i server NectarJS a fare il lavoro. NectarJS riduce anche il consumo di energia e di fatto rende l'informatica più ecologica.

È anche possibile consentire a persone con mezzi limitati di programmare: un semplice Raspberry permette di sviluppare per qualsiasi tipo di piattaforma con NectarJS.

NectarJS consente a uno sviluppatore JavaScript di essere efficiente quanto uno sviluppatore di basso livello. Alcuni benchmark mostrano che alcune operazioni matematiche compilate con NetarJS è più veloce di C.
NectarJS può essere utilizzato anche in ambienti in cui la velocità è un fattore chiave di successo (trading algoritmico, ecc.).

Il progetto ha già avuto molto successo?

Siamo in contatto con aziende che vogliono utilizzare NectarJS ogni giorno. Avviare una community da zero è molto complesso e la campagna di crowdfunding su KickStarter mi consente di vedere i problemi di comunicazione e la resistenza degli sviluppatori al cambiamento. Per molti, JavaScript non è un linguaggio di programmazione ma un linguaggio di scripting. Tuttavia, Paypal e altri grandi gruppi utilizzano JavaScript con NodeJS su base giornaliera. Sono in contatto con diversi noti sviluppatori della comunità JavaScript (NativeScript per esempio), che supportano il progetto. Molte persone pensano che sia falso, il che è un peccato.
NectarJS ha fatto scalpore in Giappone, ad esempio, ed è stato trasmesso su molti siti di notizie in brevissimo tempo. Ora sto cercando di fare lo stesso negli Stati Uniti e in Europa.

Se il progetto KickStarter funziona, quali sarebbero i prossimi passi?

Termina la compilazione dello standard JavaScript ES5, quindi passa a NodeJS. Allo stesso tempo, aggiungeremo molto rapidamente alla compilation le piattaforme mancanti (Mac Os, Arduino vari e piattaforme di sviluppo). Creeremo anche un mercato per gli sviluppatori per donare o vendere codice o librerie. L'obiettivo della campagna è consentire alla comunità di sviluppatori di scegliere i prossimi miglioramenti di NectarJS.
Nel caso in cui la campagna fallisca, abbiamo investitori privati ​​come backup, ma le scelte di sviluppo saranno fatte in via prioritaria per le loro esigenze.

L'ultima parola?

A tutti coloro che amano JavaScript o che sono appassionati di tecnologia, robotica o AI, non esitate a far circolare le informazioni e la campagna di crowdfunding: http://kickstarter.com/projects/adrien-thierry/nectarjs-compile-javascript-for-and-from-any-devic
Grazie mille per questa intervista Adrien e buona fortuna per il tuo progetto.
Matteo Bretone, CTO di JS-Repubblica.
[actionbox color=”default” title=”” description=”JS-REPUBLIC è una società di servizi specializzata nello sviluppo di JavaScript. Siamo un centro di formazione riconosciuto. Trova tutta la nostra formazione tecnica sul nostro sito partner dedicato alla Formazione” btn_label=”La nostra formazione” btn_link=”http://training.ux-republic.com” btn_color=”primary” btn_size=”big” btn_icon=”star” btn_external =”1″]