Skip to content

Node.js 25.4.0 (Current)

Rafael Gonzaga

2026-01-19, Version 25.4.0 (Current), @RafaelGSS

Notable Changes

  • [8f6fada8f1] - cli: add --require-module/--no-require-module (Joyee Cheung) #60959
  • [bf8e738df4] - cli: mark --heapsnapshot-near-heap-limit as stable (Joyee Cheung) #60956
  • [7930d7a19b] - crypto: update root certificates to NSS 3.117 (Node.js GitHub Bot) #60741
  • [44f61dfb92] - doc: add @avivkeller to collaborators (Aviv Keller) #61115
  • [45903ee884] - doc: add gurgunday to collaborators (Gürgün Dayıoğlu) #61094
  • [77faa14d99] - doc: mark --build-snapshot and --build-snapshot-config as stable (Joyee Cheung) #60954
  • [aefbe4ba47] - (SEMVER-MINOR) events: repurpose events.listenerCount() to accept EventTargets (René) #60214
  • [8470e2993b] - (SEMVER-MINOR) http: add http.setGlobalProxyFromEnv() (Joyee Cheung) #60953
  • [24384d7438] - meta: add Renegade334 to collaborators (Renegade334) #60714
  • [c1acef6d0f] - module: mark require(esm) as stable (Joyee Cheung) #60959
  • [2e39f3ed6b] - module: mark module compile cache as stable (Joyee Cheung) #60971
  • [e6a05cfb4f] - (SEMVER-MINOR) module: allow subpath imports that start with #/ (Jan Martin) #60864
  • [fa927c31da] - (SEMVER-MINOR) process: preserve AsyncLocalStorage in queueMicrotask only when needed (Gürgün Dayıoğlu) #60913
  • [bd0942f4f5] - (SEMVER-MINOR) stream: do not pass readable.compose() output via Readable.from() (René) #60907
  • [5051d90100] - (SEMVER-MINOR) util: add convertProcessSignalToExitCode utility (Erick Wendel) #60963
  • [408f024906] - v8: mark v8.queryObjects() as stable (Joyee Cheung) #60957

