JavaScript ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Node.js 22.0.0 Π½Π°Π»ΠΈΡ‡Π½Π°

Π‘Π΅ΡˆΠ΅ пуснат Node.js 22.0, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π·Π° стартиранС Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прилоТСния Π² JavaScript. Node.js 22.0 Π΅ класифициран ΠΊΠ°Ρ‚ΠΎ ΠΊΠ»ΠΎΠ½ Π·Π° Π΄ΡŠΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, Π½ΠΎ Ρ‚ΠΎΠ·ΠΈ статус Ρ‰Π΅ бъдС присвоСн Π΅Π΄Π²Π° ΠΏΡ€Π΅Π· ΠΎΠΊΡ‚ΠΎΠΌΠ²Ρ€ΠΈ, слСд стабилизиранС. Node.js 22.x Ρ‰Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π΄ΠΎ 30 Π°ΠΏΡ€ΠΈΠ» 2027 Π³. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ LTS ΠΊΠ»ΠΎΠ½ Π½Π° Node.js 20.x Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄ΠΎ Π°ΠΏΡ€ΠΈΠ» 2026 Π³., Π° ΠΏΡ€Π΅Π΄Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° Π³ΠΎΠ΄ΠΈΠ½Π° LTS ΠΊΠ»ΠΎΠ½ 18.x Π΄ΠΎ Π°ΠΏΡ€ΠΈΠ» 2025 Π³. БцСничният ΠΊΠ»ΠΎΠ½ Π½Π° Node.js 21.x Ρ‰Π΅ бъдС ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Π½ Π½Π° 1 юни 2024 Π³.

Основни подобрСния:

  • ДвигатСлят V8 Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π΄ΠΎ вСрсия 12.4, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² Chromium 124. Π‘Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² сравнСниС с ΠΊΠ»ΠΎΠ½Π° Node.js 21, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° двигатСля V8 11.8), сС отбСлязва:
    • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅Ρ‚ΠΎ WasmGC, ΠΊΠΎΠ΅Ρ‚ΠΎ опростява прСнасянСто Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, написани Π½Π° Π΅Π·ΠΈΡ†ΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΡΡŠΠ±ΠΈΡ€Π°Ρ‡ Π½Π° ΠΎΡ‚ΠΏΠ°Π΄ΡŠΡ†ΠΈ (Kotlin, PHP, Java ΠΈ Π΄Ρ€.) към WebAssembly. WasmGC добавя Π½ΠΎΠ²ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ структури ΠΈ масиви, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°.
    • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Array.fromAsync(), ΠΊΠΎΠΉΡ‚ΠΎ асинхронно Π²Ρ€ΡŠΡ‰Π° Π½ΠΎΠ² СкзСмпляр Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ Array, ΠΊΠΎΠΏΠΈΡ€Π°Π½ ΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° масив, ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΠ»ΠΈ асинхронСн ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΠ±Π΅ΠΊΡ‚.
    • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠ°Ρ‚ΠΎ .map, .filter, .find, .take, .drop, .forEach ΠΈ .reduce.
    • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΎΠ±Π΅ΠΊΡ‚ Set, ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° колСкция ΠΎΡ‚ стойности ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΎΠ±Ρ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° мноТСство, ΠΊΠ°Ρ‚ΠΎ прСсичанС, ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΈ добавянС.
  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‰ΠΈΡΡ‚ JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Π½Π° Maglev Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, насочСн към Π±ΡŠΡ€Π·ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° високопроизводитСлСн машинСн ΠΊΠΎΠ΄ Π·Π° силно ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ JavaScript ΠΊΠΎΠ΄. АктивиранСто Π½Π° Maglev ΠΌΠΎΠΆΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° ускори ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ‚Ρ€Π°ΠΉΠ½ΠΈΡ‚Π΅ CLI прилоТСния, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ Π΄ΡŠΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° тСста Jetstrea Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ със 7.5%, Π° Ρ‚Π΅ΡΡ‚ΡŠΡ‚ Speedometer с 5%.
  • Π Π°Π±ΠΎΡ‚Π°Ρ‚Π° с ΠΏΠΎΡ‚ΠΎΡ†ΠΈ Π΅ ускорСна Ρ‡Ρ€Π΅Π· ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° стойността Π½Π° опцията highWaterMark ΠΎΡ‚ 16 KB Π½Π° 65 KB (опрСдСля Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π°, Π΄ΠΎ която сС Π±ΡƒΡ„Π΅Ρ€ΠΈΡ€Π° Π·Π°ΠΏΠΈΡΡŠΡ‚). ΠŸΡ€ΠΎΠΌΡΠ½Π°Ρ‚Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ прилоТСнията, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ΠΈ Π΄Π° работят с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° RAM, ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° сС Π²ΡŠΡ€Π½Π°Ρ‚ към старата стойност Ρ‡Ρ€Π΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° setDefaultHighWaterMark().
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° производитСлност Π½Π° fetch() ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈ интСрфСйси Π·Π° тСстванС, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈ инстанцията Π½Π° AbortSignal ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Π°. ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° Π΅ производитСлността Π½Π° API, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ със синхронна Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΈ систСми.
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π΅Π½Π° Π΅ СкспСримСнтална функция Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ "require()" Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ESM ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° JavaScript (ECMAScript ΠΌΠΎΠ΄ΡƒΠ»ΠΈ) Π² синхронСн Ρ€Π΅ΠΆΠΈΠΌ. ESM ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈΡ‚Π΅ ΠΈ замСстват CommonJS ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅, спСцифични Π·Π° Node.js. Π—Π° Π΄Π° сС Π·Π°Ρ€Π΅Π΄ΠΈ Ρ‡Ρ€Π΅Π· "require()", ESM ΠΌΠΎΠ΄ΡƒΠ»ΡŠΡ‚ трябва Π΄Π° сС изпълни Π² синхронСн Ρ€Π΅ΠΆΠΈΠΌ (Π±Π΅Π· ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅ Π½Π° Π½Π°ΠΉ-високо Π½ΠΈΠ²ΠΎ). ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° Ρ‡Ρ€Π΅Π· Ρ„Π»Π°Π³Π° β€ž--experimental-require-moduleβ€œ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ СкспСримСнтална Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° стартиранС Π½Π° скриптовС, Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ във Ρ„Π°ΠΉΠ»Π° package.json с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° "--run" "
  • ΠšΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žnode –watchβ€œ Π΅ прСмСстСна Π² стабилната катСгория с ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π΅ΠΆΠΈΠΌ Π½Π° наблюдСниС, ΠΊΠΎΠΉΡ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ сС рСстартира, ΠΊΠΎΠ³Π°Ρ‚ΠΎ импортираният Ρ„Π°ΠΉΠ» сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ сС изпълни β€žnode –watch index.jsβ€œ, ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Ρ‰Π΅ сС рСстартира Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ index.js сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ).
  • ЕстСствСното внСдряванС Π½Π° API Π½Π° WebSocket Π΅ стабилизирано, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява Π½Π° WebSocket Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² клиСнтски Ρ€Π΅ΠΆΠΈΠΌ Π±Π΅Π· инсталиранС Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ зависимости.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ частична ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° API Π½Π° Navigator.
  • API Π½Π° Webstreams Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π·Π° компрСсиранС deflate-raw.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ glob ΠΈ globSync към node:fsmodule Π·Π° ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° шаблони Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΈ ΠΏΡŠΡ‚ΠΈΡ‰Π°.
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ IPv6 стСковС. Π’ΡŠΠ²Π΅Π΄Π΅Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ Happy Eyeballs Π·Π° Π±ΡŠΡ€Π·ΠΎ Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π°Π·Π°Π΄ Π² случай Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° IPv6.
  • API Π½Π° util Π΅ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½.
  • Актуализирани вСрсии Π½Π° зависимости: npm 10.5.1, libuv 1.48.0, simdutf 5.2.3, c-ares 1.28.1, zlib 1.3.0.1-motley-24c07df, simdjson Π΄ΠΎ 3.8.0, ada 2.7.7 ΠΈ undici 6.6.0 .

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

