ืกืขืจื•ื•ื™ืจืขืจ-ื–ื™ื™ึทื˜ ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜ ืคึผืœืึทื˜ืคืึธืจืžืข Node.js 19.0 ืื™ื– ื‘ื ื™ืžืฆื

Node.js 19.0, ืึท ืคึผืœืึทื˜ืคืึธืจืžืข ืคึฟืึทืจ ืคืœื™ืกื ื“ื™ืง ื ืขืฅ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื™ืŸ ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜, ืื™ื– ื‘ืืคืจื™ื™ื˜. 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 ืฆื•ื•ื™ื™ึทื’, ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ ื“ืจื™ื˜ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ Intl.NumberFormat API ืื™ื– ื‘ืืžืขืจืงื˜, ื•ื•ืึธืก ืžื•ืกื™ืฃ ื ื™ื™ึท ืคืึทื ื’ืงืฉืึทื ื– ืคึฟืึธืจืžืึทื˜ ืจืึทื ื’ืข (), formatRangeToParts () ืื•ืŸ selectRange (), ื’ืจื•ืคึผื™ื ื’ ืคื•ืŸ ืฉื˜ืขืœื˜, ื ื™ื™ึท ืึธืคึผืฆื™ืขืก ืคึฟืึทืจ ืจืึทื•ื ื“ื™ื ื’ ืื•ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืคึผื™ื ื˜ืœืขื›ืงื™ื™ึทื˜, ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื˜ื™ื™ึทื˜ืฉืŸ ืกื˜ืจื™ื ื’ืก ื•ื•ื™ ื“ืขืฆื™ืžืึทืœ ื ื•ืžืขืจืŸ. ื“ื™ ื™ื ืงืœื•ื“ืขื“ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– llhttp 8.1.0 ืื•ืŸ npm 8.19.2 ื–ืขื ืขืŸ ืื•ื™ืš ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜.
  • ืึทืŸ ื™ืงืกืคึผืขืจืžืขื ืึทืœ "ื ืึธื“ืข -ื•ื•ืึทื˜ืฉ" ื‘ืึทืคึฟืขืœ ืื™ื– ืคืืจื’ืขืœื™ื™ื’ื˜ ืžื™ื˜ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ืึท ื•ื•ืึทืš ืžืึธื“ืข ื•ื•ืึธืก ื™ื ืฉื•ืจื– ืึทื– ื“ืขืจ ืคึผืจืึธืฆืขืก ืื™ื– ืจื™ืกื˜ืึทืจื˜ื™ื“ ื•ื•ืขืŸ ื“ื™ ื™ืžืคึผืึธืจื˜ื™ื“ ื˜ืขืงืข ืขื ื“ืขืจื•ื ื’ืขืŸ (ืœืžืฉืœ, ืื•ื™ื‘ "ื ืึธื“ืข -watch index.js" ืื™ื– ืขืงืกืึทืงื™ื•ื˜ืึทื“, ื“ืขืจ ืคึผืจืึธืฆืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“. ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืจื™ืกื˜ืึทืจื˜ื™ื“ ื•ื•ืขืŸ index.js ืขื ื“ืขืจื•ื ื’ืขืŸ).
  • ืคึฟืึทืจ ืึทืœืข ืึทื•ื˜ื’ืึธื•ื™ื ื’ HTTP / HTTPS ืงืึทื ืขืงืฉืึทื ื–, ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ HTTP 1.1 Keep-Alive ืžืขืงืึทื ื™ื–ืึทื ืื™ื– ืขื ื™ื™ื‘ืึทืœื“, ื•ื•ืึธืก ืœืึธื–ืŸ ื“ื™ ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ ืึธืคึฟืŸ ืคึฟืึทืจ ืึท ื–ื™ื›ืขืจ ืฆื™ื™ื˜ ืฆื• ืคึผืจืึธืฆืขืก ืขื˜ืœืขื›ืข ื”ื˜ื˜ืคึผ ืจื™ืงื•ื•ืขืก ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืงืฉืจ. Keep-Alive ืื™ื– ื’ืขืจื™ื›ื˜ ืฆื• ืคึฟืึทืจื‘ืขืกืขืจืŸ ื˜ืจื•ืคึผื•ื˜ ืื•ืŸ ืคืึธืจืฉื˜ืขืœื•ื ื’. ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ื“ื™ ืขืคึฟืขื ืขืŸ ืฆื™ื™ื˜ ืคึฟืึทืจ ืงืฉืจ ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜ ืฆื• 5 ืกืขืงื•ื ื“ืขืก. ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืคึผืึทืจืกื™ื ื’ ื“ื™ Keep-Alive HTTP ื›ืขื“ืขืจ ืื™ืŸ ืกืขืจื•ื•ืขืจ ืจืขืกืคึผืึธื ืกืขืก ืื™ื– ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฆื• ื“ื™ HTTP ืงืœื™ืขื ื˜ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ, ืื•ืŸ ืึธื˜ืึทืžืึทื˜ื™ืง ื“ื™ืกืงืึทื ืขืงืฉืึทืŸ ืคื•ืŸ ื™ื ืึทืงื˜ื™ื•ื• ืงืœื™ื™ืึทื ืฅ ื ื™ืฆืŸ Keep-Alive ืื™ื– ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฆื• ื“ื™ Node.js HTTP ืกืขืจื•ื•ืขืจ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ.
  • ื“ื™ ื•ื•ืขื‘ืงืจื™ืคึผื˜ืึธ ืึทืคึผื™ ืื™ื– ื˜ืจืึทื ืกืคืขืจื“ ืฆื• ื“ื™ ืกื˜ืึทื‘ื™ืœ ืงืึทื˜ืขื’ืึธืจื™ืข, ืžื™ื˜ ื“ื™ ื•ื™ืกื ืขื ืคื•ืŸ ืคืึทื ื’ืงืฉืึทื ื– ื ื™ืฆืŸ ื“ื™ ืขื“25519, ืขื“448, ืงืก25519 ืื•ืŸ ืงืก448 ืึทืœื’ืขืจื™ื“ืึทืžื–. ืฆื• ืึทืงืกืขืก ื“ื™ ื•ื•ืขื‘ืงืจื™ืคึผื˜ืึธ ืžืึธื“ื•ืœืข, ืื™ืจ ืงืขื ื˜ ืื™ืฆื˜ ื ื•ืฆืŸ globalThis.crypto ืึธื“ืขืจ ื“ืึทืจืคืŸ ('ื ืึธื“ืข: ืงืจื™ืคึผื˜ืึธ'). ื•ื•ืขื‘ืงืจื™ืคึผื˜ืึธ.
  • ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ DTrace, SystemTap ืื•ืŸ ETW (Event Tracing for Windows) ื˜ืจื™ื™ืกื™ื ื’ ืžื›ืฉื™ืจื™ื ืื™ื– ืึทื•ื•ืขืงื’ืขื ื•ืžืขืŸ, ื“ื™ ื•ื™ืฉืึทืœื˜ ืคื•ืŸ ื•ื•ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ืงืึทื ืกื™ื“ืขืจื“ ื™ื ืึทืคึผืจืึธื•ืคึผืจื™ื™ื˜ ืจืขื›ื˜ ืฆื• ื“ืขืจ ืงืึทืžืคึผืœืขืงืกื™ื˜ื™ ืคื•ืŸ ืžื™ื™ื ื˜ื™ื™ื ื™ื ื’ ืขืก ืึทืจื•ื™ืฃ ืฆื• ื˜ืึธื’ ืื™ืŸ ื“ืขืจ ืึทื•ื•ืขืง ืคื•ืŸ ืึท ื’ืขื”ืขืจื™ืง ืฉื˜ื™ืฆืŸ ืคึผืœืึทืŸ.

