ES6 ja io.js

io.js nojaa tuoreisiin V8:n versioihin. Pysymällä ajan tasalla viimeisimpien versioiden kanssa varmistetaan sekä uusimpien JavaScript ECMA-262 specification ominaisuuksien, että suorituskykyyn ja vakauteen liittyvien parannusten nopea saapuminen kehittäjien ulottuville.

io.js:n versio 3.3.1 sisältää V8 version 4.4.63.30, mikä ES6:n osalta ylittää tuntuvasti ominaisuuksiltaan version 3.28.72 mikä sisältyy Node.js™ 0.12.x-versioihin.

Ei enää --harmony lippua

Node.js™@0.12.x (V8 3.28+) ajonaikainen --harmony-lippu aktivoi kaikki valmiit, koekäyttövaiheen ja kehitysvaiheen ES6-ominaisuudet (poikkeuksena proxies, joille on oma --harmony-proxies-lippunsa). Toisin sanoen jotkin bugiset tai jopa rikkinäiset ominaisuudet kuten Arrow Functions on yhtä lailla käytettävissä kuin generators, millä on vähän tai ei yhtään tunnettuja ongelmia. Usein kehittäjät ottavat käyttöön vain tiettyjä ominaisuuksia käyttämällä täsmällisiä ajonaikaisia ominaisuuslippuja (esim. --harmony-generators), tai yksinkertaisesti ottavat kaiken käyttöön ja pitäytyvät käytössään rajatussa osassa.

io.js@1.8 (V8 4.1+) myötä nuo hankaluudet poistuvat. Kaikki harmonyn ominaisuudet on nyt loogisesti jaoteltu kolmeen ryhmään, eli valmiisiin, koekäyttövaiheen ja kehitysvaiheen ominaisuuksiin:

Mitkä ES6 ominaisuudet ovat io.js:ssä oletuksena käytössä (ilman ajonaikaisia lippuja)?

Yksityiskohtaisempi lista, mihin sisältyy myös vertailu muihin suoritusympäristöihin, löytyy compat-table -projektin sivulta.

Mitä ES6 ominaisuudet ovat --es_staging lipun takana?

Mitkä ES6 ominaisuudet ovat kehitysvaiheessa?

Uusia ominaisuuksia lisätään jatkuvasti V8-suoritusympäristöön. Yleisesti voi olettaa niiden kaikkien päätyvän io.js:n tulevaisuudessa, joskin tarkka ajoitus on toistaiseksi vielä tuntematon.

Voit listata kaikki saatavilla olevat kehitysvaiheen ominaisuudet kustakin io.js:n julkaisusta hakemalla --v8-options tulosteesta. Huomioithan, että nämä ovat keskeneräisiä ja mahdollisesti rikkinäisiä V8:n ominaisuuksia, joten käytät niitä omalla vastuullasi:

iojs --v8-options | grep "in progress"

Hyödynnän infrastuktuurissani --harmony lippua. Tulisiko minun ottaa se pois käytöstä?

Tällä hetkellä --harmony-lippu tuo io.js:ssä käyttöön vain koekäyttövaiheen ominaisuudet. Käytännössä se on siis --es_staging-lipun synonyymi. Kuten yllä on todetaan, nämä ovat valmiita ominaisuuksia mitä ei vielä pidetä vakaina (stable). Jos haluat pelata varman päälle, erityisesti tuotantoympäröissä, on syytä harkita tämän ajonaikaisen lipun käytöstä poistamista kunnes se on oletuksena käytössä V8:ssa ja sen myötä myös io.js:ssä. Jos kuitenkin pidät sen käytössä, varaudu siihen, että io.js:n päivitys voi aiheuttaa koodin rikkoutumista mikäli V8 alkaa seuraamaan standardeja tarkemmin.

Mistä löydän tiedon siitä mikä versio V8:sta missäkin io.js:n versiossa on käytössä?

io.js tarjoaa yksinkertaisen tavan listata kaikki riippuvuudet versioineen jotka toimitetaan kunkin binäärin osana globaalin process-objektin kautta. V8-suoritusympäristön ollessa kyseessä, seuraava komentorivikomento palauttaa sen version:

iojs -p process.versions.v8