Rafael Gonzaga

2024-04-24, Version 22.0.0 (Current), @RafaelGSS and @marco-ippolito

We're excited to announce the release of Node.js 22! Highlights include require()ing ESM graphs, WebSocket client, updates of the V8 JavaScript engine, and more! As a reminder, Node.js 22 will enter long-term support (LTS) in October, but until then, it will be the "Current" release for the next six months. We encourage you to explore the new features and benefits offered by this latest release and evaluate their potential impact on your applications.

Other Notable Changes

  • [25c79f3331] - esm: drop support for import assertions (Nicolò Ribaudo) #52104
  • [818c10e86d] - lib: improve perf of AbortSignal creation (Raz Luvaton) #52408
  • [4f68c7c1c9] - watch: mark as stable (Moshe Atlow) #52074
  • [02b0bc01fe] - (SEMVER-MAJOR) deps: update V8 to 12.4.254.14 (Michaël Zasso) #52465
  • [c975384264] - (SEMVER-MAJOR) lib: enable WebSocket by default (Aras Abbasi) #51594
  • [1abff07392] - (SEMVER-MAJOR) stream: bump default highWaterMark (Robert Nagy) #52037
  • [1a5acd0638] - (SEMVER-MAJOR) v8: enable maglev on supported architectures (Keyhan Vakil) #51360
  • [128c60d906] - (SEMVER-MINOR) cli: implement node --run <script-in-package-json> (Yagiz Nizipli) #52190
  • [151d365ad1] - (SEMVER-MINOR) fs: expose glob and globSync (Moshe Atlow) #51912
  • [5f7fad2605] - (SEMVER-MINOR) module: support require()ing synchronous ESM graphs (Joyee Cheung) #51977