ื“ื™ Node.js ืคึผืœืึทื˜ืคืึธืจืžืข ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื‘ื™ื™ื“ืข ืคึฟืึทืจ ืกืขืจื•ื•ืขืจ ื–ื™ื™ึทื˜ ืฉื˜ื™ืฆืŸ ืคื•ืŸ ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–, ืื•ืŸ ืคึฟืึทืจ ืงืจื™ื™ื™ื˜ื™ื ื’ ืคึผืจืึธืกื˜ ืงืœื™ืขื ื˜ ืื•ืŸ ืกืขืจื•ื•ืขืจ ื ืขืฅ ืžื’ื™ืœื”. ืฆื• ื™ืงืกืคึผืึทื ื“ ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืคื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืคึฟืึทืจ Node.js, ืึท ื’ืจื•ื™ืก ื–ืึทืžืœื•ื ื’ ืคื•ืŸ ืžืึทื“ื–ืฉื•ืœื– ืื™ื– ืฆื•ื’ืขื’ืจื™ื™ื˜, ืื™ืŸ ื•ื•ืึธืก ืื™ืจ ืงืขื ืขืŸ ื’ืขืคึฟื™ื ืขืŸ ืžืึทื“ื–ืฉื•ืœื– ืžื™ื˜ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื”ื˜ื˜ืคึผ, ืกืžื˜ืคึผ, ืงืกืžืคึผืคึผ, ื“ื ืก, ืคื˜ืคึผ, ื™ืžืึทืคึผ, ืคึผืึธืคึผ3 ืกืขืจื•ื•ืขืจืก ืื•ืŸ ืงืœื™ื™ืึทื ืฅ, ืžืึทื“ื–ืฉื•ืœื– ืคึฟืึทืจ ื™ื ื˜ืึทื’ืจื™ื™ืฉืึทืŸ. ืžื™ื˜ ืคืึทืจืฉื™ื“ืŸ ื•ื•ืขื‘ ืคืจืึทืžืขื•ื•ืึธืจืงืก, WebSocket ืื•ืŸ Ajax ื”ืึทื ื“ืœืขืจืก, ืงืึทื ืขืงื˜ืขืจื– ืฆื• DBMS (MySQL, PostgreSQL, SQLite, MongoDB), ืžื•ืกื˜ืขืจ ืขื ื“ื–ืฉืึทื ื–, CSS ืขื ื“ื–ืฉืึทื ื–, ื™ืžืคึผืœืึทืžืึทื ืฅ ืคื•ืŸ ืงืจื™ืคึผื˜ืึธื’ืจืึทืคื™ืง ืึทืœื’ืขืจื™ื“ืึทืžื– ืื•ืŸ ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ ืกื™ืกื˜ืขืžืขืŸ (OAuth), XML ืคึผืึทืจืกืขืจืก.

