Вышли Node.js 10 и пакетный менеджер NPM 6
Новости
В новой версии JS-платформы оптимизированы асинхронные операции, методы работы с массивами и строками, а также добавлена поддержка N-API. Для NPM 6 достигнута улучшенная производительность операций и повышенная безопасность.
2К открытий2К показов
Статус ветки с длительным сроком поддержки для новой версии платформы Node.js будет присвоен в октябре 2018 года после проведения стабилизации. Обновления таких веток выпускаются в течение 4 лет. Поддержка Node.js 8.0 продлится до 2021 года, версии 6.0 — до 2020 года. Поддержка промежуточной ветки Node.js 9.0 прекратится в июле 2018 года.
Обновление движка V8 до версии 6.6
В нем оптимизирована производительность асинхронных операций, функций promises/async
, методов работы с массивами и строками. Более чем в 10 раз увеличилась скорость операции Array#reduce
для массивов с большим числом пустот или значений с плавающей запятой. Производительность оператора instanceof
возросла в 3,6 раза.
OpenSSL 1.1.0 позволяет поддерживать потоковый шифр ChaCha20 и алгоритм аутентификации сообщений (MAC) Poly1305.
Обработка ошибок и стабилизация API
Отныне каждой ошибке присваивается уникальный код. Благодаря этому автоматизированный разбор проблем проводится без привязки к тексту сообщения об ошибке. Теперь можно выпускать обновления таких текстов, не дожидаясь следующего значительного релиза.
API Node.js (N-API) стабилизирован и официально поддерживается. Он позволяет создавать нативные дополнения к Node.js, которые не привязаны к JavaScript runtime и рассматриваются как часть Node.js. N-API позволяет без перекомпиляции использовать существующее дополнение с новыми версиями Node.js и с разными JavaScript-движками (V8 и Chakra-Core).
Средства диагностики и отладки
Добавлены новые события трассировки для точного измерения времени выполнения кода. Они помогают выявлять узкие места и провалы в производительности в пользовательском коде. В API появилась возможность включения и выключения трассировки во время выполнения программы.
Экспериментальный fs/promises API предоставляет вариант функций fs
. Он реализован при помощи механизма promise
.
Другие улучшения
Function.prototype.toString()
возвращает строку с кодом функции, полностью совпадающую с ее представлением в исходниках (все отступы и комментарии сохраняются).
Улучшена система противодействия атакам по сторонним каналам. Добавлена защита от обращения к памяти вне границ, отведенной для WebAssembly и доступной через массивы и строки JavaScript области.
Презентация пакетного менеджера NPM 6
Вместе с Node.js 10, объявлено о выходе NPM 6. В обновлении некоторые операции стали выполняться до 17 раз быстрее, в 2−3 раза ускорено выполнение команды npm ci
. Появилась возможность настройки webhook
(уведомления об изменении пакетов) непосредственно из CLI. Реализовано автоматическое разрешение конфликтов с файлами блокировки (lockfile) и упрощено создание повторяемых сборок.
Проверка пакетов на наличие уязвимостей
При установке пакетов, содержащих неисправленные уязвимости, пользователь получает предупреждение. Проводить анализ на наличие уязвимостей в установленных пакетах и связанных с ними зависимостях можно с помощью новой команды npm audit
.
С полным списком изменений в новой версии можно ознакомиться на официальном сайте разработчиков.
В январе 2018 года были опубликованы результаты опроса 23 000 JavaScript-программистов за 2017 год. В нашем материале мы собрали 10 трендов языка, включая переквалификацию Angular и ответный удар Microsoft.
2К открытий2К показов