ES6 в io.js

io.js побудований на основі сучасних версій V8. Підтримуючи останні версії V8 в io.js, ми гарантуємо наявність нових можливостей JavaScript ECMA-262 specification, які привносяться до io.js розробників своєчасно, а також підвищують швидкість роботи та стабільність.

Версія io.js 3.3.1 має версію V8 4.4.63.30, яка включає в себе ES6 можливості, котрих немає в V8 3.28.73, яка іде в поставці з Node™@0.12x.

Більше ніяких --harmony параметрів

В Node.js™@0.12x (V8 3.28+), --harmony параметр вмикає всі shipping, staged та in progress ES6 можливості (окрім proxies, котрі вмикаються параметром --harmony-proxies). Це означає що код з помилками, чи навіть непрацюючі можливості, наприклад Arrow Functions стають доступними в коді так само, як і генератори, котрі не мають відомих проблем взагалі. Багато розробників вмикають лише ті можливості, котрі їм потрібні, використовуючи параметри запуску (наприклад, --harmony-generators). Чи взагалі, вмикають всі можливості одним параметром.

З io.js@1.x (V8 4.1+) складність використання ES6 можливостей зникає. Всі harmony можливості логічно розподілені на три групи shipping, staged та in progress:

Які можливості ES6 ідуть з io.js по замовчуванню (без необхідності використовувати параметри запуску)?

Ви можете переглянути більш докладний список, в тому числі і порівняння з іншими "двигунами", в таблиці порівняння.

Які ES6 можливості вмикаються із --es_staging параметром?

Котрі ES6 можливості в стадії розробки?

Нові можливості постійно додаються в V8. Взагалі, ми очікуємо, що вони з'являться в наступних io.js релізах, хоча терміни і невідомі.

Ви можете продивитись список всіх in progress можливостей в кожному io.js релізі, запустивши iojs з параметром --v8-options. Будь ласка, зверніть увагу, що це нестабільні можливості V8, тому використовуйте їх на свій страх і ризик:

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

У мене використовується параметр --harmony. Чи можна його видалити?

На даний момент, --harmony параметр в io.js вмикає лише staged можливості. Зрештою, це синонім --es_staging параметру. Як уже згадувалось вище, ці можливості ще не вважаються стабільними. Якщо ви хочете бути впевнені в стабільності, особливо в production, ви повинні видалити цей параметр до тих пір, доки ці можливості не стануть можливостями по замовчуванню в V8, а отже, і в io.js. Якщо ви залишите цей параметр ввімкненим, ви повинні бути готові до того, що наступні версії io.js, скоріш за все, зламають ваш код, якщо V8 зміне їх семантику.

Як мені дізнатись, яку версію V8 використовує io.js?

io.js забезпечує простий спосіб перелічити всі залежності і їх версії, які доступні в глобальному process об'єкті. Якщо ви хочете дізнатись версію V8, виконайте наступну команду:

iojs -p process.versions.v8
```js