Октябрь - всегда загруженный месяц для проекта Node.js. Node.js 10.x становится последней версией долгосрочной поддержки (LTS) 30 октября. Node.js 11 становится текущей линией релизов, начиная с сегодняшнего дня (23 октября) и в течение следующих шести месяцев.

Если вы не знакомы с циклом выпуска Node.js:

  • Релизы с четными номерами - это LTS; как правило, они получают поддержку в течение 30 месяцев после того, как станут LTS.
  • Выпуски с нечетным номером являются текущими выпусками и поддерживаются в течение шести месяцев.

Чтобы узнать больше о релизах, посмотрите это видео или читайте о них здесь.

Общие темы для обоих этих выпусков сосредоточены на повышении производительности, безопасности, новых функциях JavaScript, а также расширенной трассировке и диагностике благодаря улучшенной интеграции с командой V8 и вкладам сообщества.

Какую версию мне следует использовать?

Если вы используете Node.js в производстве, используйте версию LTS. Линии выпуска LTS ориентированы на стабильность, расширенную поддержку и обеспечивают надежную платформу для приложений любого масштаба. Большинство пользователей и компаний Node.js пользуются услугами долгосрочной поддержки. Тем, кто в настоящее время использует Node.js 4.x или Node.js 6.x, мы рекомендуем перейти на Node.js 10.

Если вы хотите опробовать новые функции локально, используйте текущую версию.

Планируя обновление, помните, что NVM (Linux / Mac) и NVS (Windows) - отличный способ управлять вашими установками.

Node.js 10 прирост производительности

Первоначальные результаты сравнительного анализа Node-DC, который фокусируется на вариантах использования Node.js в центре обработки данных, показали:

  • Число операций в секунду почти в 2 раза выше в Node.js 10 по сравнению с Node.js 6;
  • Задержка уменьшилась на 65% в Node.js 10 по сравнению с Node.js 6;
  • Площадь после загрузки на 35% меньше в Node.js 10 по сравнению с Node.js 6 для повышения производительности при холодном запуске.

Хотя тесты не всегда отражают реальные результаты, очевидна тенденция к увеличению производительности с каждым новым выпуском Node.js.

Что особенного в том, что Node.js 10.x стал LTS?

Когда Node.js 10.x станет последней версией LTS, он будет готов к использованию в производственной среде и приложениями, требующими масштабирования. Изначально мы анонсировали набор функций Node.js 10 в апреле. Эта линейка выпусков включает в себя улучшения производительности, улучшения обработки ошибок, улучшенную диагностику событий трассировки и вскрытия, а также особое внимание уделяется безопасности.

С Node.js 10 API Node.js (N-API) - стабильный API модуля, не зависящий от изменений в V8 - выходит из экспериментальной версии и теперь стабилен в использовании. * (Обратите внимание, что теперь он также стабилен в 8.X и имеет полное покрытие N-API 1.3 в 6.x, поэтому вы можете использовать его во всех выпусках LTS). N-API снижает затраты на обслуживание собственных модулей и снижает трение при обновлении версий Node.js в производственных развертываниях для потребителей модулей. Узнайте последние новости о проделанной работе здесь.

Любой, кто пишет или поддерживает собственные модули, должен использовать N-API.

Наряду с N-API ниже приведены несколько дополнительных функций, которыми вы теперь можете в полной мере воспользоваться как пользователь Node.js LTS:

HTTP / 2 готов! HTTP / 2 обеспечивает значительное улучшение производительности по сравнению с HTTP / 1 - текущее тестирование показывает, что он может дать 10-кратное повышение производительности по сравнению с HTTP / 1.1. Он сокращает время ожидания за счет включения полного мультиплексирования запросов и ответов, минимизирует накладные расходы протокола за счет эффективного сжатия полей заголовка HTTP и добавляет поддержку приоритезации запросов и проталкивания сервера (подробнее здесь).

Функциональность сервера push заранее подталкивает дополнительные ресурсы вместе с ответом на исходный запрос, который, по его мнению, браузер запросит позже. Позже, если браузеру они действительно нужны, он использует уже размещенные ресурсы вместо того, чтобы отправлять для них дополнительные запросы. См. Статью Node.js может нажимать HTTP / 2! для получения дополнительных сведений об этой функции и многом другом.

Node.js 10.x оснащен V8 6.8: Управление памятью с использованием проверки границ на основе прерываний на платформах Linux x64 улучшает скорость выполнения WebAssembly в этой последней версии V8.

Улучшения производительности представлены в виде улучшений деструктуризации массивов, улучшений Object.assign и улучшений TypedArray.prototype.sort. Вы можете найти полный список возможностей языка JavaScript здесь.

Улучшенная интеграция инструментов разработки V8 и Chrome с проектом Node.js предоставляет подробную информацию в моментальный снимок кучи, который значительно расширяет виды диагностической информации, предоставляемой пользователям Node.js.

Добавление npm 6.4 в Node.js 10.x: npm 6.4 поставляется с Node.js 10.x. Версия 6 установщика пакетов JavaScript ориентирована на стабильность, безопасность и предлагает повышение производительности до 1700% по сравнению с предыдущей версией npm.

Что еще остается экспериментальным в Node.js 10.x?

Экспериментальные функции включают:

  • API воркеров: у каждого воркера есть собственный цикл обработки событий - аналогично тому, что люди испытывают в браузере; это также может привести к более детальной отладке воркеров.
  • fs Promises API: это полезная функция, поскольку она позволяет получать обещания и обратные вызовы.
  • В REPL добавлено ожидание верхнего уровня.
  • NodeChakra выпущен с отладкой Time Travel.
  • Поддержка AsyncIterators в читаемых потоках Node.js.

Node.js на Chakra Core (NodeChakra) - это проект, который позволяет Node.js опционально использовать движок JavaScript ChakraCore, который был разработан Microsoft для своего веб-браузера Microsoft Edge.

Что нового в Node.js 11?

Текущие выпуски позволяют разработчикам тестировать новейшие функции Node.js, однако они не готовы к тестированию в производственной среде.

Node.js 11 в значительной степени ориентирован на инкремент. Возможности этого выпуска:

  • Таймеры интервалов будут перепланированы, даже если предыдущий интервал вызывал ошибку;
  • и сборка больше не поддерживает FreeBSD 10.

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

Спасибо!

Мы хотим выразить особую благодарность всем, кто создал этот выпуск, независимо от того, отправили ли вы PR на функцию, помогли с нашими усилиями по тестированию или вы отвечали за одну из версий выпуска. Релиз-менеджером для Node.js 10 и Node.js 11 является Джеймс Снелл. Чтобы ознакомиться с полным списком участников релиз-команды, загляните здесь.

Если вы заинтересованы в участии в Node.js, мы приветствуем вас. Узнайте больше через наши рекомендации для авторов.

* Исправление: в сообщении в блоге изначально говорилось: «Ожидание верхнего уровня в REPL: это позволит вам просто запускать Node.js в вашем терминале», это неверно. Правильный маркер - «ожидание верхнего уровня добавлено в REPL». Приносим извинения за неудобства.