ืฆื• ืฉืขืคึผืŸ ื’ืจื•ื™ืก ื ื•ืžืขืจ ืคื•ืŸ ืคึผืึทืจืึทืœืขืœ ืจื™ืงื•ื•ืขืก, Node.js ื ื™ืฆื˜ ืึทืŸ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ืงืึธื“ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืžืึธื“ืขืœ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื ื™ื˜-ื‘ืœืึทืงื™ื ื’ ื’ืขืฉืขืขื ื™ืฉ ืคึผืจืึทืกืขืกื™ื ื’ ืื•ืŸ ื“ื™ืคื™ื™ื ื™ื ื’ ืงืึทืœืœื‘ืึทืงืง ื”ืึทื ื“ืœืขืจืก. ืฉื˜ื™ืฆื˜ ืžืขื˜ื”ืึธื“ืก ืคึฟืึทืจ ืžื•ืœื˜ื™ืคึผืœืขืงืกื™ื ื’ ืงืึทื ืขืงืฉืึทื ื– ืึทืจื™ื™ึทื ื ืขืžืขืŸ epoll, kqueue, /dev/poll ืื•ืŸ select. ืคึฟืึทืจ ืงืฉืจ ืžื•ืœื˜ื™ืคึผืœืขืงืกื™ื ื’, ื“ื™ ืœื™ื‘ื•ื•ื• ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื™ื– ื’ืขื ื™ืฆื˜, ื•ื•ืึธืก ืื™ื– ืึทืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ืœื™ื‘ืขื•ื• ืื•ื™ืฃ ื™ื•ื ื™ืงืก ืกื™ืกื˜ืขืžืขืŸ ืื•ืŸ ืฆื• IOCP ืื•ื™ืฃ Windows. ื“ื™ ืœื™ื‘ื™ืึธ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื™ื– ื’ืขื ื™ืฆื˜ ืฆื• ืฉืึทืคึฟืŸ ืึท ืคืึธื“ืขื ื‘ืขืงืŸ, ืื•ืŸ C-ares ืื™ื– ื™ื ืึทื’ืจื™ื™ื˜ื™ื“ ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ื“ื ืก ืคึฟืจืื’ืŸ ืื™ืŸ ืึท ื ื™ื˜-ื‘ืœืึทืงื™ื ื’ ืžืึธื“ืข. ืึทืœืข ืกื™ืกื˜ืขื ืจื•ืคื˜ ื•ื•ืึธืก ืคืึทืจืฉืึทืคืŸ ื‘ืœืึทืงื™ื ื’ ื–ืขื ืขืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ ืื™ืŸ ื“ื™ ืคืึธื“ืขื ื‘ืขืงืŸ ืื•ืŸ ื“ืขืจื ืึธืš, ื•ื•ื™ ืกื™ื’ื ืึทืœ ื”ืึทื ื“ืœืขืจืก, ืคืึธืจืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ื–ื™ื™ืขืจ ืึทืจื‘ืขื˜ ืฆื•ืจื™ืง ื“ื•ืจืš ืึทืŸ ืึทื ื ื™ื™ืžื“ ืจืขืจ. ื“ื™ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜ ืงืึธื“ ืื™ื– ื™ื ืฉื•ืจื“ ื“ื•ืจืš ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ื“ื™ ื•ื•8 ืžืึธื˜ืึธืจ ื“ืขื•ื•ืขืœืึธืคึผืขื“ ื“ื•ืจืš Google (ืื™ืŸ ื“ืขืจืฆื•, ืžื™ื™ืงืจืึธืกืึธืคึฟื˜ ืื™ื– ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืึท ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹Node.js ืžื™ื˜ ื“ื™ Chakra-Core ืžืึธื˜ืึธืจ).

