Написать пост

Вышли Node.js 10 и пакетный менеджер NPM 6

Аватар Наташа Маркова

В новой версии JS-платформы оптимизированы асинхронные операции, методы работы с массивами и строками, а также добавлена поддержка N-API. Для NPM 6 достигнута улучшенная производительность операций и повышенная безопасность.

Статус ветки с длительным сроком поддержки для новой версии платформы 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К показов