Commits

  • [e61cfdbf50] - assert: use a set instead of an array for faster lookup (Ruben Bridgewater) #61076
  • [11861084fd] - assert,util: improve comparison performance (Ruben Bridgewater) #61176
  • [4ef4f759cb] - assert,util: fix deep comparing invalid dates skipping properties (Ruben Bridgewater) #61076
  • [c8fccd585f] - assert,util: improve deep comparison performance (Ruben Bridgewater) #61076
  • [13661a0123] - benchmark: use boolean options in benchmark tests (SeokhunEom) #60129
  • [36dead3433] - benchmark: allow boolean option values (SeokhunEom) #60129
  • [376056eaef] - benchmark: add microbench on isInsideNodeModules (Chengzhong Wu) #60991
  • [22d3e85b7a] - benchmark: fix incorrect base64 input in byteLength benchmark (semimikoh) #60841
  • [5016f75522] - benchmark: use typescript for import cjs benchmark (Joyee Cheung) #60663
  • [012a08f6eb] - buffer: let Buffer.of use heap (Сковорода Никита Андреевич) #60503
  • [65696e42ba] - build: add --shared-hdr-histogram configure flag (Antoine du Hamel) #61280
  • [6155b8836e] - build: add --shared-gtest configure flag (Antoine du Hamel) #61279
  • [e80127f49c] - build: expose libplatform symbols in shared libnode (Joyee Cheung) #61144
  • [d99805049e] - build: fix inconsistent quoting in Makefile (Antoine du Hamel) #60511
  • [3213de08e8] - build: support building crates (temporal) on windows (沈鸿飞) #61163
  • [1ad8788391] - build: remove temporal updater (Chengzhong Wu) #61151
  • [e6e25d65be] - build: add --debug-symbols to build with -g without enabling DCHECKs (Joyee Cheung) #61100
  • [7040ec94c8] - build: update test-wpt-report to use NODE instead of OUT_NODE (Filip Skokan) #61024
  • [990da3518d] - build: skip build-ci on actions with a separate test step (Chengzhong Wu) #61073
  • [3259e395c9] - build: run embedtest with node_g when BUILDTYPE=Debug (Chengzhong Wu) #60850
  • [af42ca569f] - build: ignore built-in temporal when building with shared lib (Chengzhong Wu) #60703
  • [bec7fce07a] - build: add temporal_capi gyp (Chengzhong Wu) #60703
  • [d2f50047f7] - build: fix OpenSSL version parsing for OpenSSL < 3 (Richard Lau) #60775
  • [91b20c52df] - build: add flag to compile V8 with Temporal support (Antoine du Hamel) #60701
  • [0aaed248f0] - build: add support for Visual Studio 2026 (Michaël Zasso) #60727
  • [8f6fada8f1] - cli: add --require-module/--no-require-module (Joyee Cheung) #60959
  • [bf8e738df4] - cli: mark --heapsnapshot-near-heap-limit as stable (Joyee Cheung) #60956
  • [7930d7a19b] - crypto: update root certificates to NSS 3.117 (Node.js GitHub Bot) #60741
  • [1b15453602] - deps: update cjs-module-lexer to 2.2.0 (Node.js GitHub Bot) #61271
  • [118fa97c95] - deps: update nbytes to 0.1.2 (Node.js GitHub Bot) #61270
  • [9b136db814] - deps: update ngtcp2 to 1.19.0 (Node.js GitHub Bot) #61156
  • [5635f23a50] - deps: update nghttp3 to 1.14.0 (Node.js GitHub Bot) #61187
  • [9ec35c0977] - deps: update nghttp3 to 1.13.1 (Node.js GitHub Bot) #60046
  • [4d7d37f701] - deps: update timezone to 2025c (Node.js GitHub Bot) #61138
  • [2c1e3ab19d] - deps: nghttp2: revert 7784fa979d0b (Antoine du Hamel) #61136
  • [56a6513648] - deps: update nghttp2 to 1.68.0 (nodejs-github-bot) #61136
  • [f2692c5534] - deps: remove independent temporal (Chengzhong Wu) #61072
  • [3acbf3f129] - deps: apply cargo vendor (Chengzhong Wu) #61072
  • [d2759f4805] - deps: add vendor depenency crate (Chengzhong Wu) #61072
  • [6330385174] - deps: update simdjson to 4.2.4 (Node.js GitHub Bot) #61056
  • [9835860115] - deps: update googletest to 065127f1e4b46c5f14fc73cf8d323c221f9dc68e (Node.js GitHub Bot) #61055
  • [d2e6dff2f9] - deps: brotli: cherry-pick e230f474b87 (liujiahui) #61003
  • [27da9ca1c7] - deps: upgrade npm to 11.7.0 (npm team) #61011
  • [398ba68793] - deps: V8: cherry-pick 72b0e27bd936 (pthier) #60706
  • [a8ae3b9557] - deps: update sqlite to 3.51.1 (Node.js GitHub Bot) #60899
  • [4e1edae655] - deps: update zlib to 1.3.1-63d7e16 (Node.js GitHub Bot) #60898
  • [49b5954e74] - deps: update corepack to 0.34.5 (Node.js GitHub Bot) #60842
  • [6ae415361f] - deps: upgrade npm to 11.6.4 (npm team) #60853
  • [3cc857001a] - deps: add temporal_rs 0.1.0 (Chengzhong Wu) #60703
  • [660788cd4b] - deps: update sqlite to 3.51.0 (Node.js GitHub Bot) #60614
  • [c6d7a7b7cd] - deps: upgrade npm to 11.6.3 (npm team) #60785
  • [062e15bddf] - deps: update brotli to 1.2.0 (Node.js GitHub Bot) #60540
  • [db053988db] - deps: update simdjson to 4.2.2 (Node.js GitHub Bot) #60740
  • [ea5deab531] - deps: update googletest to 1b96fa13f549387b7549cc89e1a785cf143a1a50 (Node.js GitHub Bot) #60739
  • [c23f40cca4] - deps: update minimatch to 10.1.1 (Node.js GitHub Bot) #60543
  • [479c9290b9] - deps: update corepack to 0.34.4 (Node.js GitHub Bot) #60643
  • [e42911eddd] - deps: update inspector_protocol to 1b1bcbbe060e8c8cd8704f00f78978c50991 (Node.js GitHub Bot) #60705
  • [d908c83330] - deps: update cjs-module-lexer to 2.1.1 (Node.js GitHub Bot) #60646
  • [96530a4ca6] - deps: update simdjson to 4.2.1 (Node.js GitHub Bot) #60644
  • [6b0926ef20] - deps,src: prepare for cpplint update (Michaël Zasso) #60901
  • [5ed71efa3e] - doc: fix v25 changelog after security release (Marco Ippolito) #61371
  • [c2791069a2] - doc: correct description of error.stack accessor behavior (René) #61090
  • [134780c035] - doc: add documentation for process.traceProcessWarnings (Alireza Ebrahimkhani) #53641
  • [3b08efcebb] - doc: add sqlite session disposal method (René) #61273
  • [ec1847a097] - doc: fix filename typo (Hardanish Singh) #61297
  • [2c651ce460] - doc: fix typos and grammar in BUILDING.md & onboarding.md (Hardanish Singh) #61267
  • [28fe6ea4a8] - doc: mention --newVersion release script (Rafael Gonzaga) #61255
  • [2fb35d897d] - doc: correct typo in BUILDING doc (Mike McCready) #61261
  • [8dc2501a25] - doc: correct typo in api contributing doc (Mike McCready) #61260
  • [69e357a9d4] - doc: add PR-URL requirement for security backports (Rafael Gonzaga) #61256
  • [73326ae103] - doc: add reusePort error behavior to net module (mag123c) #61250
  • [67fbf4d371] - doc: note corepack package removal in distribution doc (Mike McCready) #61207
  • [0792859e49] - doc: fix tls.connect() timeout documentation (Azad Gupta) #61079
  • [72f42b9985] - doc: missing passed, error and passed properties on TestContext (Xavier Stouder) #61185
  • [f418fcc635] - doc: clarify threat model for application-level API exposure (Rafael Gonzaga) #61184
  • [bd4710769a] - doc: correct options for net.Socket class and socket.connect (Xavier Stouder) #61179
  • [387b65ca08] - doc: document error event on readline InterfaceConstructor (Xavier Stouder) #61170
  • [6d886e10e4] - doc: add a smooth scrolling effect to the sidebar (btea) #59007
  • [23fb3a64ec] - doc: fix test settime docs (Efe) #61117
  • [808eb437ee] - doc: correct invalid collaborator profile (JJ) #61091
  • [5e8eb5fe6c] - doc: add a tip about developer mode on Windows (Joyee Cheung) #61112
  • [a4248776da] - doc: exclude compile-time flag features from security policy (Matteo Collina) #61109
  • [44f61dfb92] - doc: add @avivkeller to collaborators (Aviv Keller) #61115
  • [08b5347b41] - doc: warn about short GCM tags visibly (Tobias Nießen) #61082
  • [45903ee884] - doc: add gurgunday to collaborators (Gürgün Dayıoğlu) #61094
  • [ce5d6e22ef] - doc: update MDN links (Livia Medeiros) #61062
  • [657cbd4af3] - doc: mark sync module hooks as release candidate (Joyee Cheung) #60960
  • [a46368a82b] - doc: reorganize docs of module customization hooks (Joyee Cheung) #60960
  • [9851278e99] - doc: mark crypto.hash as stable (Joyee Cheung) #60994
  • [77faa14d99] - doc: mark --build-snapshot and --build-snapshot-config as stable (Joyee Cheung) #60954
  • [6d5f9ffc6d] - doc: add File modes cross-references in fs methods (Mohit Raj Saxena) #60286
  • [521b25a27d] - doc: add missing zstd to mjs example of zlib (Deokjin Kim) #60915
  • [9a9bed9b3a] - doc: clarify fileURLToPath security considerations (Rafael Gonzaga) #60887
  • [bebb4731b1] - doc: show the use of string expressions in the SQLTagStore example (schliepa) #60873
  • [f247c24cb0] - doc: replace column with columnNumber in example of util.getCallSites (Deokjin Kim) #60881
  • [487c1080aa] - doc: correct spelling in BUILDING.md (Rich Trott) #60875
  • [5751e3f736] - doc: update debuglog examples to use 'foo-bar' instead of 'foo' (xiaoyao) #60867
  • [ec8336b7a0] - doc: correct 'event handle' to 'event handler' in Utf8Stream drop event (Riddhi) #60692
  • [95ef052751] - doc: fix typos in changelogs (Rich Trott) #60855
  • [a10b3130c6] - doc: mark module.register as active development (Chengzhong Wu) #60849
  • [bfe8c62a2d] - doc: add fullName property to SuiteContext (PaulyBearCoding) #60762
  • [2799f594e3] - doc: add additional codemods for deprecation (Augustin Mauroy) #60811
  • [2b51d5d113] - doc: keep sidebar module visible when navigating docs (Botato) #60410
  • [2fa9917b07] - doc: fix webstorage config file property (Marco Ippolito) #60798
  • [a0691d6eb6] - doc: correct concurrency wording in test() documentation (Azad Gupta) #60773
  • [d26842c523] - doc: clarify that CQ only picks up PRs targeting main (René) #60731
  • [3e84428ffe] - doc: clarify license section and add contributor note (KaleruMadhu) #60590
  • [745ea1d61f] - doc: correct and expand documentation for SQLTagStore (René) #60200
  • [a442c27c0a] - doc: correct tls ALPNProtocols types (René) #60143
  • [d90001a579] - doc: remove mention of SMS 2FA (Antoine du Hamel) #60707
  • [7525a3fa4b] - doc: add info about renamed flag in cli.md (Antoine du Hamel) #60690
  • [db0a86897b] - doc: fix incorrect slh-dsa oids in crypto.md (Artsiom Malakhau) #60681
  • [e5ede89a94] - doc: domain.add() does not accept timer objects (René) #60675
  • [36ba9d99ba] - Revert "doc, assert: correct order of changes entries" (Michaël Zasso) #60774
  • [e6e5ed7665] - doc,test: add documentation and test on how to use addons in SEA (Joyee Cheung) #59582
  • [f12eb28489] - esm: avoid throw when module specifier is not url (Craig Macomber (Microsoft)) #61000
  • [a7b92e0677] - esm: improve error messages for ambiguous module syntax (mag123c) #60376
  • [6da85b576b] - events: remove eventtarget custom inspect branding (Efe) #61128
  • [aefbe4ba47] - (SEMVER-MINOR) events: repurpose events.listenerCount() to accept EventTargets (René) #60214
  • [dc19409f36] - fs: validate statfs path (Efe) #61230
  • [206e353a4a] - fs: fix rmSync to handle non-ASCII characters (Yeaseen) #61108
  • [feee377b83] - fs: remove broken symlinks in rmSync (sangwook) #61040
  • [6b577c80bb] - fs: detect dot files when using globstar (Robin van Wijngaarden) #61012
  • [8470e2993b] - (SEMVER-MINOR) http: add http.setGlobalProxyFromEnv() (Joyee Cheung) #60953
  • [a731463a60] - http,https: fix double ERR_PROXY_TUNNEL emission (Shima Ryuhei) #60699
  • [b2736646b6] - http2,zlib: prefer call() over apply() if argument list is not array (Livia Medeiros) #60834
  • [86bce15e96] - lib: implement all 1-byte encodings in js (Сковорода Никита Андреевич) #61093
  • [8156738b97] - lib: gbk decoder is gb18030 decoder per spec (Сковорода Никита Андреевич) #61099
  • [d8f1dea0d3] - lib: enforce use of URLParse (Antoine du Hamel) #61016
  • [9023b3f9ce] - lib: add lint rules for reflective function calls (Antoine du Hamel) #60825
  • [2979113136] - lib: prefer call() over apply() if argument list is not array (Livia Medeiros) #60796
  • [2b36433f4a] - lib: add support for readable byte streams to .toWeb() (Hans Klunder) #58664
  • [1a0c3dddb9] - lib: use FastBuffer for empty buffer allocation (Gürgün Dayıoğlu) #60558
  • [9209cf67a4] - lib: refactor JWK import PQC support check (Filip Skokan) #60586
  • [42666c241a] - lib,src: isInsideNodeModules should test on the first non-internal frame (Chengzhong Wu) #60991
  • [4a22647609] - lib,src,test: fix tests without SQLite (Antoine du Hamel) #60906
  • [24795530bb] - lib,test: enforce use of assert.fail via a lint rule (Antoine du Hamel) #61004
  • [1977348ae0] - lib,test: fix jsdoc comments (Michaël Zasso) #60870
  • [3549cf14ce] - meta: remove t.js (RafaelGSS) #61369
  • [5cf54abad7] - meta: bump step-security/harden-runner from 2.13.2 to 2.14.0 (dependabot[bot]) #61245
  • [b57bab72e1] - meta: bump actions/setup-node from 6.0.0 to 6.1.0 (dependabot[bot]) #61244
  • [42117b5069] - meta: bump actions/cache from 4.3.0 to 5.0.1 (dependabot[bot]) #61243
  • [fee3edd38e] - meta: bump actions/download-artifact from 6.0.0 to 7.0.0 (dependabot[bot]) #61242
  • [a96c3160ff] - meta: bump github/codeql-action from 4.31.6 to 4.31.9 (dependabot[bot]) #61241
  • [b4233e18a9] - meta: bump codecov/codecov-action from 5.5.1 to 5.5.2 (dependabot[bot]) #61240
  • [c5d7dd3731] - meta: bump actions/checkout from 6.0.0 to 6.0.1 (dependabot[bot]) #61239
  • [d83cec1534] - meta: bump actions/upload-artifact from 5.0.0 to 6.0.0 (dependabot[bot]) #61238
  • [d4bfd26f06] - meta: bump peter-evans/create-pull-request from 7.0.9 to 8.0.0 (dependabot[bot]) #61237
  • [9246c6ab12] - meta: bump cachix/install-nix-action from 31.8.4 to 31.9.0 (dependabot[bot]) #61236
  • [1b378cfd5e] - meta: move lukekarrys to emeritus (Node.js GitHub Bot) #60985
  • [f3bfa68d78] - meta: bump actions/setup-python from 6.0.0 to 6.1.0 (dependabot[bot]) #60927
  • [f1935d19e9] - meta: bump github/codeql-action from 4.31.3 to 4.31.6 (dependabot[bot]) #60926
  • [0a4a4c090d] - meta: bump actions/checkout from 5.0.1 to 6.0.0 (dependabot[bot]) #60925
  • [d76f95117b] - meta: bump peter-evans/create-pull-request from 7.0.8 to 7.0.9 (dependabot[bot]) #60924
  • [4dd153f8c3] - meta: bump github/codeql-action from 4.31.2 to 4.31.3 (dependabot[bot]) #60770
  • [a90bf3ece1] - meta: bump step-security/harden-runner from 2.13.1 to 2.13.2 (dependabot[bot]) #60769
  • [ecc945d7ec] - meta: bump cachix/install-nix-action from 31.8.2 to 31.8.4 (dependabot[bot]) #60768
  • [5578327a4f] - meta: bump actions/checkout from 5.0.0 to 5.0.1 (dependabot[bot]) #60767
  • [24384d7438] - meta: add Renegade334 to collaborators (Renegade334) #60714
  • [2d560e42fa] - module: fix sync resolve hooks for require with node: prefixes (Joyee Cheung) #61088
  • [15c3655b9a] - module: preserve URL in the parent created by createRequire() (Joyee Cheung) #60974
  • [c1acef6d0f] - module: mark require(esm) as stable (Joyee Cheung) #60959
  • [2e39f3ed6b] - module: mark module compile cache as stable (Joyee Cheung) #60971
  • [e6a05cfb4f] - (SEMVER-MINOR) module: allow subpath imports that start with #/ (Jan Martin) #60864
  • [1983cd6692] - node-api: add napi_set_prototype (siaeyy) #60711
  • [350b0ea895] - node-api: fix data race and use-after-free in napi_threadsafe_function (Mika Fischer) #55877
  • [cb3f79273a] - node-api: add support for Float16Array (Ilyas Shabi) #58879
  • [bdf359b3d1] - node-api: support SharedArrayBuffer in napi_create_dataview (Kevin Eady) #60473
  • [3c5dc03f06] - os: freeze signals constant (Xavier Stouder) #61038
  • [ca5c4c9752] - process: improve process.cwd() error message (TseIan) #61164
  • [fa927c31da] - (SEMVER-MINOR) process: preserve AsyncLocalStorage in queueMicrotask only when needed (Gürgün Dayıoğlu) #60913
  • [571cec49e0] - repl: fix getters triggering side effects during completion (Dario Piotrowicz) #61043
  • [377aed336c] - repl: tab completion targets <class> instead of new <class> (Đỗ Trọng Hải) #60319
  • [cb8bc3466d] - sqlite: improve error messages for tag store (Pramit Sharma) #61096
  • [324ea4fa2d] - sqlite: make SQLTagStore.prototype.size a getter (René) #60246
  • [874c50296d] - src: dump snapshot source with node:generate_default_snapshot_source (Joyee Cheung) #61101
  • [0692b4f014] - src: improve StringBytes::Encode perf on ASCII (Сковорода Никита Андреевич) #61119
  • [754271a1f0] - src: add HandleScope to edge loop in heap_utils (Mert Can Altin) #60885
  • [8f46bd9352] - src: remove redundant CHECK (Tobias Nießen) #61130
  • [5e6ffd9aa0] - src: remove unused private field in SQLTagStore (Michaël Zasso) #61027
  • [550e8a7a69] - src: implement Windows-1252 encoding support and update related tests (Mert Can Altin) #60893
  • [3f9c0e07b4] - src: fix off-thread cert loading in bundled cert mode (Joyee Cheung) #60764
  • [7eaf815341] - src: handle DER decoding errors from system certificates (Joyee Cheung) #60787
  • [6e76cec44a] - src: use static_cast instead of C-style cast (Michaël Zasso) #60868
  • [103e55487e] - src: handle indexed properties in process.env (Michaël Zasso) #60826
  • [83d1f41752] - src: simply uint32 to string as it must not fail (Chengzhong Wu) #60846
  • [2dfdc6f01e] - src: mark unused private field as such (Michaël Zasso) #60802
  • [920f02539e] - src: implicitly enable namespace in config (Marco Ippolito) #60798
  • [47c5bd9b7c] - src: add permission flag to config file (Marco Ippolito) #60798
  • [d9df3f710d] - src: add test flag to config file (Marco Ippolito) #60798
  • [831256cb92] - src: rename config file testRunner to test (Marco Ippolito) #60798
  • [6c2b75ba87] - src: split inspector protocol domains files (Chengzhong Wu) #60754
  • [51cf032a5e] - src: add permission support to config file (Marco Ippolito) #60746
  • [413db7c635] - src: build v8 tick processor as built-in source text modules (Joyee Cheung) #60518
  • [428d24acf5] - src,permission: fix permission.has on empty param (Rafael Gonzaga) #60674
  • [a60aa72a87] - src,permission: add debug log on is_tree_granted (Rafael Gonzaga) #60668
  • [bd0942f4f5] - (SEMVER-MINOR) stream: do not pass readable.compose() output via Readable.from() (René) #60907
  • [90c12a252a] - stream: fix isErrored/isWritable for WritableStreams (René) #60905
  • [9ac774c15b] - test: asserts that import.meta.resolve invokes sync loader hooks (Chengzhong Wu) #61158
  • [c08afc5712] - test: check util.parseArgs argv parsing with actual process execution (René) #61089
  • [182f2e4b5a] - test: update WPT for urlpattern to a2e15ad405 (Node.js GitHub Bot) #61134
  • [9f7cc779f5] - test: make buffer sizes 32bit-aware in test-internal-util-construct-sab (René) #61026
  • [c6a8234963] - test: remove unneccessary repl magic_mode tests (Dario Piotrowicz) #61053
  • [fa2fe0930f] - test: skip sea tests on riscv64 (Stewart X Addison) #61111
  • [b209f6ba19] - test: simplify test-cli-node-options-docs (Antoine du Hamel) #61006
  • [c9153c7d4f] - test: mark stringbytes-external-max flaky on AIX (Stewart X Addison) #60995
  • [2cbddfefb7] - test: update test426 fixtures (Rich Trott) #60982
  • [c7190e6876] - test: update WPT for urlpattern to aed1f3d244 (Node.js GitHub Bot) #60642
  • [92649e2873] - test: deflake test-repl-paste-big-data (Livia Medeiros) #60975
  • [e4bc345442] - test: skip tests not passing without NODE_OPTIONS support (Antoine du Hamel) #60912
  • [63299a47ec] - test: improve config-file permission test coverage (Rafael Gonzaga) #60929
  • [9a0c420a33] - test: skip SEA inspect test if inspector is not available (Livia Medeiros) #60872
  • [e97daea17c] - test: update WPT for WebCryptoAPI to 1e4933113d (Node.js GitHub Bot) #60896
  • [ac367b3550] - test: lint more assert(regexp.test(...)) cases (René) #60878
  • [ca5720e7b5] - test: use assert.match for non-literal regexp tests (René) #60879
  • [5d30d3fc2d] - test: fix embedtest in debug windows (Vladimir Morozov) #60806
  • [8caeb03a52] - test: skip failing tests when compiled without amaro (Yuki Okita) #60815
  • [242e20bf9a] - test: fix debug test crashes caused by sea tests (Vladimir Morozov) #60807
  • [b890362e1a] - test: add lint rule to forbid use of assert.ok(/regex/.test(…)) (Antoine du Hamel) #60832
  • [b08cb5657e] - test: replace deprecated regex test assertions in http trailers test (Aditya Chopra) #60831
  • [47ed95965e] - test: ensure assertions are reached on more tests (Antoine du Hamel) #60761
  • [79d48f9441] - test: ensure assertions are reached on more tests (Antoine du Hamel) #60759
  • [585e200b40] - test: prefer major GC in cppgc-object teardown (sangwook) #60672
  • [9426ff6b08] - test: add basic temporal presence check (Chengzhong Wu) #60703
  • [ffebf8e55c] - test: ensure assertions are reached on more tests (Antoine du Hamel) #60726
  • [adc6776c6a] - test: ensure assertions are reached on HTTP2 tests (Antoine du Hamel) #60730
  • [3dae49c6ce] - test: ensure assertions are reached on HTTP tests (Antoine du Hamel) #60729
  • [5203b09fea] - test: skip test that cause timeout on IBM i (SRAVANI GUNDEPALLI) #60700
  • [6d2fe36747] - test: add missing r.close() calls in REPL multiline tests (sangwook) #60226
  • [bbee2ef5e0] - test: ensure assertions are reached on more tests (Antoine du Hamel) #60634
  • [a2764d450d] - test: update WPT for WebCryptoAPI to c58b6f4e0e (Node.js GitHub Bot) #60702
  • [1176fe43a7] - test: fix test-buffer-zero-fill-cli to be effective (Сковорода Никита Андреевич) #60623
  • [1a66dc1292] - test: limit the concurrency of WPTRunner for RISC-V (Levi Zim) #60591
  • [36076846d4] - test: fix test-strace-openat-openssl for RISC-V (Levi Zim) #60588
  • [5a976cb507] - test: split test-runner-run-watch.mjs (Joyee Cheung) #60653
  • [8f611b9bce] - test: ensure assertions are reached on more tests (Antoine du Hamel) #60641
  • [3e550d30d6] - test_runner: fix lazy test.assert accessor (René) #61097
  • [ec142be1ed] - test_runner: propagate V8 options to child process (Pietro Marchini) #60999
  • [3127a2b1e7] - test_runner: fix line feed escaping in JUnit (Aliaksandr) #60274
  • [08fb6c9ba4] - test_runner: simplify code and make it more consistent (Antoine du Hamel) #60777
  • [102b217cf3] - tools: bump the eslint group in /tools/eslint with 2 updates (dependabot[bot]) #61246
  • [97b6b61165] - tools: unpin ngtcp2 version updates (Michaël Zasso) #61155
  • [7e95edc3de] - tools: only report commit validation failure on Slack (Antoine du Hamel) #61124
  • [3a7ed257a3] - tools: use sparse-checkout in linter jobs (Antoine du Hamel) #61123
  • [b655edf1bf] - tools: simplify notify-on-push (Antoine du Hamel) #61050
  • [230155749d] - tools: fix update-nghttp2 signature verification (Richard Lau) #61035
  • [e8646a7d10] - tools: improve log output of create-release-proposal (Antoine du Hamel) #61028
  • [a4b2614912] - tools: fix vcbuild test when path contain spaces (stduhpf) #56481
  • [9769c359f8] - tools: do not run test-linux workflow for changes on vcbuild.bat (Antoine du Hamel) #60979
  • [2ceaf6eb3c] - tools: add some options and comments to shell.nix (Antoine du Hamel) #60911
  • [611135abdc] - tools: bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /tools/doc (dependabot[bot]) #60930
  • [b4bad20a6c] - tools: ignore more paths in GHA CI (Antoine du Hamel) #60920
  • [47b7cb4e9e] - tools: run tests --without-amaro on test-shared macOS (Antoine du Hamel) #60902
  • [b0ec8c9c2a] - tools: replace deprecated eslint-plugin-markdown (Michaël Zasso) #60908
  • [46dacf686e] - tools: remove deprecated ESLint plugins (Michaël Zasso) #60908
  • [1a4ec6e830] - tools: update ESLint dependencies (Michaël Zasso) #60908
  • [4e442b286d] - tools: refloat 10 Node.js patches to cpplint.py (Michaël Zasso) #60901
  • [fa90d09de6] - tools: update cpplint to 2.0.2 (Michaël Zasso) #60901
  • [4d944c5198] - tools: disable some new cpplint rules before update (Michaël Zasso) #60901
  • [eaebae1eed] - tools: don't fetch V8 deps in the source tree (Richard Lau) #60883
  • [256770944a] - tools: add temporal updater (Chengzhong Wu) #60828
  • [1c38f808bd] - tools: dump config.gypi as json (Chengzhong Wu) #60794
  • [ed89b35291] - tools: bump js-yaml from 4.1.0 to 4.1.1 in /tools/lint-md (dependabot[bot]) #60781
  • [c98c0881c5] - tools: fix linter warning in test-shared.yml (Antoine du Hamel) #60772
  • [aa44406ed7] - tools: bump js-yaml from 4.1.0 to 4.1.1 in /tools/doc in the doc group (dependabot[bot]) #60766
  • [b756154ed9] - tools: fix paths-ignore in gha files (Antoine du Hamel) #60753
  • [18ed53fb7a] - tools: update install_tools.bat old echo from 2019 to 2022 (David Hidalgo) #60736
  • [cf79940d5c] - tools: remove unsupported cooldown from Dependabot config (Antoine du Hamel) #60747
  • [8ea73ffd64] - tools: update sccache to v0.12.0 (Michaël Zasso) #60723
  • [578f8bdfa0] - tools: update x64 macOS runner (Antoine du Hamel) #60676
  • [3b6cf316c0] - tools: update gyp-next to 0.21.0 (Node.js GitHub Bot) #60645
  • [7d55b8c00f] - tools,doc: fix format-md files list (Stefan Stojanovic) #61147
  • [a617942a4a] - url: add fast path to getPathFromURL decoder (Gürgün Dayıoğlu) #60749
  • [a6ac8bd2a5] - url: remove array.reduce usage (Gürgün Dayıoğlu) #60748
  • [09b5396523] - util: optimize toASCIILower function using V8s native toLowerCase (Mert Can Altin) #61107
  • [1dd15c9502] - util: limit inspect to only show own properties (Ruben Bridgewater) #61032
  • [5051d90100] - (SEMVER-MINOR) util: add convertProcessSignalToExitCode utility (Erick Wendel) #60963
  • [98b6dc1181] - util: fix parseArgs skipping positional arg with --eval and --print (azadgupta1) #60814
  • [862eaf8a09] - util: assert getCallSites does not invoke Error.prepareStackTrace (Chengzhong Wu) #60922
  • [c2e79aa5fb] - util: improve textencoder encodeInto performance (Yagiz Nizipli) #60843
  • [b6903aaf8d] - util: safely inspect getter errors whose message throws (Yves M.) #60684
  • [408f024906] - v8: mark v8.queryObjects() as stable (Joyee Cheung) #60957
  • [b00ee5222c] - worker: update code examples for node:worker_threads module (fisker Cheung) #58264
  • [2409839f19] - worker: remove not implemented declarations (Artur Gawlik) #60655
  • [c09417a2b1] - zlib: add CHECK to validate fast path input (Matteo Collina) #61175