Semver-Major Commits

  • [2b1e7c2fcb] - (SEMVER-MAJOR) build: compile with C++20 support on Windows (StefanStojanovic) #52465
  • [12d00f1479] - (SEMVER-MAJOR) build: reset embedder string to "-node.0" (Michaël Zasso) #52465
  • [5f08e11a3c] - (SEMVER-MAJOR) build: reset embedder string to "-node.0" (Michaël Zasso) #52293
  • [94f0369d1d] - (SEMVER-MAJOR) build: reset embedder string to "-node.0" (Michaël Zasso) #51362
  • [58674cd1d8] - (SEMVER-MAJOR) build: reset embedder string to "-node.0" (Michaël Zasso) #50115
  • [60e836427e] - (SEMVER-MAJOR) console: treat non-strings as separate argument in console.assert() (Jacob Hummer) #49722
  • [d62ab3a1ef] - (SEMVER-MAJOR) crypto: runtime deprecate hmac constructor (Marco Ippolito) #52071
  • [de0602d190] - (SEMVER-MAJOR) crypto: runtime deprecate Hash constructor (Marco Ippolito) #51880
  • [215f4d04b7] - (SEMVER-MAJOR) crypto: move createCipher and createDecipher to eol (Marco Ippolito) #50973
  • [30801b8aaf] - (SEMVER-MAJOR) deps: V8: cherry-pick cd10ad7cdbe5 (Joyee Cheung) #52465
  • [521b629ab1] - (SEMVER-MAJOR) deps: V8: revert CL 5331688 (Michaël Zasso) #52465
  • [3795e97e6c] - (SEMVER-MAJOR) deps: patch V8 to support compilation with MSVC (StefanStojanovic) #52465
  • [5bde9e677d] - (SEMVER-MAJOR) deps: silence internal V8 deprecation warning (Michaël Zasso) #52465
  • [46e628c6f2] - (SEMVER-MAJOR) deps: patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #52465
  • [f824e40a82] - (SEMVER-MAJOR) deps: remove usage of a C++20 feature from V8 (Michaël Zasso) #52465
  • [d2c84c9a13] - (SEMVER-MAJOR) deps: avoid compilation error with ASan (Michaël Zasso) #52465
  • [95d6045bdb] - (SEMVER-MAJOR) deps: disable V8 concurrent sparkplug compilation (Michaël Zasso) #52465
  • [00f55f5743] - (SEMVER-MAJOR) deps: silence irrelevant V8 warning (Michaël Zasso) #52465
  • [764085aa66] - (SEMVER-MAJOR) deps: always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #52465
  • [02b0bc01fe] - (SEMVER-MAJOR) deps: update V8 to 12.4.254.14 (Michaël Zasso) #52465
  • [0ec50a19dd] - (SEMVER-MAJOR) deps: V8: cherry-pick cd10ad7cdbe5 (Joyee Cheung) #52293
  • [021b0b7dee] - (SEMVER-MAJOR) deps: V8: backport c4be0a97f981 (Richard Lau) #52293
  • [681aaf85c7] - (SEMVER-MAJOR) deps: silence internal V8 deprecation warning (Michaël Zasso) #52293
  • [c563a1c4e4] - (SEMVER-MAJOR) deps: patch V8 to support compilation with MSVC (Stefan Stojanovic) #52293
  • [11e94b9987] - (SEMVER-MAJOR) deps: patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #52293
  • [856163e23c] - (SEMVER-MAJOR) deps: remove usage of a C++20 feature from V8 (Michaël Zasso) #52293
  • [b530214127] - (SEMVER-MAJOR) deps: avoid compilation error with ASan (Michaël Zasso) #52293
  • [8054f69dd9] - (SEMVER-MAJOR) deps: disable V8 concurrent sparkplug compilation (Michaël Zasso) #52293
  • [dee908be42] - (SEMVER-MAJOR) deps: silence irrelevant V8 warning (Michaël Zasso) #52293
  • [cf069414ee] - (SEMVER-MAJOR) deps: always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #52293
  • [cc5792dd85] - (SEMVER-MAJOR) deps: update V8 to 12.3.219.16 (Michaël Zasso) #52293
  • [61a0d3b4c4] - (SEMVER-MAJOR) deps: V8: backport c4be0a97f981 (Richard Lau) #51362
  • [f55380a725] - (SEMVER-MAJOR) deps: V8: cherry-pick f8d5e576b814 (Richard Lau) #51362
  • [b9d806a2dd] - (SEMVER-MAJOR) deps: patch V8 to support compilation with MSVC (StefanStojanovic) #51362
  • [63b58bc17b] - (SEMVER-MAJOR) deps: patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #51362
  • [86056353c4] - (SEMVER-MAJOR) deps: remove usage of a C++20 feature from V8 (Michaël Zasso) #51362
  • [2e0efc1c8d] - (SEMVER-MAJOR) deps: avoid compilation error with ASan (Michaël Zasso) #51362
  • [59e6f62e34] - (SEMVER-MAJOR) deps: disable V8 concurrent sparkplug compilation (Michaël Zasso) #51362
  • [0423f7e27e] - (SEMVER-MAJOR) deps: silence irrelevant V8 warning (Michaël Zasso) #51362
  • [f36620806d] - (SEMVER-MAJOR) deps: always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #51362
  • [09a8440b45] - (SEMVER-MAJOR) deps: update V8 to 12.2.281.27 (Michaël Zasso) #51362
  • [0da3beebfc] - (SEMVER-MAJOR) deps: V8: cherry-pick de611e69ad51 (Keyhan Vakil) #50115
  • [b982335637] - (SEMVER-MAJOR) deps: V8: cherry-pick 0fd478bcdabd (Joyee Cheung) #50115
  • [481a90116c] - (SEMVER-MAJOR) deps: V8: cherry-pick 0f9ebbc672c7 (Chengzhong Wu) #50115
  • [782addbdc3] - (SEMVER-MAJOR) deps: V8: cherry-pick 8f0b94671ddb (Lu Yahan) #50115
  • [b682e7f540] - (SEMVER-MAJOR) deps: V8: cherry-pick f7d000a7ae7b (Luke Albao) #50115
  • [a60090c52f] - (SEMVER-MAJOR) deps: V8: cherry-pick 25902244ad1a (Joyee Cheung) #50115
  • [8441d1fc18] - (SEMVER-MAJOR) deps: patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #50115
  • [e8e9bbd7a9] - (SEMVER-MAJOR) deps: remove usage of a C++20 feature from V8 (Michaël Zasso) #50115
  • [785d5cd006] - (SEMVER-MAJOR) deps: avoid compilation error with ASan (Michaël Zasso) #50115
  • [7071c1dafd] - (SEMVER-MAJOR) deps: disable V8 concurrent sparkplug compilation (Michaël Zasso) #50115
  • [d1d60b297d] - (SEMVER-MAJOR) deps: silence irrelevant V8 warning (Michaël Zasso) #50115
  • [5b240c62f9] - (SEMVER-MAJOR) deps: always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #50115
  • [d8c97e4857] - (SEMVER-MAJOR) deps: update V8 to 11.9.169.7 (Michaël Zasso) #50115
  • [b9df88a8c2] - (SEMVER-MAJOR) doc: runtime deprecate flag --trace-atomics-wait (marco-ippolito) #51179
  • [9ba5df30b4] - (SEMVER-MAJOR) doc: bump FreeBSD experimental support to 13.2 (Michaël Zasso) #51231
  • [900d79caf2] - (SEMVER-MAJOR) doc: add migration paths for deprecated utils (Marco Ippolito) #50488
  • [8206f6bb7f] - (SEMVER-MAJOR) fs: runtime deprecate fs.Stats constructor (Marco Ippolito) #52067
  • [c14133503a] - (SEMVER-MAJOR) fs: use private fields instead of symbols for Dir (Jungku Lee) #51037
  • [abbdc3efaa] - (SEMVER-MAJOR) fs: make stats date fields lazy (Yagiz Nizipli) #50908
  • [4b76ccea95] - (SEMVER-MAJOR) http: preserve raw header duplicates in writeHead after setHeader calls (Tim Perry) #50394
  • [c975384264] - (SEMVER-MAJOR) lib: enable WebSocket by default (Aras Abbasi) #51594
  • [351495e938] - (SEMVER-MAJOR) lib,test: handle new Iterator global (Michaël Zasso) #51362
  • [a8b21fdc90] - (SEMVER-MAJOR) process: wait for 'exit' before printing result (Antoine du Hamel) #52172
  • [582ff5037c] - (SEMVER-MAJOR) src: update NODE_MODULE_VERSION to 127 (Michaël Zasso) #52465
  • [c5c4b50260] - (SEMVER-MAJOR) src: update NODE_MODULE_VERSION to 126 (Michaël Zasso) #52293
  • [d248639285] - (SEMVER-MAJOR) src: use supported API to get stalled TLA messages (Michaël Zasso) #51362
  • [d34b02db4c] - (SEMVER-MAJOR) src: update default V8 platform to override functions with location (Etienne Pierre-Doray) #51362
  • [d9c47e9b5f] - (SEMVER-MAJOR) src: add missing TryCatch (Michaël Zasso) #51362
  • [5cddd3b2d8] - (SEMVER-MAJOR) src: update NODE_MODULE_VERSION to 124 (Michaël Zasso) #51362
  • [1528846ada] - (SEMVER-MAJOR) src: use non-deprecated v8::Uint8Array::kMaxLength (Michaël Zasso) #50115
  • [7166986626] - (SEMVER-MAJOR) src: adapt to v8::Exception API change (Michaël Zasso) #50115
  • [4782818020] - (SEMVER-MAJOR) src: use non-deprecated version of CreateSyntheticModule (Michaël Zasso) #50115
  • [2cff0ce411] - (SEMVER-MAJOR) src: update NODE_MODULE_VERSION to 122 (Michaël Zasso) #50115
  • [1abff07392] - (SEMVER-MAJOR) stream: bump default highWaterMark (Robert Nagy) #52037
  • [9efc84a2cb] - (SEMVER-MAJOR) test: mark test-worker-arraybuffer-zerofill as flaky (Michaël Zasso) #51362
  • [84c2e712eb] - (SEMVER-MAJOR) test: mark some GC-related tests as flaky (Michaël Zasso) #51362
  • [cdc4437b87] - (SEMVER-MAJOR) test: allow slightly more diff in memory leak test (Michaël Zasso) #51362
  • [515b007fae] - (SEMVER-MAJOR) test: replace always-opt flag with alway-turbofan (Michaël Zasso) #50115
  • [2341805eb2] - (SEMVER-MAJOR) test: remove tests that create very large buffers (Michaël Zasso) #50115
  • [941cef5636] - (SEMVER-MAJOR) test: adapt to new V8 trusted memory spaces (Michaël Zasso) #50115
  • [29de7f82cd] - (SEMVER-MAJOR) test_runner: omit filtered test from output (Colin Ihrig) #52221
  • [00dc6d9d97] - (SEMVER-MAJOR) test_runner: improve --test-name-pattern to allow matching single test (Michał Drobniak) #51577
  • [5def8019d5] - (SEMVER-MAJOR) tools: update V8 gypfiles for 12.4 (Michaël Zasso) #52465
  • [c22793d050] - (SEMVER-MAJOR) tools: roughly port v8_abseil to gyp (Michaël Zasso) #51362
  • [ffb0302f0c] - (SEMVER-MAJOR) tools: update V8 gypfiles for 12.2 (Michaël Zasso) #51362
  • [aadea12440] - (SEMVER-MAJOR) tools: update V8 gypfiles for 12.1 (Michaël Zasso) #51362
  • [7784773967] - (SEMVER-MAJOR) tools: update V8 gypfiles for 12.0 (Michaël Zasso) #51362
  • [9fe0424baa] - (SEMVER-MAJOR) trace_events: use private fields instead of symbols for Tracing (Jungku Lee) #51180
  • [e96cd25007] - (SEMVER-MAJOR) util: runtime deprecate util.log (Marco Ippolito) #50488
  • [6cf20d5e43] - (SEMVER-MAJOR) util: runtime deprecate util.isUndefined (Marco Ippolito) #50488
  • [09e424921f] - (SEMVER-MAJOR) util: runtime deprecate util.isSymbol (Marco Ippolito) #50488
  • [80b6bfd4e9] - (SEMVER-MAJOR) util: runtime deprecate util.isString (Marco Ippolito) #50488
  • [d419edded9] - (SEMVER-MAJOR) util: runtime deprecate util.isRegExp (Marco Ippolito) #50488
  • [e0b8de78ed] - (SEMVER-MAJOR) util: runtime deprecate util.isPrimitive (Marco Ippolito) #50488
  • [5478e1129a] - (SEMVER-MAJOR) util: runtime deprecate util.isObject (Marco Ippolito) #50488
  • [b05b1dd541] - (SEMVER-MAJOR) util: runtime deprecate util.isNumber (Marco Ippolito) #50488
  • [5af9bf5f6a] - (SEMVER-MAJOR) util: runtime deprecate util.isNullOrUndefined (Marco Ippolito) #50488
  • [860a10e10e] - (SEMVER-MAJOR) util: runtime deprecate util.isNull (Marco Ippolito) #50488
  • [70330f5c2b] - (SEMVER-MAJOR) util: runtime deprecate util.isFunction (Marco Ippolito) #50488
  • [7c69c33acc] - (SEMVER-MAJOR) util: runtime deprecate util.isError (Marco Ippolito) #50488
  • [a0c5b871a9] - (SEMVER-MAJOR) util: runtime deprecate util.isDate (Marco Ippolito) #50488
  • [3c670cb15d] - (SEMVER-MAJOR) util: runtime deprecation util.isBuffer (Marco Ippolito) #50488
  • [c17a448ca9] - (SEMVER-MAJOR) util: runtime deprecation util.isBoolean (Marco Ippolito) #50488
  • [fbb2f891aa] - (SEMVER-MAJOR) util: runtime deprecate util.isArray (Marco Ippolito) #50488
  • [22d8062e42] - (SEMVER-MAJOR) util: runtime deprecation util._extend (Marco Ippolito) #50488
  • [1a5acd0638] - (SEMVER-MAJOR) v8: enable maglev on supported architectures (Keyhan Vakil) #51360

