Сервер тараптагы JavaScript платформасы Node.js 19.0 жеткиликтүү

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

Негизги жакшыртуулар:

  • Движок 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), поддержание которых признано нецелесообразным из-за сложности сопровождения в актуальном виде при отсутствии должного плана их поддержки.

Node.js платформасын веб-тиркемелерди сервердик колдоо үчүн, ошондой эле кадимки кардар жана сервердик тармак программаларын түзүү үчүн колдонсо болот. Node.js үчүн тиркемелердин функционалдуулугун кеңейтүү үчүн модулдардын чоң коллекциясы даярдалды, анда HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 серверлерин жана кардарларын ишке ашыруу менен модулдарды, интеграциялоо үчүн модулдарды таба аласыз. ар кандай веб алкактары, WebSocket жана Ajax иштеткичтери, DBMS туташтыргычтары (MySQL, PostgreSQL, SQLite, MongoDB), шаблон кыймылдаткычтары, CSS кыймылдаткычтары, криптографиялык алгоритмдердин жана авторизация системаларынын (OAuth) ишке ашырылышы, XML талдоочулары.

Көп сандаган параллелдүү суроо-талаптарды иштетүү үчүн Node.js бөгөттөлбөгөн окуяны иштетүүгө жана кайра чалууларды иштетүүчүлөрдү аныктоого негизделген асинхрондук кодду аткаруу моделин колдонот. Мультиплексирлөө үчүн колдоого алынган ыкмалар epoll, kqueue, /dev/poll жана тандоону камтыйт. Туташуу мультиплекси үчүн libuv китепканасы колдонулат, ал Unix системаларында libev жана Windows IOCP үчүн кошумча болуп саналат. Libeio китепканасы жип бассейнин түзүү үчүн колдонулат, ал эми c-ares бөгөттөлбөгөн режимде DNS сурамдарын аткаруу үчүн интеграцияланган. Бөгөттөөгө алып келген бардык системалык чалуулар жип бассейнинин ичинде аткарылат жана андан кийин сигнал иштеткичтер сыяктуу, өз ишинин натыйжасын аты жок түтүк аркылуу кайра өткөрүп беришет. JavaScript кодунун аткарылышы Google тарабынан иштелип чыккан V8 кыймылдаткычын колдонуу аркылуу камсыздалат (мындан тышкары, Microsoft Chakra-Core кыймылдаткычы менен Node.js версиясын иштеп чыгууда).

Негизинен, Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted алкактары жана Tcl ичиндеги окуяларды ишке ашырууга окшош, бирок Node.js ичиндеги окуя цикли иштеп чыгуучудан жашырылган жана веб-тиркемедеги окуяны иштетүүгө окшош. браузерде иштеп жатат. node.js үчүн тиркемелерди жазууда, мисалы, "var result = db.query("select..");" кылуунун ордуна, окуяга негизделген программалоонун өзгөчөлүктөрүн эске алуу керек. иштин бүтүшүн күтүү жана натыйжаларды андан ары иштетүү менен, Node.js асинхрондук аткаруу принцибин колдонот, б.а. код "db.query("тандоо..", функция (натыйжа) {натыйжаларды иштетүү});" түрүнө айландырылат, мында башкаруу дароо кийинки кодго өтөт жана сурамдын натыйжасы маалыматтар келгенде иштетилет.

Source: opennet.ru

Комментарий кошуу