Сегодня состоялся двойной релиз Node.js v10 (LTS) и NPM v6. Данное событие особенно важно, оно знаменует собой новую веху для всей платформы и привносит много значимых изменений и улучшений во всей кодовой базе Node.js. В сфере безопасности появилась поддержка новых форматов шифрования.
Node.js
Официальный анонс [EN].
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 можно установить командой:
npm i -g npm@latest
Автор: Rumkin