Semver-Minor Commits

  • [128c60d906] - (SEMVER-MINOR) cli: implement node --run <script-in-package-json> (Yagiz Nizipli) #52190
  • [f69946b905] - (SEMVER-MINOR) deps: update simdutf to 5.0.0 (Daniel Lemire) #52138
  • [828ad42eee] - (SEMVER-MINOR) deps: update undici to 6.3.0 (Node.js GitHub Bot) #51462
  • [05f8172188] - (SEMVER-MINOR) deps: update undici to 6.2.1 (Node.js GitHub Bot) #51278
  • [a0c466810a] - (SEMVER-MINOR) doc: deprecate fs.Stats public constructor (Marco Ippolito) #51879
  • [151d365ad1] - (SEMVER-MINOR) fs: expose glob and globSync (Moshe Atlow) #51912
  • [5f7fad2605] - (SEMVER-MINOR) module: support require()ing synchronous ESM graphs (Joyee Cheung) #51977
  • [009665fb56] - (SEMVER-MINOR) report: add --report-exclude-network option (Ethan Arrowood) #51645
  • [80f86e5d02] - (SEMVER-MINOR) src: add C++ ProcessEmitWarningSync() (Joyee Cheung) #51977
  • [78be0d0f1c] - (SEMVER-MINOR) src: add uv_get_available_memory to report and process (theanarkh) #52023
  • [b34512e38e] - (SEMVER-MINOR) src: preload function for Environment (Cheng Zhao) #51539
  • [7d258db1d7] - (SEMVER-MINOR) stream: support typed arrays (IlyasShabi) #51866
  • [5276c0d5d4] - (SEMVER-MINOR) test_runner: add suite() (Colin Ihrig) #52127
  • [84de97a61e] - (SEMVER-MINOR) test_runner: support forced exit (Colin Ihrig) #52038
  • [aac5ad901d] - (SEMVER-MINOR) test_runner: add test:complete event to reflect execution order (Moshe Atlow) #51909
  • [9a1e01c4ce] - (SEMVER-MINOR) util: support array of formats in util.styleText (Marco Ippolito) #52040
  • [7f2d61f82a] - (SEMVER-MINOR) v8: implement v8.queryObjects() for memory leak regression testing (Joyee Cheung) #51927
  • [d1d5da22e4] - (SEMVER-MINOR) vm: harden module type checks (Chengzhong Wu) #52162

Semver-Patch Commits