Π—Π° Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° голям Π±Ρ€ΠΎΠΉ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ заявки, Node.js ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° асинхронСн ΠΌΠΎΠ΄Π΅Π» Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ ΠΈ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π·Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° мултиплСксиранС Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ epoll, kqueue, /dev/poll ΠΈ select. Π—Π° мултиплСксиранС Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° libuv, която Π΅ Π΄ΠΎΠ±Π°Π²ΠΊΠ° към libev Π² Unix систСми ΠΈ към IOCP Π² Windows. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° libeio сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° създаванС Π½Π° ΠΏΡƒΠ» ΠΎΡ‚ нишки, Π° c-ares Π΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½ Π·Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° DNS заявки Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰ Ρ€Π΅ΠΆΠΈΠΌ. Всички систСмни повиквания, ΠΊΠΎΠΈΡ‚ΠΎ причиняват Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅, сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π² ΠΏΡƒΠ»Π° ΠΎΡ‚ нишки ΠΈ слСд Ρ‚ΠΎΠ²Π°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π½Π° сигнали, ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° си ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΡ€Π΅Π· Π½Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ ΠΊΠ°Π½Π°Π».

Π˜Π·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° JavaScript ΠΊΠΎΠ΄ сС осигурява Ρ‡Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° двигатСля V8, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΎΡ‚ Google (Π² допълнСниС, Microsoft Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° вСрсия Π½Π° Node.js с двигатСля Chakra-Core). Π’ основата си Node.js Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks ΠΈ внСдряванСто Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² Tcl, Π½ΠΎ Ρ†ΠΈΠΊΡŠΠ»ΡŠΡ‚ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² Node.js Π΅ скрит ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π° Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€.

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€