Релиз Node.js 10 и NPM 6


    Сегодня состоялся одновременный релиз Node.js v10 (LTS) и NPM v6. Данное событие особенно важно, оно знаменует собой новую веху для всей платформы и превносит много значимых изменений и улучшений во всей кодовой базе Node.js. Появилась поддержка новых алгоритмов шифрования.


    Node.js


    Десятая версия Node.js в октябре получит долгосрочную поддержку, которая закончится в 2021 году.



    1. N-API


    N-API вышел из тестирования и теперь стабилен. Для тех кто не знает N-API это прослойка между вашим кодом на C++ и внутренностями Node.js. Теперь при изменении версий ваши модули не придется переписывать. Теперь будет разработчикам, использующим нативные модули будет проще переключаться между версиями Node.js. И возможно мы увидим меньше заброшенных C++-модулей, авторы которых отказались от поддержки из-за ее сложности.


    Так же теперь Node.js независим от виртуальной машины JS, так что в скором времени возможен релиз Node.js с Chakra Core под капотом.


    OpenSSL 1.1.1


    В этой версии включена поддержка OpenSSL 1.1.0, теперь разработчикам будут доступно шифрование с помощью ChaCha20 и авторизаци с Poly-1305. Так же OpenSSL теперь подключен через N-API, а это значит, что с выходом версии 1.1.1 в конце апреля станет доступен TLS 1.3 (новый упрощенный и ускоренный вариант TLS).


    Асинхронные циклы


    Как я уже писал ранее, в этой версии станут доступны асинхронные циклы и новое поведение ReadStream. Вкратце теперь можно пройтись циклом по итератору, возвращающему промисы, автоматически дожидаясь их разрешения:


    for await (const chunk of fs.createReadStream(filepath)) {
        // ...
    }

    Коды ошибок


    Введены коды ошибок Error#code, которые позволят не привязваться к тексту сообщения для определения их типа. Так что теперь обработка ошибок станет более предсказуемой.


    Обновление v8 до 6.6


    Версия v8 обновилась до 6.6. В которой так же много нововведений:


    • Ускорение Array#reduce до 10-ти раз, выполнения асинхронного кода и асинхронных циклов в частности.
    • Появилось несколько новых методов такие как String#trimStart, String#trimEnd.
    • Condition-free блок try-catch:
      try {
        doSomethingWrongWay();
      }
      catch {
      // Попался!..
      }
    • Улучшение кеширования и загрузки кода, построение AST в параллельном потоке.
    • Отказ от gyp.

    Подробнее в блоге v8.


    Экспериментальная поддержка промисов модулем fs


    Промисы добавлены в модуль fs. Пока экспериментально в свойство promises.


    Прочие улучшения


    Улучшены поддержка функционала для замера производительности. И многое другое.


    NPM


    Официальный анонс [EN].


    Security Platfrom


    В шестой версии NPM озаботились безопасностью модулей. Появилась поддержка предупреждений об уязвимостях при установке пакетов, а так же новый метод npm:


    npm audit

    NPM будет автоматически проходиться по базе известных уязвимостей и будет предупреждать, если среди зависимостей встретится уязвимый модуль.


    Производительность


    Менеджер пакетов может выдать в 17 раз более высокую скорость по сравнению с предыдущей версией. А так же и без того ускоренный npm ci стал работать в 2-3 раза быстрее.


    Управление вебхуками


    Два года назад NPM ввела поддержку webhooks для получения уведомлений об изменении определенного пакета. Ранее для управления использовался сторонний модуль wombat, теперь поддержка вебхуков стала встроенной.


    Другие


    Появилось автоматическое разрешение конфликтов в lock-файлах. Так же теперь выводится больше данных для определения целостности пакетов.


    Установка


    Node.js можно скачать с официального сайта (поставляется с npm 5.6).


    Установить NPM:


    npm i -g npm@6
    Поделиться публикацией

    Похожие публикации

    Комментарии 38
      –1
      Отличные новости!
        0
        Введены коды ошибок Error#code
        Неужели. Через столько лет? о_О

        Правда, их рекомендация для поддержки старого кода, мягко говоря, meh:
          0

          Предполагаю, что кто-нибудь напишет npm-модуль с полифиллом, если еще не.

            0
            И в этом модуле будет много зависимостей :)
            +1

            Вдогонку к предыдущему комменту: почитал вот здесь поподробнее об изменениях.


            Коды ошибок доступны уже полгода как, начиная с node 8. Поэтому, если следовать правилу "поддерживаем два последних релиза", то можно просто опираться на error.code и нет проблем.

              0
              У нас четвёрка -.-
                +3

                Четвертая версия перестает поддерживаться с 30 апреля. Это уже через 5 дней.


                Если после этого обнаружится очередной Heartbleed или Meltdown, то патчей для вас уже никто не выпустит.

                  0
                  Благодарю, надо будет обновиться.
                  –1
                  Пфф, у нас 0.10))
                  Нода используется в рамках apigee, гугл решил что в их продуктах апдейт ноды ненужен.
                    0
                    У нас часть сервисов на ноде во внутренней сети, наружу ничего не торчит. Как-то особо не думали над её апдейтами. Единственное, с 0.x обновлял, но там много чего отвалилось. Больше не экспериментировали.
                      0

                      Бегите от такого сервиса подальше. Если они так пофигистично относятся к обновлениям софта, но на другие пользовательские запросы там тем более забьют.


                      От того же гугла есть сервис CloudFunctions, например, там используется более-менее актуальная Node 6.

                  0
                  Вот смотрю я на код, и у меня какая-то ошибка и варнинги летят.
                    –1
                    Что за дурацкая привычка в последнее время вставлять код картинкой?
                      +1
                      Я её из оригинала взял. Был бы текст, то, естественно, текстом бы вставил.
                        +1

                        На medium.com (откуда оригинальный пост) нет подсветки синтаксиса. Вот авторы и выкручиваются как могут.

                          –1
                          Понятно теперь, откуда это пошло. Спасибо
                      +1
                      Вроде же говорилось, что в десятке появится поддержка модулей mjs без опции --experimental-modules?
                        0

                        Где такое говорилось?


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

                          0
                          ESM support is slated to land, unflagged, in Node v10 around April 2018. https://blogs.windows.com/msedgedev/2017/08/10/es-modules-node-today/
                            0

                            Написал автору, указал на неточность. Теперь в посте написаны более размытые сроки "between October 2018 and April 2020".

                              0
                              Ох, спасибо.
                          0

                          Пока commonjs модули не подхватываются ES модулями, смысла в последних нет никакого. Никто не будет писать контент по 2 раза для разных типов модулей.

                          +1
                          Не хватает им маркетинга. Новость вышла тихо и без пафоса. Да и название не «Node.js X» или «Node.jsx». Ой это уже другая тема…
                            0

                            Им тогда нужно было 9-б версию пропустить.

                              0

                              Девятая не LTS, и так пропустили ж

                                0

                                Вообще пропустить.

                            –1
                            Почему в первом абзаце написано что это LTS версия?
                              +1

                              А она не LTS?

                                –1
                                проглядел я.
                                  +2

                                  10 версия пока еще не LTS.


                                  Вот здесь об этом все подробно расписано: https://github.com/nodejs/Release


                                  Сейчас выпущен просто новый релиз. В него еще будут добавляться большие новые фичи, например ES-модули без флагов. Этот релиз еще не считается стабильным.


                                  В октябре 2018 года 10-й релиз перейдет в активный LTS. Это значит, что релиз стал стабильным, новые фичи выпускаться перестанут. Для новых фич выйдет новая, 11-я версия.


                                  Именно в этот момент 10-я версия станет показываться здесь в табе LTS, а пользователям будет рекомендоваться переводить все свои проекты на нее.

                                    0

                                    В контексте цикла релизов это кажется очевидным, что долгосрочная поддержка начинается, когда заканчивается обычная. Да и внутри сообщества нет решения, как называть версию готовящуюся получить LTS, но еще не получившую его.

                                      –1
                                      LTS-candidate?
                                +1
                                Они грозились ESM без флагов. Но не сделали :(
                                  0
                                  Маловато как-то изменений для изменения аж с 9-ки на 10-ку…
                                    +2

                                    Как и многий софт в настоящее время, Node релизится по календарю, а не по накопленному числу изменений.

                                    +1
                                    — V8 будет обновлен до 6.7 после релиза движка (т.е. предположительно после июня).
                                    — NPM 6.0 будет добавлен в Node только в 10.1
                                      +1
                                      npm -g i npm

                                      обновляет npm до 6.0 версии на node v10.0.
                                        0
                                        Причем работает и на 8, и на 9 ноде.

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое