Выпуск серверной JavaScript-платформы Node.js 15.0

Сoстoялся рeлиз Node.js 15.0, плaтфoрмы для того выпoлнeния сeтeвыx прилoжeний нa языкe JavaScript. Node.js 15.0 oтнoсится к вeткe с oбычным срoкoм пoддeржки, oбнoвлeния к кoтoрoй будут выпускaться дo июня 2021 гoдa. Сoпрoвoждeниe прoшлoй LTS-вeтки Node.js 12.0 прoдлится дo aпрeля 2022 годы, а позапрошлой LTS-ветки 10.0 до апреля 2021 лета. Основные улучшения: Добавлена экспериментальная совершение класса AbortController, основанного на Web API AbortController и позволяющего аннулировать сигналы в выбранных API на основе Promise. N-API (API к разработки дополнений) обновлён до версии 7, в которой появились новые методы ради работы с ArrayBuffers. Движок V8 обновлён накануне версии 8.6, что позволило привести в исполнение в Node.js 15 такие возможности, точно Promise.any(), AggregateError, String.prototype.replaceAll(), а тоже операторы логического присвоения "&&=", "||=" и "??=". Осуществлён легато на новый выпуск пакетного менеджера NPM 7.0, в котором появилась подпирание рабочих областей (Workspaces) для объединения зависимости с нескольких пакетов в один пакет, реализована автоматическая сборка peer-зависимостей, предложена вторая трансформирование формата блокировок (package-lock.json v2) и помощник файла-блокировки yarn.lock. Возделыватель unhandledRejection переключен на использование сообразно умолчанию исключений "throw" вместо предупреждений "warn". В режиме "throw" подле отсутствии явно определённого обработчика unhandledRejection генерирует неперехватываемое вычеркивание, но если обработчик задан манера держаться не изменится. Для возвращения старого поведения предусмотрен гюйс "--unhandled-rejections=warn". В узел "net" добавлена экспериментальная поддержка протокола QUIC, кто лежит в основе HTTP/3 и рассматривается по образу альтернатива связке TCP+TLS для Web, решающая проблемы с большим временем установки и согласования соединений в TCP и устраняющая задержки рядом потере пакетов в процессе передачи данных. QUIC представляет из себя надстройку над протоколом UDP, поддерживающую мультиплексирование нескольких соединений и обеспечивающую методы шифрования, эквивалентные TLS/SSL. Интересах включения поддержки QUIC в Node.js надобно сборка с флагом "--experimental-quic". Напомним, ровно платформа Node.js может быть использована наравне для серверного сопровождения работы Web-приложений, яко и для создания обычных клиентских и серверных сетевых программ. На обеспечения обработки большого числа параллельных запросов Node.js задействует асинхронную моделирующее устройство запуска кода, основанную на обработке событий в неблокирующем режиме и определении callback-обработчиков. Интересах мультиплексирования соединений используется библиотека libuv, которая является надстройкой по-над libev в системах Unix и над IOCP в Windows. Для того создания пула потоков (thread pool) задействована книжное собрание libeio, для выполнения DNS-запросов в неблокирующем режиме интегрирован c-ares. По сию пору системные вызовы, вызывающие блокирование, выполняются в утробе пула потоков и затем, как и обработчики сигналов, передают в итоге своей работы обратно через неименованный жерло (pipe). Выполнение JavaScript-кода обеспечивается по вине задействование разработанного компанией Google отметка V8 (дополнительно Microsoft развивает вариант Node.js с движком Chakra-Core). До своей сути Node.js похож получай фреймворки Perl AnyEvent, Ruby Event Machine, Python Twisted и реализацию событий в Tcl, только цикл обработки событий (event loop) в Node.js скрыт ото разработчика и напоминает обработку событий в web-приложении, работающем в браузере. Присутствие написании приложений для node.js желательно учитывать специфику событийно-ориентированного программирования, (пред)положим, вместо выполнения "var result = db.query("select..");" с ожиданием завершения работы и последующей обработкой результатов, в Node.js использует воин асинхронного выполнения, т.е. код трансформируется в "db.query("select..", function (result) {обработка результата});", возле котором управление мгновенно перейдёт к дальнейшему коду, а окончание запроса будет обработан по мере расход данных.. Источник: http://www.opennet.ru/opennews/art.shtml?num=53950