H ES6 στην io.js

Η io.js έχει δομηθεί πάνω στις νεότερες εκδόσεις της V8. Με συνεχείς ενημερώσεις σύμφωνα με τις τελευταίες εκδόσεις της V8 εξασφαλίζεται ότι νέες δυνατότητες και χαρακτηριστικά από την JavaScript ECMA-262 specification προσφέρονται στους io.js developers εγκαίρως, καθώς και η συνεχής βελτιώση της απόδοσης και της σταθερότητας της.

Η έκδοση 3.3.1 της io.js έρχεται μαζί με την έκδοση 4.4.63.30 της V8, η οποία περιλαμβάνει χαρακτηριστικά από την ES6, πολύ περισσότερα από την έκδοση 3.26.33 που προσφέρετε από την joyent/node@0.12.x.

Όχι πια --harmony flag

Στην joyent/node@0.12.x (V8 3.26), με --harmony runtime flag ενεργοποιούνται όλες μαζί οι δυνατότητες της ES6 είτε είναι ολοκληρωμένες (completed), είτε σε φάση ελέγχου (staged) είτε υπό ανάπτυξη (in progress) (με εξαίρεση τα nonstandard/non-harmonious semantics για το typeof τα οποία βρίσκονται υπό το flag --harmony-typeof). Αυτό σημαίνει πως κάποια χαρακτηριστικά τα οποία περιέχουν σφάλματα ή δεν λειτουργούν καθόλου, όπως π.χ. proxies ήταν διαθέσιμα στους developers μαζί με χαρακτηριστικά τα οποία είχαν λίγα ή καθόλου γνωστά προβλήματα όπως π.χ. οι generators. Ως εκ τούτου, ήταν καλή πρακτική είτε να ενεργοποιείς μόνο συγκεκριμένα χαρακτηριστικά χρησιμοποιώντας συγκεκριμένα runtime harmony flags (π.χ. --harmony-generators), είτε να ενεργοποιείς όλα τα χαρακτηριστικά και να χρησιμοποιείς μόνο ένα υποσύνολο από αυτά.

Με την io.js@1.x (V8 4.1+), όλη αυτή η πολυπλοκότητα εξαλείφεται. Όλα τα χαρακτηριστικά της έκδοσης harmony είναι λογικά διαχωρισμένα σε τρεις ομάδες έτοιμα (shipping), σε φάση ελέγχου(staged) και υπό ανάπτυξη(in progress):

Ποια χαρακτηριστικά της ES6 έρχονται με io.js εξ ορισμού (χωρίς την χρήση runtime flag);

Μπορείτε να δείτε μια λεπτομερή λίστα, συμπεριλαμβανομένου και ενός συγκριτικού πίνακα με άλλες μηχανές, στην σελίδα του projectcompat-table.

Ποία χαρακτηριστικά της ES6 βρίσκονται πίσω από το --es_staging flag;

Έχω ρυθμίσει την υποδομή μου με την χρησή του --harmony flag. Πρέπει να το αφαιρέσω;

Το --harmony flag στην παρούσα έκδοση της io.js ενεργοποιεί μόνο χαρακτηριστικά που είναι σε φάση ελέγχου (staged). Πλέον ισοδυναμεί με το --es_staging flag. Όπως αναφέρθηκε προηγουμένως αυτά είναι ολοκληρωμένα χαρακτηριστικά τα οποία δεν θεωρούνται σταθερά ακόμη. Αν θέλετε να είστε ασφαλής, ειδικά σε production environments, εξετάστε το ενδεχόμενο να αφαιρέσετε αυτό το runtime flag μέχρις ότου να παρέχεται εξ ορισμού με την V8, και ως εκ τούτου και στην io.js. Αν επιλέξετε να το αφήσετε ενεργοποιημένο, θα πρέπει να προετοιμαστείτε για περισσότερες αναβαθμήσεις της io.js οι οποίες θα απαιτούν αλλαγές στον κώδικα σας αν η V8 αλλάξει τα semantics της ώστε να ακολουθεί πιο πιστά τα πρώτυπα (specifications) της ES6.

Πως μπορώ να βρω ποια έκδοση της V8 παρέχεται μαζί με μια συγκεκριμένη έκδοση της io.js;

Η io.js παρέχει έναν απλό τρόπο να απαριθμήσετε όλες τις εξαρτήσεις (dependencies) και τις αντίστοιχες εκδόσεις οι οποίες παρέχονται στην συγκεκριμένη έκδοση μέσω process ενός global object. Στην περίπτωση της μηχανής V8, πληκτρολογήστε την ακόλουθη εντολή στο τερματικό ώστε να βρείτε την έκδοση:

iojs -p process.versions.v8