Server-side JavaSkript platfoarm Node.js 19.0 beskikber

Состоялся релиз Node.js 19.0, платформы для выполнения сетевых приложений на языке JavaScript. Node.js 19 отнесён к ветке с обычным сроком поддержки, обновления для которой будут выпускаться до июня 2023 года. В ближайшие дни будет завершена стабилизация ветки Node.js 18, которая получит статус LTS и будет поддерживаться до апреля 2025 года. Сопровождение прошлой LTS-ветки Node.js 16.0 продлится до сентября 2023 года, а позапрошлой LTS-ветки 14.0 до апреля 2023 года.

Main ferbetterings:

  • Движок V8 обновлён до версии 10.7, применяемой в Chromium 107. Из изменений в движке по сравнению с веткой Node.js 18 отмечается реализация третьей версии API Intl.NumberFormat, в которой добавлены новые функции formatRange(), formatRangeToParts() и selectRange(), группировка множеств, новые опции округления и задания точности, возможность интерпретации строк как десятичных чисел. Также обновлены входящие в комплект зависимости llhttp 8.1.0 и npm 8.19.2.
  • Предложена экспериментальная команда «node —watch» с реализацией режима наблюдения, обеспечивающего перезапуск процесса при изменении импортированного файла (например, в случае выполнения «node —watch index.js» процесс будет автоматически перезапущен при изменении index.js).
  • Для всех исходящих HTTP/HTTPS-соединений включена поддержка механизма HTTP 1.1 Keep-Alive, оставляющего соединение определённое время открытым для обработки в рамках одного соединения нескольких HTTP-запросов. Предполагается, что применение Keep-Alive позволит повысить пропускную способность и производительность. По умолчанию таймаут удержания соединения открытым выставлен в 5 секунд. В реализацию HTTP-клиента добавлена поддержка разбора HTTP-заголовка Keep-Alive в ответах сервера, а в реализацию HTTP-сервера Node.js добавлено автоматическое отсоединение неактивных клиентов, использующих Keep-Alive.
  • В разряд стабильных переведён API WebCrypto, за исключением функций, использующих алгоритмы Ed25519, Ed448, X25519 и X448. Для доступа к модулю WebCrypto теперь можно использовать globalThis.crypto или require(‘node:crypto’).webcrypto.
  • Удалена поддержка инструментариев трассировки DTrace, SystemTap и ETW (Event Tracing for Windows), поддержание которых признано нецелесообразным из-за сложности сопровождения в актуальном виде при отсутствии должного плана их поддержки.

It platfoarm Node.js kin brûkt wurde sawol foar serverûnderhâld fan webapplikaasjes as foar it meitsjen fan reguliere 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 webkaders, WebSocket- en Ajax-hannelers, DBMS-ferbiningen (MySQL, PostgreSQL, SQLite, MongoDB), sjabloanmotoren, CSS-motoren, ymplemintaasjes fan krypto-algoritmen en autorisaasjesystemen (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.

Boarne: opennet.ru

Add a comment