Windows 64-bit Installer: https://nodejs.org/dist/v25.4.0/node-v25.4.0-x64.msi
Windows ARM 64-bit Installer: https://nodejs.org/dist/v25.4.0/node-v25.4.0-arm64.msi
Windows 64-bit Binary: https://nodejs.org/dist/v25.4.0/win-x64/node.exe
Windows ARM 64-bit Binary: https://nodejs.org/dist/v25.4.0/win-arm64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v25.4.0/node-v25.4.0.pkg
macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v25.4.0/node-v25.4.0-darwin-arm64.tar.gz
macOS Intel 64-bit Binary: https://nodejs.org/dist/v25.4.0/node-v25.4.0-darwin-x64.tar.gz
Linux 64-bit Binary: https://nodejs.org/dist/v25.4.0/node-v25.4.0-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v25.4.0/node-v25.4.0-linux-ppc64le.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v25.4.0/node-v25.4.0-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v25.4.0/node-v25.4.0-aix-ppc64.tar.gz
ARMv8 64-bit Binary: https://nodejs.org/dist/v25.4.0/node-v25.4.0-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v25.4.0/node-v25.4.0.tar.gz
Other release files: https://nodejs.org/dist/v25.4.0/
Documentation: https://nodejs.org/docs/v25.4.0/api/

