ES6 con io.js

io.js integra al suo interno una versione moderna del motore V8. Rimanendo aggiornati con le ultime versioni di questo motore, possiamo rendere disponibili le nuove caratteristiche delle specifiche JavaScript ECMA-262 agli sviluppatori io.js in modo rapido, assieme ai continui miglioramenti nella stabilità e nelle prestazioni.

La versione 3.3.1 di io.js viene rilasciata con la versione 4.4.63.30 del motote V8, che include caratteristiche di ES6 più avanzate rispetto alla versione 3.26.33 che è stata rilasciata assieme a joyent/node@0.12.x.

Il flag --harmony non è più necessario

Con joyent/node@0.12.x (V8 3.26), il flag di runtime --harmony abilita le caratteristiche di ES6 completed, staged ed in progress tutte insieme, in blocco (con l'eccezione delle semantiche non-standard, non-harmony per typeof, che sono abilitate dal flag --harmony-typeof). Ciò implica che alcune caratteristiche problematiche come i proxies sono disponibili allo stesso livello dei generators, che hanno pochissimi difetti conosciuti o addirittura nessuno. Per questo motivo, sarebbe stato meglio o abilitare solo alcune caratteristiche utilizzando flag specifici, (es. --harmony-generators), o semplicemente abilitarle tutte ma usarne solo un insieme ridotto.

Con io.js@1.x (V8 4.1+), tutta questa complessità è stata superata. Tutte le caratteristiche di harmony sono suddivise logicamente in tre gruppi per le caratteristiche shipping, staged ed in progress:

Quali caratteristiche di ES6 sono attive di default (senza l'uso di nessun flag)?

Puoi trovare una lista più dettagliata, oltre ad un confronto con altri motori, sulla pagina del progetto compat-table .

Quali caratteristiche di ES6 sono abilitate dal flag --es_staging?

La mia infrastruttura è impostata per utilizzare il flag --harmony. Devo rimuoverlo?

Il comportamento corrente del flag --harmony con io.js è di abilitare solo le caratteristiche staged. In effetti è un sinonimo di --es_staging. Come menzionato prima, queste sono caratteristiche completate ma che non sono considerate ancora stabili. Se volete essere al sicuro, specialmente in ambienti di produzione, valutate di rimuovere il flag finchè le caratteristiche non saranno disponibili di default su V8 e di conseguenza su io.js. Se mantenete il flag abilitato, preparatevi al fatto che upgrade futuri di io.js potrebbero guastare il vostro codice, se V8 dovesse cambiare la sua semantica per seguire lo standard più fedelmente.

Come posso trovare quale versione di V8 è distribuita con una particolare versione di io.js?

io.js fornisce un modo semplice di elencare tutte le dipendenze e le corrispettive versioni che sono distribuite con una specifica versione dei binari, attraverso l'oggetto globale process. Nel caso della V8, scrivete queste istruzioni nel vostro terminale per scoprire la versione:

iojs -p process.versions.v8