Utjefte fan JavaSkript-platfoarm oan serverside 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 ferbetterings:

  • Движок 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.

Lit ús ûnthâlde dat it Node.js-platfoarm kin brûkt wurde sawol foar serverside-stipe fan webapplikaasjes en foar it meitsjen fan gewoane client- en servernetwurkprogramma's. Om de funksjonaliteit fan applikaasjes foar Node.js út te wreidzjen, is in grutte samling modules taret, wêryn jo modules kinne fine mei de ymplemintaasje fan HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3-tsjinners en kliïnten, modules foar yntegraasje mei ferskate web frameworks, WebSocket en Ajax handlers , Anschlüsse nei DBMS (MySQL, PostgreSQL, SQLite, MongoDB), template motors, CSS motors, ymplemintaasjes fan kryptografyske algoritmen en autorisaasje systemen (OAuth), XML parsers.

Om de ferwurking fan in grut oantal parallelle fersiken te garandearjen, brûkt Node.js in asynchronous koade-útfiermodel basearre op net-blokkearjende evenemint-ôfhanneling en de definysje fan callback-hannelers. Stipe metoaden foar multiplexing ferbinings binne epoll, kqueue, /dev/poll, en selektearje. Foar ferbiningsmultiplexing wurdt de libuv-bibleteek brûkt, dat is in tafoeging foar libev op Unix-systemen en IOCP op Windows. De libeio-bibleteek wurdt brûkt om in threadpool te meitsjen, c-ares is yntegreare om DNS-fragen út te fieren yn net-blokkearjende modus. Alle systeemoproppen dy't blokkearje feroarsaakje, wurde útfierd yn 'e threadpool en dan, lykas sinjaalhannelers, it resultaat fan har wurk werom fia in net neamde piip (pipe). De útfiering fan JavaScript-koade wurdt levere troch it brûken fan de V8-motor ûntwikkele troch Google (dêrneist ûntwikkelet Microsoft in ferzje fan Node.js mei de Chakra-Core-motor).

Yn har kearn is Node.js fergelykber mei de Perl AnyEvent, Ruby Event Machine, Python Twisted-frameworks, en de ymplemintaasje fan Tcl-evenemint, mar de barren-loop yn Node.js is ferburgen foar de ûntwikkelder en liket op evenemintehanneling yn in webapplikaasje dy't rint yn browser. By it skriuwen fan applikaasjes foar node.js, moatte jo beskôgje de spesifiken fan evenemint-oandreaune programmearring, bygelyks, ynstee fan in dwaan "var result = db.query ("selektearje ..");" mei wachtsjen op foltôging fan wurk en folgjende ferwurking fan resultaten, Node.js brûkt it prinsipe fan asynchronous útfiering, d.w.s. de koade wurdt omfoarme ta "db.query ("selektearje ..", funksje (resultaat) {resultaat ferwurking});", dêr't kontrôle sil daliks trochjaan oan fierdere koade, en de query resultaat wurdt ferwurke as gegevens oankomme.

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

Boarne: opennet.ru

Add a comment