JavaScript ํ”Œ๋žซํผ Node.js 22.0.0 ์‚ฌ์šฉ ๊ฐ€๋Šฅ

JavaScript๋กœ ๋„คํŠธ์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋žซํผ์ธ Node.js 22.0์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Node.js 22.0์€ ์žฅ๊ธฐ ์ง€์› ๋ธŒ๋žœ์น˜๋กœ ๋ถ„๋ฅ˜๋˜๋Š”๋ฐ, ์ด ์ƒํƒœ๋Š” ์•ˆ์ •ํ™” ์ดํ›„์ธ 22์›”์—๋งŒ ๋ถ€์—ฌ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. Node.js 30.x๋Š” 2027๋…„ 20์›” 2026์ผ๊นŒ์ง€ ์ง€์›๋ฉ๋‹ˆ๋‹ค. Node.js 18.x์˜ ์ด์ „ LTS ๋ธŒ๋žœ์น˜ ์œ ์ง€ ๊ด€๋ฆฌ๋Š” 2025๋…„ 21์›”๊นŒ์ง€ ์ง€์†๋˜๋ฉฐ, ๋งˆ์ง€๋ง‰ LTS ๋ธŒ๋žœ์น˜ 1.x 2024๋…„ ์ „์ธ XNUMX๋…„ XNUMX์›”๊นŒ์ง€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. Node.js XNUMX.x์˜ ์Šคํ…Œ์ด์ง• ๋ธŒ๋žœ์น˜๋Š” XNUMX๋…„ XNUMX์›” XNUMX์ผ์— ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๊ฐœ์„  ์‚ฌํ•ญ:

  • V8 ์—”์ง„์ด Chromium 12.4์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ„์ „ 124๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. V21 8 ์—”์ง„์„ ์‚ฌ์šฉํ–ˆ๋˜ Node.js 11.8 ๋ธŒ๋žœ์น˜์™€ ๋น„๊ตํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ค‘ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ(Kotlin, PHP, Java ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์„ WebAssembly๋กœ ์‰ฝ๊ฒŒ ํฌํŒ…ํ•˜๋Š” WasmGC ํ™•์žฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. WasmGC๋Š” ๋น„์„ ํ˜• ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ๊ตฌ์กฐ์™€ ๋ฐฐ์—ด์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    • ์œ ์‚ฌ ๋ฐฐ์—ด, ๋ฐ˜๋ณต ๊ฐ€๋Šฅ ๋˜๋Š” ๋น„๋™๊ธฐ ๋ฐ˜๋ณต ๊ฐ€๋Šฅ ๊ฐ์ฒด์—์„œ ๋ณต์‚ฌ๋œ Array ๊ฐ์ฒด์˜ ์ƒˆ ์ธ์Šคํ„ด์Šค๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” Array.fromAsync() ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
    • .map, .filter, .find, .take, .drop, .forEach ๋ฐ .reduce์™€ ๊ฐ™์€ ๋ฐ˜๋ณต์ž ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ’์˜ ์ปฌ๋ ‰์…˜์„ ์ •์˜ํ•˜๊ณ  ๊ต์ง‘ํ•ฉ, ํ•ฉ์ง‘ํ•ฉ, ์ฐจ์ด, ๋ง์…ˆ๊ณผ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” Set ๊ฐœ์ฒด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • Maglev ์ตœ์ ํ™” JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” JavaScript ์ฝ”๋“œ์— ๋Œ€ํ•œ ๊ณ ์„ฑ๋Šฅ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Maglev๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์žฅ๊ธฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ๋‹จ๊ธฐ CLI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์†๋„๋ฅผ ํฌ๊ฒŒ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Jetstrea ํ…Œ์ŠคํŠธ๋ฅผ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์€ 7.5%, ์†๋„๊ณ„ ํ…Œ์ŠคํŠธ๋Š” 5% ๋‹จ์ถ•๋ฉ๋‹ˆ๋‹ค.
  • highWaterMark ์˜ต์…˜์˜ ๊ฐ’์„ 16KB์—์„œ 65KB(๋…นํ™”๊ฐ€ ๋ฒ„ํผ๋ง๋˜๋Š” ์ตœ๋Œ€ ํ•œ๋„ ์ •์˜)๋กœ ์ฆ๊ฐ€ํ•˜์—ฌ ์ŠคํŠธ๋ฆผ ์ž‘์—…์ด ๊ฐ€์†ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ ์ œํ•œ๋œ RAM์—์„œ ์‹คํ–‰๋˜๋„๋ก ์„ค๊ณ„๋œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ setDefaultHighWaterMark() ํ˜ธ์ถœ์„ ํ†ตํ•ด ์ด์ „ ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ ค์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • AbortSignal ์ธ์Šคํ„ด์Šคํ™”๋ฅผ ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค์–ด fetch() ๋ฐ ํ…Œ์ŠคํŠธ ์‹คํ–‰๊ธฐ API์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ์˜ ๋™๊ธฐ ์ž‘์—…๊ณผ ๊ด€๋ จ๋œ API์˜ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋™๊ธฐ ๋ชจ๋“œ์—์„œ JavaScript ESM ๋ชจ๋“ˆ(ECMAScript ๋ชจ๋“ˆ)์„ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด "require()" ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋Š” ์‹คํ—˜์  ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ESM ๋ชจ๋“ˆ์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ Node.js ๊ด€๋ จ CommonJS ๋ชจ๋“ˆ์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. "require()"๋ฅผ ํ†ตํ•ด ๋กœ๋“œํ•˜๋ ค๋ฉด ESM ๋ชจ๋“ˆ์„ ๋™๊ธฐ ๋ชจ๋“œ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ตœ์ƒ์œ„ ์ˆ˜์ค€์—์„œ ๋Œ€๊ธฐํ•˜์ง€ ์•Š์Œ). "--experimental-require-module" ํ”Œ๋ž˜๊ทธ๋ฅผ ํ†ตํ•ด ์ง€์›์ด ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.
  • "--run" ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ package.json ํŒŒ์ผ์— ์ •์˜๋œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‹คํ—˜์  ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "
  • ๊ฐ€์ ธ์˜จ ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ๊ฐ์‹œ ๋ชจ๋“œ๊ฐ€ ๊ตฌํ˜„๋˜์–ด "node โ€“watch" ๋ช…๋ น์ด ์•ˆ์ • ๋ฒ”์ฃผ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: "node โ€“watch index.js"๊ฐ€ ์‹คํ–‰๋˜๋ฉด index.js๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
  • WebSocket API์˜ ๊ธฐ๋ณธ ๊ตฌํ˜„์ด ์•ˆ์ •ํ™”๋˜์–ด ์ถ”๊ฐ€ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ ๋„ WebSocket์„ ํด๋ผ์ด์–ธํŠธ ๋ชจ๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Navigator API์— ๋Œ€ํ•œ ๋ถ€๋ถ„ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Webstreams API์—๋Š” deflate-raw ์••์ถ• ํ˜•์‹์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ๊ฒฝ๋กœ์˜ ํŒจํ„ด ์ผ์น˜๋ฅผ ์œ„ํ•ด node:fsmodule์— glob ๋ฐ globSync ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ž˜๋ชป ๊ตฌ์„ฑ๋œ IPv6 ์Šคํƒ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. IPv6 ์ž‘๋™์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋น ๋ฅธ ๋กค๋ฐฑ์„ ์œ„ํ•ด Happy Eyeballs ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • util API๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์—…๋ฐ์ดํŠธ๋œ ์ข…์†์„ฑ ๋ฒ„์ „: 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 ํ•ธ๋“ค๋Ÿฌ, DBMS(MySQL, PostgreSQL, SQLite, MongoDB) ์ปค๋„ฅํ„ฐ, ํ…œํ”Œ๋ฆฟ ์—”์ง„, CSS ์—”์ง„, ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ์ธ์ฆ ์‹œ์Šคํ…œ(OAuth) ๊ตฌํ˜„, XML ํŒŒ์„œ ๋“ฑ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ์ˆ˜์˜ ๋ณ‘๋ ฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Node.js๋Š” ๋น„์ฐจ๋‹จ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐ ์ฝœ๋ฐฑ ํ•ธ๋“ค๋Ÿฌ ์ •์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋น„๋™๊ธฐ ์ฝ”๋“œ ์‹คํ–‰ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ ์—ฐ๊ฒฐ์— ์ง€์›๋˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” epoll, kqueue, /dev/poll ๋ฐ select๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ์—๋Š” Unix ์‹œ์Šคํ…œ์˜ libev ๋ฐ Windows์˜ IOCP์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ธ libuv ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. libeio ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์Šค๋ ˆ๋“œ ํ’€์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ c-ares๋Š” ๋น„์ฐจ๋‹จ ๋ชจ๋“œ์—์„œ DNS ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ†ตํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฐจ๋‹จ์„ ์œ ๋ฐœํ•˜๋Š” ๋ชจ๋“  ์‹œ์Šคํ…œ ํ˜ธ์ถœ์€ ์Šค๋ ˆ๋“œ ํ’€ ๋‚ด์—์„œ ์‹คํ–‰๋œ ๋‹ค์Œ ์‹ ํ˜ธ ์ฒ˜๋ฆฌ๊ธฐ์ฒ˜๋Ÿผ ์ž‘์—… ๊ฒฐ๊ณผ๋ฅผ ๋ช…๋ช…๋˜์ง€ ์•Š์€ ํŒŒ์ดํ”„๋ฅผ ํ†ตํ•ด ๋‹ค์‹œ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

Google์ด ๊ฐœ๋ฐœํ•œ V8 ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ JavaScript ์ฝ”๋“œ ์‹คํ–‰์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค(๋˜ํ•œ Microsoft๋Š” Chakra-Core ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ Node.js ๋ฒ„์ „์„ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค). ํ•ต์‹ฌ์ ์œผ๋กœ Node.js๋Š” Perl AnyEvent, Ruby Event Machine, Python Twisted ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ Tcl์˜ ์ด๋ฒคํŠธ ๊ตฌํ˜„๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ Node.js์˜ ์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ˆจ๊ฒจ์ ธ ์žˆ์œผ๋ฉฐ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€