ืื™ืŸ ื–ื™ื™ืŸ ื”ืึทืจืฅ, Node.js ืื™ื– ืขื ืœืขืš ืฆื• ื“ื™ Perl AnyEvent, Ruby Event Machine, Python Twisted ืคืจืึทืžืขื•ื•ืึธืจืงืก ืื•ืŸ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื’ืขืฉืขืขื ื™ืฉืŸ ืื™ืŸ Tcl, ืึธื‘ืขืจ ื“ื™ ื’ืขืฉืขืขื ื™ืฉ ืฉืœื™ื™ืฃ ืื™ืŸ Node.js ืื™ื– ืคืึทืจื‘ืึธืจื’ืŸ ืคื•ืŸ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืื•ืŸ ืจื™ื–ืขืžื‘ืึทืœื– ื’ืขืฉืขืขื ื™ืฉ ืคึผืจืึทืกืขืกื™ื ื’ ืื™ืŸ ืึท ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ. ืคืœื™ืกื ื“ื™ืง ืื™ืŸ ื‘ืœืขื˜ืขืจืขืจ. ื•ื•ืขืŸ ืฉืจื™ื™ื‘ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืคึฟืึทืจ node.js, ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ื ืขืžืขืŸ ืื™ืŸ ื—ืฉื‘ื•ืŸ ื“ื™ ืกืคึผืขืกื™ืคื™ืงืก ืคื•ืŸ ื’ืขืฉืขืขื ื™ืฉ-ื’ืขื˜ืจื™ื‘ืŸ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ "var result = db.query ("ืกืขืœืขืงื˜ื™ืจืŸ..");" ืžื™ื˜ ื•ื•ืืจื˜ืŸ ืคึฟืึทืจ ื“ื™ ืงืึทืžืคึผืœื™ืฉืึทืŸ ืคื•ืŸ ืึทืจื‘ืขื˜ ืื•ืŸ ืกืึทื‘ืกืึทืงื•ื•ืึทื ื˜ ืคึผืจืึทืกืขืกื™ื ื’ ืคื•ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ, Node.js ื ื™ืฆื˜ ื“ืขื ืคึผืจื™ื ืฆื™ืคึผ ืคื•ืŸ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ื“ื•ืจื›ืคื™ืจื•ื ื’, ื™.ืข. ื“ืขืจ ืงืึธื“ ืื™ื– ืคืืจื•ื•ืื ื“ืœืขืŸ ืื™ืŸ "db.query ("ืกืขืœืขืงื˜ื™ืจืŸ ..", ืคึฟื•ื ืงืฆื™ืข (ืจืขื–ื•ืœื˜ืึทื˜) {ืจืขื–ื•ืœื˜ืึทื˜ ืคึผืจืึทืกืขืกื™ื ื’});", ืื™ืŸ ื•ื•ืึธืก ืงืึธื ื˜ืจืึธืœ ื•ื•ืขื˜ ื’ืœื™ื™ืš ืคืึธืจืŸ ืฆื• ื•ื•ื™ื™ึทื˜ืขืจ ืงืึธื“, ืื•ืŸ ื“ื™ ืึธื ืคึฟืจืขื’ ืจืขื–ื•ืœื˜ืึทื˜ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืคึผืจืึทืกืขืกื˜ ื•ื•ื™ ื“ืึทื˜ืŸ ืขืจื™ื™ื•ื•ื–.

ืžืงื•ืจ: opennet.ru

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’