В этой статье кратко изложена информация о некоторых интересных вещах, происходящих в проекте Node.js в начале 2022 года.
Релизы
График выпуска Node.js должен быть предсказуемым, чтобы пользователи могли планировать свои миграции. По графику (рисунок 1):
Node.js 12 прекратит свое существование в конце апреля 2022 года.
Node.js 14 и 16 находятся на этапе долгосрочной поддержки и будут поддерживаться до апреля 2023 и апреля 2024 года соответственно.
Node.js 17 — это наша текущая линейка выпусков, которая будет поддерживаться до июня 2022 года.
Также по традиции в апреле будет выпущена новая основная версия Node.js: версия 18. В проекте уже идет подготовка к новому релизу. Рабочая группа по сборке Node.js планирует все необходимые обновления операционной системы и компилятора. Ранние предварительные сборки, скорее всего, будут доступны в марте.
Новые фичи
Как всегда, участники усердно работают над добавлением новых функций в Node.js, перечисленных в виде pull requests на GitHub. Далее мы подробно расскажем о нескольких последних дополнениях.
HTTP - fetch()
fetch()
из коробки ! Экспериментальная реализация этого долгожданного метода появилась и отправлена в Node.js 17.5.0. Глобальный fetch()
изначально будет доступен только при использовании в --experimental-fetch
в параметрах запуска из командной строки. Реализация основана на undici , клиенте HTTP/1.1, написанном для Node.js участниками проекта. Пример использования:
import {fetch} from 'undici';
async function fetchJson() {
const res = await fetch('https://api.github.com/zen');
console.log(res);
}
Включение этой функции частично было ускорено обсуждениями на последнем мини-саммите Node.js Next 10 в январе 2022 г., где проект определил и согласовал приоритеты для HTTP в Node.js. Вы можете посмотреть обсуждение на YouTube или прочитать резюме на GitHub.
Модули ECMAScript
В последние месяцы проект продолжал успешно внедрять модули ECMAScript. И ключевые вехи включают стабильные модули JSON . Хотя модули JSON остаются экспериментальными, теперь они включены по умолчанию, начиная с Node.js 17.5.0.
Также была добавлена поддержка утверждений импорта JSON, демонстрируемая следующим синтаксисом:
import example from './example.json' assert { type: 'json' };
Другие новые функции
Некоторые перспективные разработки:
В экспериментальное подмножество API-интерфейсов планирования разработанный группой сообщества Web Platform Incubator (WICG), включая методы
scheduler.wait()
иscheduler.yield()
. См. RFC - timers: add experimental scheduler api #40909В поддержку сертификатов x509 добавлен метод
сheckHost()
совместимый с RFC 2818 (HTTP через TLS). См. RFC crypto: support RFC 2818 compatible checkHost #41569.В API Node.js был добавлен новый экспериментальный метод
node_api_symbol_for()
для упрощения использования символов в пользовательских дополнениях и расширениях на С и С++. См. node-api: add node_api_symbol_for() #41329.
Горячие темы в сообществе Node.js
Проект Node.js имеет огромную и разнообразную базу соавторов. Это одна из его самых сильных сторон и это означает, что там проводятся углубленные обсуждения всех самых мелких деталей, прежде чем принимать какие-то решения. Некоторые из наиболее интересных тем, обсуждаемых в настоящее время, перечислены в следующих разделах.
Primordials в ядре Node.js
Primordials используются в ядре Node.js в попытке предотвратить вмешательство во встроенные модули Node.js, в том числе от атак типа "загрязнение прототипа".
Использование primordials в ядре Node.js обсуждается в рамках проекта и Технического руководящего комитета Node.js (TSC). Обсуждение касается баланса между тем, насколько защищенными от взлома должны быть основные API, ценой защиты от взлома и затратами на поддержку кода, нагрузкой на производительность во время выполнения и усилиями, необходимыми для предотвращения возможного переопределения модели.
Обновление цепочки инструментов, используемой для сборки Node.js
Вновь разгорается дискуссия о том, какие инструменты должны использоваться для сборки Node.js. Текущая цепочка инструментов создает некоторые проблемы, и проект хотел бы внести изменения. Некоторые из вариантов представлены в этих документах:
Для тех кто хочет попробовать свои силы в команде Node.js, есть призыв помочь в продвижении этой миграции.
Next 10: Будущее Node.js
Группа Node.js Next 10 продолжает работать над выявлением и документированием ключевых технических приоритетов проекта. Недавно команда провела два мини-саммита. Один из них состоялся в ноябре 2021 года и касался подходящих типов для конечных пользователей и отдельных исполняемых приложений. Другой состоялся в январе 2022 года и был посвящен современным реализациям HTTP и документации.
Они хорошо поработали на этих двух саммитах, что привело к некоторым конкретным результатам. Например, благодаря обсуждениям HTTP, как упоминалось ранее, fetch()
теперь это экспериментальный API. Также в сообществе договорились изучить возможность обновления руководства по стилю, для создания более качественной документации в формате JSON, которую можно было бы использовать для более простого создания информации о типах.
Если вы хотите помочь Node.js стать лучше, смело обращайтесь в группу Next 10. Можете принять участие в обсуждениях в репозитории GitHub и посетить следующие встречи и мини-саммиты, которые можно найти в Календаре встреч проекта Node.js.
Так -же для просмотра доступны записи мини-саммитов Node.js Next 10:
Запись мини-саммита за ноябрь 2022 г. (Типы и отдельные двоичные исполняемые файлы)
Запись мини-саммита за январь 2022 г. (современный HTTP и документация)
Предстоящие события
Хотя ездить на конференции по-прежнему сложно, мы все надеемся, что ситуация станет лучше, когда придет время OpenJS World в Остине в июне 2022 года. Тем временем сообщество выступает виртуально на DevConf.cz , и планирует обсудить навигацию по экосистеме npm на предприятии в ходе предстоящей конференции CityJS в Лондоне 25 марта 2022 года.
Будьте в курсе обновлений Node.js
Я надеюсь, что вам понравился этот краткий обзор того, что происходит в сообществе Node.js. Если вы хотите узнать больше, почитайте: