Сотрудники Node.js и члены Node.js Foundation с гордостью представляют 4.0.0 версию продукта. В этот релиз включены бесчисленные часы совместной работы проектов Node.js и io.js, которые были успешно объедены в одну кодовую базу. Проект Node.js управляется командой из 44 человек, 15 из которых формируют Technical Steering Committee (TSC). Кроме того, более 100 участников были добавлены в список людей, способных влиять на развитие ядра, по сравнению с числом участников версии v0.12.7.

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.

Комментарии (33)


  1. mwizard
    09.09.2015 14:08
    +1

    Урааа, снова портировать все расширения, использующие nan :) На самом деле отлично, хорошо, надеюсь, что кодовая база скоро обновится.


  1. Scratch
    09.09.2015 14:16
    +2

    Еще одна причина обновиться
    image


    1. Scratch
      09.09.2015 14:17
      +1

      А вот по памяти. До:
      image
      После:
      image


      1. mapron
        10.09.2015 06:14
        +7

        ну ладно, разные линии соответствуют разным версиям, верно? а что такое ДО-ПОСЛЕ? после чего? и что там по вертикальной оси? потребленная память в Кб?


    1. hotach
      09.09.2015 18:52
      +26

      Извиняюсь за дилетантский вопрос, но не могли бы вы расшифровать что эти графики означают?


      1. erlyvideo
        10.09.2015 11:26

        я тоже ничего не понял. Что за K в пингах?


  1. impwx
    09.09.2015 14:42
    +2

    Это приносит с собой множество бонусов..., наиболее важное из которых, это поддержка ES6 стандарта, которые включены по умолчания, включая видимость блоков,… и, новая для V8 v4.5, стрелочные функции.

    Вы бы хоть сами прочитали статью после гуглопереводчика, прежде чем ее публиковать. Не стал отправлять в личку, потому что тут каждое второе предложение такое.


    1. akazakou
      09.09.2015 14:49

      Спасибо за уточнение. Поправил.


      1. 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» в «начиная с сообщении об устаревании, описными в документации (шта?)».

        Уберите этот перевод, пожалуйста, ну чёрт возьми. Такая хорошая новость и такой убогий перевод.


        1. akazakou
          09.09.2015 16:02
          +1

          Буду рад, если вы окажете посильную помощь в его улучшении.


          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 и поправить хотя бы грамматические ошибки.


            1. akazakou
              09.09.2015 16:16

              Спасибо огромное за уточнения. За перевод взялся, так как до этого его не было, а новость такого формата, по моему мнению, не должна оставаться незамеченной. Плюс, это хороший шанс попрактиковаться в искусстве перевода, так как подобной практики у меня прежде не было.


  1. 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, однако у меня нет ещё уверенности в том, что чтива этого будет достаточно.


    1. akazakou
      09.09.2015 15:01
      +1

      Думаю вот эта Wiki страница вам поможет


    1. hell0w0rd
      09.09.2015 15:01

      А тесты просто на 4.0 прогнать не вариант?


      1. mwizard
        09.09.2015 15:44
        +8

        Некоторые люди...


      1. Mithgol
        10.09.2015 22:22

        Прогоняю; результаты подчас неприятны, так что хотелось бы поскорее доискаться первопричин такой перемены в поведении. Оттого и задаю такой вопрос.


        1. hell0w0rd
          10.09.2015 22:40

          Из основного — изменили Buffer, там много поломок BC, V8 4.5, nan пока не допилили.


  1. VtD
    09.09.2015 15:44

    «Сообщество Node.js проекта»
    Поправьте, пожалуйста.


    1. akazakou
      09.09.2015 15:53

      Спасибо. Исправлено.


  1. luethus
    09.09.2015 16:34
    +2

    А почему после 0.12 сразу 4?


    1. Requilence
      09.09.2015 16:54
      -4

      Видимо решили для перехода с целому исчислению мажорных версий, сложить все цифры и инкриминировать :)


    1. akazakou
      09.09.2015 16:59
      +7

      После отделения от Node.js форка Io.js, форк ввел свою систему нумерации, и таким образом добрался до версии 3.3.0. После воссоединения с форком, было принято решение начать новую мажорную версию и перейти к нумерации версий при помощи методологии Semantic Versioning


      1. Anisotropic
        09.09.2015 17:04

        Да да, это в ализаровой статье на гиктаймсе упоминалось, что перешли на семантическое версионирование.


        1. Kain_Haart
          09.09.2015 19:42

          Там было «нумерацию версий привели в соответствие со стандартом» что, без указания того, с каким стандартом вызывает некое недоумение ;-)


    1. Barttos
      09.09.2015 17:03
      +4

      0.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


  1. E_STRICT
    09.09.2015 17:23
    -4

    Вышла в свет Node.js v4.0.0
    А как вы определяете пол у node.js?


    1. mwizard
      09.09.2015 20:14

      <sarcasm> Комментатор_ка подсказал_а. </sarcasm>


    1. mapron
      10.09.2015 06:15
      +2

      «Вышла в свет новая ВЕРСИЯ». Вот у слова «версия» пол и определили. (если ваш комментарий был до исправленного заголовка, тогда понятная ваша ирония).


      1. E_STRICT
        10.09.2015 07:09
        +1

        Да, он был до исправления заголовка, но сарказма не было. Просто интересно стало, почему node.js — она. Думал, это из-за того, что иногда node.js называют нодой, но оказалось это про просто опечатка. :)


        1. mapron
          12.09.2015 18:58
          +1

          Ну) можно было бы сказать, мол, Нода — она!


  1. bo883
    09.09.2015 23:27
    +1

    Я единственное не понял что с проектом iojs будет? Он все исчезнет(слился с nodejs) или продолжает существовать?


    1. erlyvideo
      10.09.2015 11:27
      +2

      видимо, форкнулись, повеселились и домой