Node.js v4.0.0 содержит V8 v4.5, это та же версия V8, которая поставляется вместе с веб браузером Chrome сегодня. Это привносит с собой множество бонусов для пользователей Node.js, наиболее важные из которых, это поддержка ES6 стандарта, который включен по умолчанию, включая блочную область видимости, классы, типизированные массивы (Node's Buffer теперь работает поверх Uint8Array), генераторы, Promises, Symbols, строковые шаблоны, коллекции (Map, Set, и так далее) и, новая возможность для V8 v4.5 — стрелочные функции.
За прошлый год, благодаря пожертвованиям от таких компаний, как Rackspace, DigitalOcean, Scaleway, miniNodes, Voxer, Joyent, CloudFlare, ARM Holdings, а так же отдельных личностей из сообщества, мы создали замечательный тестовый кластер, который включает в себя впечатляющую линейку Linux систем, OS X, Windows, FreeBSD и SmartOS. В качестве нововведения в Node.js, мы добавили поддержку первого поколения процессоров на ARM архитектуре.
Node.js v4 так же привносит планы по долгосрочной (LTS) поддержке и регулярным релизам. Система именования версий теперь будет придерживаться SemVer рекомендаций, что ожидаемо привнесет увеличение числа минорных версий и патчей в ближайшие недели для исправления ошибок и добавления новых возможностей. Чего мы не будем делать в ветви разработки 4.x, так это добавление несовместимых изменений.
Тем не менее, мы будем стремиться выпустить версию с долгосрочной поддержкой в Октябре 2015 года. В это же самое время, мы начинаем разработку 5.х ветви, которая должна быть нацелена на выпуск стабильных релизов новой версии Node.js Эта ветвь, скорее всего будет содержать последние версии V8 и наборы критических изменений, без которых можно было бы обойтись в 4й версии. Поддержка 4.x ветки в рамках LTS будет осуществляться в течении 18 месяцев, с акцентом на стабильность и безопасность, без добавления ненужного функционала. Кроме того, по окончании этого срока, 4.x ветка будет поддерживаться еще в течении 12 месяцев, во время которых будут исправляться критические ошибки и проблемы безопасности.
Параллельно, мы будем выпускать новые стабильные релизы с периодичностью в 6 месяцев, один в Октябре и один в Апреле, каждого года. Стабильные ветви будут выпускаться регулярно и продолжат развиваться. Для них будут выпускаться минорные изменения и патчи каждую одну-две недели. Каждый второй стабильный релиз будет продолжать существовать в рамках LTS, до завершения следующего октября. Это означает, что мы будем обслуживать несколько версий LST одновременно, с общим сроком поддержки каждой до 30 месяцев (LTS + обслуживание). Мы считаем, что стабильность и долгосрочная поддержка LTS релизов, обеспечат возможность оставаться на острие JavaScript технологий и одновременно обеспечивать стабильность и безопасность, которая является основой для Enterprise пользователей, что с гордостью могут говорить о Node.js как об основной технологии. Некоторые из них уже входят в число участников Node.js Foundation.
Как всегда, с вводом в строй нового мажорного релиза, мы не ожидаем безболезненного перехода на Node.js четвертой версии. Потребуется время для адаптации, особенно в области скомпилированных дополнений с учетом новой версии V8 (намек на NAN для нашего официального решения обратной совместимости). К счастью, серия релизов io.js версии 3.х дала возможность, с большего, подготовить свой код для релиза Node.js 4.x версии.
Первоначальный список исключений обратно совместимости между версиями 0.12 и 4 можно найти на Wiki странице LTS релиза. В ближайшее время мы продолжим наполнение нашей Wiki для отображения наиболее полной документации и списка изменений, о которых вы должны знать.
Пожалуйста, сообщайте о всех найденных проблемах в нашем новом доме на GitHub https://github.com/nodejs/node и присоединяйтесь к растущему числу людей, что помогают нам развивать ядро!
Заметные изменения
Это список изменений, по сравнению с последней версией io.js v3.3.0. Пожалуйста, ознакомьтесь со списком заметных изменений для версий v3.x, v2.x и v1.x собранных в полном списке изменений, для понимания полного списка изменений, по сравнению с версий 0.12.x Обратите внимание, что это только некоторые изменения в ветке v3.x, а также изучите список всех несовместимых особенностей, для того, чтобы не испытывать проблем совместимости Node.js и io.js проектов.
- Child_process: ChildProcess.prototype.send() и process.send() работают асинхронно на всех платформах, так необязательный параметр обратного вызова был введен, который будет вызван после отправки сообщения, т.е. .send(message[, sendHandle][, callback]) (Ben Noordhuis) #2620.
- node: Переименование «io.js» кода в «Node.js» (cjihrig) #2367.
- node-gyp: Этот релиз включает в себя обновленную версию node-gyp которая работает со всеми версиями Node.js и io.js включая nightly и сборки релиз кандидатов. Начиная с io.js v3 и Node.js v4 и далее, необходимо будет скачивать только заголовки, а не весь код, как было ранее (Rod Vagg) #2700
- npm: Обновление версии до 2.14.2 с 2.13.3, включая обновления безопасности, смотрите https://github.com/npm/npm/releases/tag/v2.14.2 для более подробного описания, (Kat Marchan) #2696.
- timers: Улучшена производительность таймеров после портирования с 0.12 версии, плюс минорные исправления (Jeremiah Senkpiel) #2540, (Julien Gilli) nodejs/node-v0.x-archive#8751 nodejs/node-v0.x-archive#8905
- util: util.is*() помечен устаревшим, начиная с сообщения об устаревании в документации к этому релизу, пользователям рекомендуется искать более надежные альтернативы в npm репозитории, (Sakthipriyan Vairamani) #2447.
- v8: Обновлена версия до 4.5.103.30 с 4.4.63.30 (Ali Ijaz Sheikh) #2632.
- Внедрены новые методы прототипов для TypedArray: copyWithin(), every(), fill(), filter(), find(), findIndex(), forEach(), indexOf(), join(), lastIndexOf(), map(), reduce(), reduceRight(), reverse(), slice(), some(), sort(). Ознакомитесь с https://developer.mozilla.org/ru-RU/docs/Web/JavaScript/Reference/Global_Objects/TypedArray для более детальной информации.
- Внедрены новые методы TypedArray.from() и TypedArray.of() Ознакомьтесь с https://developer.mozilla.org/ru-RU/docs/Web/JavaScript/Reference/Global_Objects/TypedArray для более детальной информации.
- Внедрены новые стрелочные функции, ознакомьтесь с https://developer.mozilla.org/ru-RU/docs/Web/JavaScript/Reference/Functions/Arrow_functions для более детальной информации.
- Полный список изменений доступен по https://github.com/v8/v8-git-mirror/blob/4.5.103/ChangeLog
Комментарии (33)
impwx
09.09.2015 14:42+2Это приносит с собой множество бонусов..., наиболее важное из которых, это поддержка ES6 стандарта, которые включены по умолчания, включая видимость блоков,… и, новая для V8 v4.5, стрелочные функции.
Вы бы хоть сами прочитали статью после гуглопереводчика, прежде чем ее публиковать. Не стал отправлять в личку, потому что тут каждое второе предложение такое.akazakou
09.09.2015 14:49Спасибо за уточнение. Поправил.
trikadin
09.09.2015 15:54+2«block scoping» превратилось в «видимость блоков», «Node's Buffer is now backed by Uint8Array» в «Node's Buffer теперь работает с Uint8Array», «plus minor fixes» в «плюс минорные изменения», «beginning with deprecation warnings in the documentation for this release» в «начиная с сообщении об устаревании, описными в документации (шта?)».
Уберите этот перевод, пожалуйста, ну чёрт возьми. Такая хорошая новость и такой убогий перевод.akazakou
09.09.2015 16:02+1Буду рад, если вы окажете посильную помощь в его улучшении.
trikadin
09.09.2015 16:10+7«Block scoping» — это «блочная область видимости», речь идёт об объявлении переменных через let и const.
Buffer теперь, по сути — просто обертка над Uint8Array, фразу правильно перевести как «Buffer теперь работает поверх Uint8Array»
Plus minor fixes — это «плюс минорные исправления».
«beginning with deprecation warnings in the documentation for this release» — ладно, ещё норм, просто «начиная с сообщения об устаревании в документации к этому релизу».
Дальше ещё повычитываю и напишу. Но вообще мне непонятно, зачем вы берётесь переводить техническую статью, не имея, во-первых, никакого понимания того, о чём в ней вообще говорится, во-вторых — не имея желания это понимание приобрести, и в третьих — даже малейшей старательности, заключающейся в том, чтобы прогнать свой перевод через MS Word и поправить хотя бы грамматические ошибки.akazakou
09.09.2015 16:16Спасибо огромное за уточнения. За перевод взялся, так как до этого его не было, а новость такого формата, по моему мнению, не должна оставаться незамеченной. Плюс, это хороший шанс попрактиковаться в искусстве перевода, так как подобной практики у меня прежде не было.
Mithgol
09.09.2015 14:44+4Есть ли какой-нибудь changelog, подробно раскрывающий разницу между 0.12.4 и 4.0.0
и, прежде всего, перечисляющий радикальные изменения (то есть отвечающий на вопрос «что отвалится при переходе?»).
Я читал об изменениях, упомянутых в нескольких подразделах «Notable changes» по адресуhttps://github.com/nodejs/node/blob/master/CHANGELOG.md, однако у меня нет ещё уверенности в том, что чтива этого будет достаточно.hell0w0rd
09.09.2015 15:01А тесты просто на 4.0 прогнать не вариант?
mwizard
09.09.2015 15:44+8
luethus
09.09.2015 16:34+2А почему после 0.12 сразу 4?
Requilence
09.09.2015 16:54-4Видимо решили для перехода с целому исчислению мажорных версий, сложить все цифры и инкриминировать :)
akazakou
09.09.2015 16:59+7После отделения от Node.js форка Io.js, форк ввел свою систему нумерации, и таким образом добрался до версии 3.3.0. После воссоединения с форком, было принято решение начать новую мажорную версию и перейти к нумерации версий при помощи методологии Semantic Versioning
Anisotropic
09.09.2015 17:04Да да, это в ализаровой статье на гиктаймсе упоминалось, что перешли на семантическое версионирование.
Kain_Haart
09.09.2015 19:42Там было «нумерацию версий привели в соответствие со стандартом» что, без указания того, с каким стандартом вызывает некое недоумение ;-)
Barttos
09.09.2015 17:03+40.12.7 -> 1.0.0 -> 1.0.1 -> 1.0.2 -> 1.0.3 -> 1.0.4 -> 1.1.0 -> 1.2.0 -> 1.3.0 -> 1.4.1 -> 1.4.2 -> 1.4.3 -> 1.5.0 -> 1.5.1 -> 1.6.0 -> 1.6.1 -> 1.6.2 -> 1.6.3 -> 1.6.4 -> 1.7.1 -> 1.8.1 -> 1.8.2 -> 1.8.3 -> 1.8.4 -> 2.0.0 -> 2.0.1 -> 2.0.2 -> 2.1.0 -> 2.2.0 -> 2.2.1 -> 2.3.0 -> 2.3.1 -> 2.3.2 -> 2.3.3 -> 2.3.4 -> 2.4.0 -> 2.5.0 -> 3.0.0 -> 3.1.0 -> 3.2.0 -> 3.3.0 -> 4.0.0
v4.0.0 это мердж io.js v4.0.0 обратно в NodeJS.
Отсюда: news.ycombinator.com/item?id=10188126
mwizard
Урааа, снова портировать все расширения, использующие nan :) На самом деле отлично, хорошо, надеюсь, что кодовая база скоро обновится.