Verëffentlechung vun der Server-Säit JavaScript Plattform Node.js 16.0

Состоялся релиз Node.js 16.0, платформы для выполнения сетевых приложений на языке JavaScript. Node.js 16.0 отнесён к веткам с длительным сроком поддержки, но данный статус будет присвоен только в октябре, после проведения стабилизации. Поддержка Node.js 16.0 будет осуществляться до апреля 2023 года. Сопровождение прошлой LTS-ветки Node.js 14.0 продлится до апреля 2023 года, а позапрошлой LTS-ветки 12.0 до апреля 2022 года. Сопровождение LTS-ветки 10.0 будет прекращено через 10 дней.

Main Verbesserungen:

  • Движок V8 обновлён до версии 9.0 (в Node.js 15 использовался выпуск 8.6), что позволило реализовать в Node.js 16 такие возможности, как свойство «indices» для регулярных выражений (включает массив с начальными и конечными позициями групп совпадений), метод Atomics.waitAsync (асинхронная версия Atomics.wait), поддержка использования ключевого слова await в модулях на верхнем уровне. Ускорен вызов функций, в ситуации, когда число переданных аргументов не соответствует определённым в функции параметрам.
  • Стабилизирован API Timers Promises, предоставляющий альтернативный набор функций для работы с таймером, возвращающих на выходе объекты Promise, что позволяет обойтись без использования util.promisify(). import { setTimeout } from ‘timers/promises’; async function run() { await setTimeout(5000); console.log(‘Hello, World!’); } run();
  • Добавлена экспериментальная реализация API Web Crypto, предназначенного для выполнения базовых криптографических операций на стороне web-приложений, таких как манипуляции с криптографическими хэшами, генерация и проверка цифровых подписей, кодирование и декодирования данных с использованием различных методов шифрования, формирование криптографически надёжных случайных чисел. В API также предусмотрены функции для генерации ключей и управления ими.
  • N-API (API для разработки дополнений) обновлён до версии 8.
  • Осуществлён переход на новый выпуск пакетного менеджера NPM 7.10.
  • Стабилизирована реализация класса AbortController, основанного на Web API AbortController и позволяющего отменять сигналы в выбранных API на основе Promise.
  • Стабилизирована поддержка третьей версии формата Source Map, используемого для сопоставления сгенерированных, обработанных или упакованных модулей с оригинальным исходным кодом.
  • Для совместимости с устаревшими Web API добавлены методы buffer.atob(data) и buffer.btoa(data).
  • Началось формирование сборок для новых устройств Apple, оснащённых ARM-чипом M1.
  • На платформе Linux требования к версии компилятора подняты до GCC 8.3.

Loosst eis drun erënneren datt d'Node.js Plattform souwuel fir Server-Säit Ënnerstëtzung vu Webapplikatiounen benotzt ka ginn a fir gewéinlech Client- a Servernetzprogrammer ze kreéieren. Fir d'Funktionalitéit vun Uwendungen fir Node.js auszebauen, ass eng grouss Sammlung vu Moduler virbereet ginn, an deenen Dir Moduler mat der Ëmsetzung vun HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 Server a Clienten, Moduler fir Integratioun fannt mat verschiddene Web Kaderen, WebSocket an Ajax Handler, Connectoren op DBMS (MySQL, PostgreSQL, SQLite, MongoDB), Templatemotoren, CSS Motoren, Implementatioune vu kryptographesche Algorithmen an Autorisatiounssystemer (OAuth), XML Parser.

Fir d'Veraarbechtung vun enger grousser Zuel vu parallelen Ufroen ze garantéieren, benotzt Node.js en asynchrone Code Ausféierungsmodell baséiert op net-blockéierend Eventhandhabung an der Definitioun vu Callback Handler. Ënnerstëtzt Methoden fir Multiplexing Verbindungen sinn epoll, kqueue, /dev/poll, a wielt. Fir Verbindungsmultiplexing gëtt d'libuv-Bibliothéik benotzt, wat en Add-on fir libev op Unix Systemer an IOCP op Windows ass. D'libeio-Bibliothéik gëtt benotzt fir e Fuedempool ze kreéieren, an c-ares ass integréiert fir DNS Ufroen am net-blockéierende Modus auszeféieren. All Systemappellen, déi d'Blockéierung verursaachen, ginn am Fuedempool ausgefouert an dann, wéi Signalhandteren, d'Resultat vun hirer Aarbecht duerch en onbenannt Päif (Päif) zréckginn. D'Ausféierung vum JavaScript-Code gëtt duerch d'Benotzung vum V8-Motor, dee vu Google entwéckelt gouf, zur Verfügung gestallt (ausserdeem entwéckelt Microsoft eng Versioun vum Node.js mam Chakra-Core-Motor).

Am Kär ass Node.js ähnlech wéi de Perl AnyEvent, Ruby Event Machine, Python Twisted Frameworks, an d'Tcl Event Implementatioun, awer d'Event Loop am Node.js ass vum Entwéckler verstoppt a gläicht Eventhandhabung an enger Webapplikatioun déi leeft am Browser. Wann Dir Applikatiounen fir node.js schreift, musst Dir d'Spezifizitéite vun der Event-Undriff Programméierung berücksichtegen, zum Beispill, anstatt "var result = db.query ("wielt ..");" mat der Erwaardung vun der Aarbecht an der spéiderer Veraarbechtung vun de Resultater, benotzt Node.js de Prinzip vun der asynchroner Ausféierung, d.h. de Code gëtt transforméiert an "db.query ("wielt ..", Funktioun (Resultat) {Resultatveraarbechtung});", an där d'Kontroll direkt op weidere Code passéiert, an d'Ufroresultat gëtt veraarbecht wéi d'Daten ukommen.

Дополнительно можно отметить, что компания Deno, основанная создателем Node.js для развития платформы нового поколения Deno, получила 4.9 млн долларов инвестиций. По своему назначению Deno напоминает Node.js, но пытается устранить концептуальные ошибки, допущенные в архитектуре Node.js, и предоставить пользователям более защищённое окружение. Отмечается, что бизнес-решения компании Deno будут строится на полностью открытых продуктах, а модель Open Core с выделением отдельной платной функциональности воспринимается как неприемлемая для платформы Deno.

Source: opennet.ru

Setzt e Commentaire