SHASUMS

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

df2993c0317188ffff1711fbfcd8e5b9596367b7833d6e2d42fdb2a119bd3035  node-v25.4.0-aix-ppc64.tar.gz
d89169c597bb7f13a5295ad05c3b640b0068c9d0493e39d33df022de0caf6ba1  node-v25.4.0-arm64.msi
bfa7af56c0f24074d7a6c5b08d837b8be211f44db5fcc93dcb2cb96153e49b65  node-v25.4.0-darwin-arm64.tar.gz
82fe1e7c2b851ebd4ae3413bf1347990e4c351884c7d5983da895c6c8562573b  node-v25.4.0-darwin-arm64.tar.xz
1c75d67c9416c61a948c7cd5662b4293daa0e5a9ddac664f17921ccd5d41a016  node-v25.4.0-darwin-x64.tar.gz
9036701ff6e4b6e52096a32b2ebcd05e1a560e50fb0c3a9afa23642d9c023e74  node-v25.4.0-darwin-x64.tar.xz
b79d50770ed78a2282673fb18745dba6a0ed5fac0f4ee06d0d3e9ff343a7b884  node-v25.4.0-headers.tar.gz
44debda47bf2a00d34cbc4acd21249e519c2021c3720d95229c3effdcb26f13a  node-v25.4.0-headers.tar.xz
b059f504162053f4a5d71e85f3d1d89032a7c14eb1a7223c76ef2ff9ce34612c  node-v25.4.0-linux-arm64.tar.gz
1e8c471a0c4693cb8b592bcde86be0bf4b7bf8efb28b196e52fc6fa4b486f2e9  node-v25.4.0-linux-arm64.tar.xz
d663ba430f03b033aba5ea84fb1f61c7f34f752e14b95b70cdc49867e19cba32  node-v25.4.0-linux-ppc64le.tar.gz
379d45275167e7214b28a63c2ef06964211383d528748e9ae95ad3d562a96fab  node-v25.4.0-linux-ppc64le.tar.xz
885cd50dfa58220e6d6ac7b2534663b766e988e55b87c772788dbfb4c05fd807  node-v25.4.0-linux-s390x.tar.gz
631622dd50b509732f519f12d2bff1072ba1421bfe4ceb17fb9683f30099ba31  node-v25.4.0-linux-s390x.tar.xz
5951a889ab65b3a73cc88e6d412d70499f523a89fe553b5349471af7586f2be2  node-v25.4.0-linux-x64.tar.gz
f3bde66a96c232f34cdd9f4fea6b551f915f8f3ac0952793eef903b3e35df037  node-v25.4.0-linux-x64.tar.xz
e349a266077b138435a0da3afa843d32837652fd76199cccf898f884f5c8ee96  node-v25.4.0-win-arm64.7z
ab747b4d8579aa95ef7148a883fea5a5577dfbcc1bfbc4f62bb4257c26b27acc  node-v25.4.0-win-arm64.zip
9aa12c81be9ca56953fd875de2dd625718d767a3ee482d00ab5f69993be392be  node-v25.4.0-win-x64.7z
5a5fcd17bc7567645c85b016cd428e4cd9e54796994651be3f3709768714e002  node-v25.4.0-win-x64.zip
54e212e905be2d71145ab986834ec53116303a8a8b6f1162084983b8bd8b46fd  node-v25.4.0-x64.msi
f1db8a93f7d9280205c61ebcc199cdfced821cf07f65651d4d24d1f98aa993ec  node-v25.4.0.pkg
aa85eaa3c2c81c8b755039018d725bc140c409c2100508785bc8275e610b0e81  node-v25.4.0.tar.gz
04e365aadcd7bf4cf1a6001723ea41035bfb118d78f8a8ee2054b37fc5cb67d6  node-v25.4.0.tar.xz
f94f9de59d8418346386852ad1ffc1caa7276e3a7040a4f36b3032046c025564  win-arm64/node.exe
313755ba5970fbe0b2af34583654bbc0f4c5121dc5e5b06e12deee958f6a5d24  win-arm64/node.lib
687814c2738106514cc8510cc33224190c339b32bcfac9d8f282424b754367ae  win-arm64/node_pdb.7z
08c62e194d14a7e2270c49fbd1d51c834e816a93555c8b9f40cc8ddd64d32852  win-arm64/node_pdb.zip
39a867f03ecb065ac3e7944361c0fc2a22ec466fdff2dc3281a068a09bffe810  win-x64/node.exe
e1c02915c1020765f2373e792022936c6ebace7f8449657a60c1b01ed1a9a1da  win-x64/node.lib
6c1240160c948a4ba5c4915720e5467cd8fe8b76c9c4e9f421ede2f3fe3496b9  win-x64/node_pdb.7z
249ccf6bd7d893fb06af8ff3700de5a640811036747de62c2c080de2749f2f71  win-x64/node_pdb.zip
-----BEGIN PGP SIGNATURE-----

iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmluY9QACgkQi+q0389V
XvQWOgwAhsuVxCkSREU8AVdUVTMwLNJQWgwAtmIiN6enp6XZ1tzr5OQPrjyAJnQS
JDH9ZbRQcCQOBqloRLrPHxV9SYKhSJuHKhBAY3+I6ZJVJYt2uBhDiR8cSFjxwCpC
JLywnqFOjfmltOSpDhIzgM7/fqDVcIP7sGXGGH57hw9iNtKTtjgEeUKI7cuSiPs6
i5PCy9LSA6H+unoJ4DNwPjbq0I3Tg1B62T6mWNfdElsAKOdMUsOFxEhQFR2EZfs3
ri/BpTJOtiqoLiJ/ip/PG5OkOcbHL3cEo5Gf808kphFv+TiptB4gga0ftIy6K+z7
nl+8FdreEQMgp9ri/Rp6FyHwq/akA1y6cyumrsK2CkVndYGvg0DOS2E9ZPvY3qUw
3FHX82/ULRIbS30Yxcz7VvDljhVhdLDwpjdZw+3aY4Hsw9eX3hpIFED3LAK5iwen
ev/GwoYespRJpkUJOkPDZPoMEHRufoUDy3ZDi/uH4n+FSb2HszR2xkf/x6aX+cPJ
Mhm6DuuF
=uWLl
-----END PGP SIGNATURE-----
Pembaruan Terakhir
19 Jan 2026
Waktu Membaca
17 mnt
Kontribusi
Sunting halaman ini
Daftar isi
  1. 2026-01-19, Version 25.4.0 (Current), @RafaelGSS
  2. Notable Changes
  3. Commits
  4. SHASUMS