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

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

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

  • Π’ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ API Temporal, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΠΉ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Ρ‚Π°ΠΌΠΈ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. API позволяСт ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Ρ‚Π°ΠΌΠΈ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ΠΈ Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° часовых поясов, ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ врСмя, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. ВрСмя ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² нСзависимом ΠΎΡ‚ часового пояса прСдставлСнии (Temporal.PlainDate, Temporal.PlainTime, Temporal.PlainDateTime), с привязкой ΠΊ часовому поясу (Temporal.ZonedDateTime) ΠΈ Π² ΡΠΏΠΎΡ…Π°Π»ΡŒΠ½ΠΎΠΌ прСдставлСнии (Temporal.Instant β€” число наносСкунд с 1 января 1970 Π³ΠΎΠ΄Π°).
  • Π”Π²ΠΈΠΆΠΎΠΊ V8 ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ Π΄ΠΎ вСрсии 14.6, примСняСмой Π² Chromium 146. Из ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΌ выпуском Node.js ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ нСсколько ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Iterator.concat(), Π° Ρ‚Π°ΠΊΠΆΠ΅ рСализация спСцификации Β«upsertΒ» для упрощСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ с коллСкциями ΠΏΠ°Ρ€ ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² JavaScript-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… Map ΠΈ WeakMap.
  • HTTP-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ undici ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ Π΄ΠΎ Π²Π΅Ρ‚ΠΊΠΈ 8.x.
  • Π£Π΄Π°Π»Ρ‘Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ http.Server.prototype.writeHeader(), вмСсто ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ http.Server.prototype.writeHead().

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 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. По своСй сути Node.js ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ Perl AnyEvent, Ruby Event Machine, Python asyncio ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ событий Π² Tcl, Π½ΠΎ Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий (event loop) Π² Node.js скрыт ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ событий Π² web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

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