ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Node.js 24.0.0

Бостоялся Ρ€Π΅Π»ΠΈΠ· Node.js 24.0.0, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для выполнСния сСтСвых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° языкС JavaScript. Node.js 24.0 отнСсён ΠΊ Π²Π΅Ρ‚ΠΊΠ°ΠΌ с Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ сроком ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, Π½ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ статус Π±ΡƒΠ΄Π΅Ρ‚ присвоСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² октябрС, послС провСдСния стабилизации. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Node.js 24.x Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ Π΄ΠΎ 30 апрСля 2028 Π³ΠΎΠ΄Π°. Π‘ΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ LTS-Π²Π΅Ρ‚ΠΊΠΈ Node.js 22.x продлится Π΄ΠΎ апрСля 2027 Π³ΠΎΠ΄Π°, Π° ΠΏΠΎΠ·Π°ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ LTS-Π²Π΅Ρ‚ΠΊΠΈ 20.x Π΄ΠΎ апрСля 2026 Π³ΠΎΠ΄Π°. Π‘ΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ LTS-Π²Π΅Ρ‚ΠΊΠΈ 18.x ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΎ 30 апрСля 2025 Π³ΠΎΠ΄Π°, ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Node.js 23.x Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΎ 1 июня 2025 Π³ΠΎΠ΄Π°.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ:

  • Π’ API AsyncLocalStorage ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ задСйствован класс AsyncContextFrame, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ. AsyncContextFrame Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ эффСктивный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ отслСТивания асинхронного контСкста, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.
  • API URLPattern Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ доступСн Π² Π²ΠΈΠ΄Π΅ глобального ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· явного импортирования. URLPattern прСдоставляСт возмоТности для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ соотвСтствия URL ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, Ρ‡Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для Ρ€Π°Π·Π±ΠΎΡ€Π° ссылок.
  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ ΠΈ стабилизирован ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Permission Model, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ рСсурсам Π² процСссС исполнСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ созданиС Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… процСссов, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ доступ Π½Π° запись ΠΈΠ»ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ частям Π€Π‘, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ дополнСния). ВмСсто ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π»Π°Π³Π° Β«β€”experimental-permissionΒ» для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Permission Model Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ Β«β€”permissionΒ».
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ возмоТности модуля node:test (test_runner), ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для создания ΠΈ запуска тСстов Π½Π° языкС JavaScript, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ TAP (Test Anything Protocol). ΠœΠΎΠ΄ΡƒΠ»ΡŒ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ автоматичСски ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… тСстов Π±Π΅Π· нСобходимости использования await.
  • HTTP-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ undici ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ Π΄ΠΎ Π²Π΅Ρ‚ΠΊΠΈ 7.x, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй HTTP.
  • Π”Π²ΠΈΠΆΠΎΠΊ V8 ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ Π΄ΠΎ вСрсии 13.6, примСняСмой Π² Chromium 136. Из Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΌ выпуском Node.js ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… массивов Float16Array, Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ управлСния рСсурсами, ΠΌΠ΅Ρ‚ΠΎΠ΄Π° RegExp.escape (экранированиС строк для RegExp), 64-разрядных ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ (Memory64) Π² WebAssembly, ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Error.isError.
  • ΠŸΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ NPM ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ Π΄ΠΎ вСрсии 11.
  • ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° компилятора MSVC. Для компиляции Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ClangCL.

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Node.js ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована ΠΊΠ°ΠΊ для сСрвСрного сопровоТдСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊ ΠΈ для создания ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… клиСнтских ΠΈ сСрвСрных сСтСвых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Node.js ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π° большая коллСкция ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ сСрвСров ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ web-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ WebSocket ΠΈ Ajax, ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΊ Π‘Π£Π‘Π” (MySQL, PostgreSQL, SQLite, MongoDB), ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹, CSS-Π΄Π²ΠΈΠΆΠΊΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ систСм Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ (OAuth), XML-парсСры.

Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ большого числа ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… запросов Node.js задСйствуСт Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ модСль запуска ΠΊΠΎΠ΄Π°, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ событий Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ callback-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π’ качСствС способов ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ соСдинСний ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠ°ΠΊ epoll, kqueue, /dev/poll ΠΈ select. Для ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ соСдинСний ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° 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-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