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



Сегодня состоялся одновременный релиз 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




К сожалению, не доступен сервер mySQL