Update Mar 13, 2025 tracked by Updatify
2025-03-13, Version 23.10.0 (Current), @aduh95
Notable Changes
Introducing --experimental-config-file
With the introduction of test runner, SEA, and other feature that require a lot of flags, a JSON config flag would improve by a lot the developer experience and increase adoption.
You can have a node.config.json containing:
{
"$schema": "https://nodejs.org/dist/v23.10.0/docs/node-config-schema.json",
"nodeOptions": {
"test-coverage-lines": 80,
"test-coverage-branches": 60
}
}
You can run your tests without passing the flags defined in the config file.
node --experimental-default-config-file --test --experimental-test-coverage
or
node --experimental-config-file=node.config.json --test --experimental-test-coverage
Node.js will not sanitize or perform validation on the user-provided configuration, so only ever use trusted configuration files.
Contributed by Marco Ippolito in #57016 and #57171.
Other Notable Changes
-
[
323e3ac93c] - crypto: update root certificates to NSS 3.108 (Node.js GitHub Bot) #57381 -
[
6fd2ec6816] - doc: add@geeksilva97to collaborators (Edy Silva) #57241 -
[
d8937f1742] - (SEMVER-MINOR) src: createTHROW_ERR_OPTIONS_BEFORE_BOOTSTRAPPING(Marco Ippolito) #57016 -
[
5054fc7941] - (SEMVER-MINOR) test_runner: change ts default glob (Marco Ippolito) #57359 -
[
75f11ae1cc] - (SEMVER-MINOR) tls: implementtls.getCACertificates()(Joyee Cheung) #57107 -
[
a22c21ceb8] - (SEMVER-MINOR) v8: addv8.getCppHeapStatistics()method (Aditi) #57146
Commits
-
[
2daee76b26] - assert: improve myers diff performance (Giovanni Bucci) #57279 -
[
2fbd3bbea7] - build: fix compatibility with V8’sdepot_tools(Richard Lau) #57330 -
[
6a2e4c5fc1] - build,win: disable node pch with ccache (Stefan Stojanovic) #57224 -
[
323e3ac93c] - crypto: update root certificates to NSS 3.108 (Node.js GitHub Bot) #57381 -
[
906f23d0e7] - crypto: add support for intermediate certs in –use-system-ca (Tim Jacomb) #57164 -
[
03cd7920c8] - deps: update simdjson to 3.12.2 (Node.js GitHub Bot) #57084 -
[
9e1fce9a5c] - deps: update archs files for openssl-3.0.16 (Node.js GitHub Bot) #57335 -
[
4056c1f83e] - deps: upgrade openssl sources to quictls/openssl-3.0.16 (Node.js GitHub Bot) #57335 -
[
b402799070] - deps: update corepack to 0.32.0 (Node.js GitHub Bot) #57265 -
[
ce1cfff79a] - deps: update amaro to 0.4.1 (marco-ippolito) #57121 -
[
0ac977d679] - deps: update gyp file for ngtcp2 1.11.0 (Richard Lau) #57225 -
[
f34d78df1f] - deps: update ada to 3.1.3 (Node.js GitHub Bot) #57222 -
[
4fe9916701] - dns: remove redundant code using common variable (Deokjin Kim) #57386 -
[
1c271b162b] - doc: make first parameter optional inutil.getCallSites(Deokjin Kim) #57387 -
[
77668fffec] - doc: fix usage of module.registerSync in comment (Timo Kössler) #57328 -
[
9b4f7aac69] - doc: add Darshan back as voting TSC member (Michael Dawson) #57402 -
[
d44ccb319c] - doc: revise webcrypto.md types, interfaces, and added versions (Filip Skokan) #57376 -
[
f4de7cef01] - doc: add info on how project manages social media (Michael Dawson) #57318 -
[
792ef16921] - doc: revisetsconfig.jsonnote (Steven) #57353 -
[
4e438c3fa3] - doc: use more clear name in getSystemErrorMessage’s example (ikuma-t) #57310 -
[
5c9f1a40e4] - doc: recommend settingnoEmit: trueintsconfig.json(Steven) #57320 -
[
e178acf9d8] - doc: ping nodejs/tsc for each security pull request (Rafael Gonzaga) #57309 -
[
fbe464e28c] - doc: fix Windows ccache section position (Stefan Stojanovic) #57326 -
[
3fe8eac0ba] - doc: update node-api version matrix (Chengzhong Wu) #57287 -
[
d2f49e7fcf] - doc: recommenderasableSyntaxOnlyin ts docs (Rob Palmer) #57271 -
[
03844d99f8] - doc: clarifypath.isAbsoluteis not path traversal mitigation (Eric Fortis) #57073 -
[
0f8cd32986] - doc: fix rendering of DEP0174 description (David Sanders) #56835 -
[
f95ecca71f] - doc: add 1ilsang to triage team (1ilsang) #57183 -
[
6fd2ec6816] - doc: add @geeksilva97 to collaborators (Edy Silva) #57241 -
[
b74e0ff7d7] - doc: add missing assert return types (Colin Ihrig) #57219 -
[
83eed33562] - doc: add streamResetBurst and streamResetRate (Sujal Raj) #57195 -
[
7f48811295] - doc: add esm examples to node:util (Alfredo González) #56793 -
[
5c20dcc166] - esm: fix module.exports export on CJS modules (Guy Bedford) #57366 -
[
041a217a4d] - fs: fix rmSync error code (Paul Schwabauer) #57103 -
[
cea50b7f39] - lib: optimize priority queue (Gürgün Dayıoğlu) #57100 -
[
5204d495ae] - meta: bump codecov/codecov-action from 5.3.1 to 5.4.0 (dependabot[bot]) #57257 -
[
89599be988] - meta: bump github/codeql-action from 3.28.8 to 3.28.10 (dependabot[bot]) #57254 -
[
66cd3850bc] - meta: bump ossf/scorecard-action from 2.4.0 to 2.4.1 (dependabot[bot]) #57253 -
[
6c22e446bc] - meta: set nodejs/config as codeowner (Marco Ippolito) #57237 -
[
ee5ce5ccde] - meta: move RaisinTen back to collaborators, triagers and SEA champion (Darshan Sen) #57292 -
[
0b0c9cc0f5] - meta: bump actions/download-artifact from 4.1.8 to 4.1.9 (dependabot[bot]) #57260 -
[
e6a98af8bd] - meta: bump peter-evans/create-pull-request from 7.0.6 to 7.0.7 (dependabot[bot]) #57259 -
[
91394aaf3d] - meta: bump step-security/harden-runner from 2.10.4 to 2.11.0 (dependabot[bot]) #57258 -
[
63dbbe7c91] - meta: bump actions/cache from 4.2.0 to 4.2.2 (dependabot[bot]) #57256 -
[
d5ccf174ad] - meta: bump actions/upload-artifact from 4.6.0 to 4.6.1 (dependabot[bot]) #57255 -
[
46b06be9a3] - module: handle cached linked async jobs in require(esm) (Joyee Cheung) #57187 -
[
718305db6f] - module: add dynamic file-specific ESM warnings (Mert Can Altin) #56628 -
[
4762f4ada5] - net: validate non-string host for socket.connect (Daeyeon Jeong) #57198 -
[
d07bd79ac5] - net: replace brand checks with identity checks (Yagiz Nizipli) #57341 -
[
a757f00747] - net: emit an error when custom lookup resolves to a non-string address (Edy Silva) #57192 -
[
984f7ef5bd] - readline: add support forSymbol.dispose(Antoine du Hamel) #57276 -
[
21b6423b9b] - sqlite: reset statement immediately in run() (Colin Ihrig) #57350 -
[
e80bbb7355] - sqlite,test,doc: allow Buffer and URL as database location (Edy Silva) #56991 -
[
3dc3207298] - src: do not pass nullptr to std::string ctor (Charles Kerr) #57354 -
[
5e51c62569] - src: fix process exit listeners not receiving unsettled tla codes (Dario Piotrowicz) #56872 -
[
bf788d9d86] - src: refactor SubtleCrypto algorithm and length validations (Filip Skokan) #57319 -
[
37664e8485] - src: fix node_config_file.h compilation error in GN build (Cheng) #57210 -
[
274c18a365] - (SEMVER-MINOR) src: set default config as node.config.json (Marco Ippolito) #57171 -
[
433657de8c] - src: namespace config file flags (Marco Ippolito) #57170 -
[
d8937f1742] - (SEMVER-MINOR) src: create THROW_ERR_OPTIONS_BEFORE_BOOTSTRAPPING (Marco Ippolito) #57016 -
[
9fd217daa9] - (SEMVER-MINOR) src: add config file support (Marco Ippolito) #57016 -
[
b17163b130] - src: allow embedder customization of OOMErrorHandler (Shelley Vohr) #57325 -
[
6f1c622466] - src: use Maybe\<void> in ProcessEmitWarningSync (Daeyeon Jeong) #57250 -
[
4d86a42aa4] - src: remove redundant qualifiers in src/quic (Yagiz Nizipli) #56967 -
[
41ea5a2864] - src: make even more improvements to error handling (James M Snell) #57264 -
[
7a554d9bf3] - src: use cachedemitv8::String (Daeyeon Jeong) #57249 -
[
b10ac9a958] - src: refactor SubtleCrypto algorithm and length validations (Filip Skokan) #57273 -
[
90cd780ca6] - src: make more error handling improvements (James M Snell) #57262 -
[
17c9e76722] - src: fix typo in comment (Antoine du Hamel) #57291 -
[
35c283a3f3] - src: reduce string allocations on sqlite (Yagiz Nizipli) #57227 -
[
185d1ffe93] - src: improve error handling innode_messaging.cc(James M Snell) #57211 -
[
96b2bfb88c] - src: improve error handling intty_wrap.cc(James M Snell) #57211 -
[
f845ad953e] - src: improve error handling intcp_wrap.cc(James M Snell) #57211 -
[
350f62de6c] - src: fix ThrowInvalidURL call in PathToFileURL (Daniel M Brasil) #57141 -
[
936a9997b2] - src: improve error handling in buffer and dotenv (James M Snell) #57189 -
[
975e2a5c1d] - src: improve error handling in module_wrap (James M Snell) #57188 -
[
3d103ecfbe] - src: improve error handling in spawn_sync (James M Snell) #57185 -
[
98d328a1d6] - src: detect whether the string is one byte representation or not (theweipeng) #56147 -
[
15d7908656] - stream: fix sizeAlgorithm validation in WritableStream (Daeyeon Jeong) #57280 -
[
b866755299] - test: test runner run plan (Pietro Marchini) #57304 -
[
e05e0e5772] - test: update WPT for urlpattern to 3b6b19853a (Node.js GitHub Bot) #57377 -
[
36542b5611] - test: update WPT for WebCryptoAPI to edd42c005c (Node.js GitHub Bot) #57365 -
[
28792ee59a] - test: skiptest-config-json-schemawith quic (Richard Lau) #57225 -
[
5a21fa4573] - test: add more coverage to node_config_file (Marco Ippolito) #57170 -
[
99b2369142] - test: simplify test-tls-connect-abort-controller.js (Yagiz Nizipli) #57338 -
[
4af2f7f9a8] - test: useassert.matchintest-esm-import-meta(Antoine du Hamel) #57290 -
[
99abfb6172] - test: update compression wpt (Yagiz Nizipli) #56960 -
[
f8dde3a391] - test: skip uv-thread-name on IBM i (Abdirahim Musse) #57299 -
[
3bf546c317] - Revert “test: temporary remove resource check from fs read-write” (Rafael Gonzaga) #56906 -
[
8d0f1a7dbf] - test: module syntax should throw (Marco Ippolito) #57121 -
[
0fd3d91e3a] - test: more common.mustNotCall in net, tls (Meghan Denny) #57246 -
[
f803d6ca29] - test: swap assert.strictEqual() parameters (Luigi Pinca) #57217 -
[
eb3576fde0] - test: assert write return values in buffer-bigint64 (Meghan Denny) #57212 -
[
a08981025a] - test: allow embedder running async context frame test (Shelley Vohr) #57193 -
[
20c032ed98] - test: resolve race condition in test-net-write-fully-async-* (Matteo Collina) #57022 -
[
5054fc7941] - (SEMVER-MINOR) test_runner: change ts default glob (Marco Ippolito) #57359 -
[
0ad450f295] - timers: simplify the compareTimersLists function (Gürgün Dayıoğlu) #57110 -
[
75f11ae1cc] - (SEMVER-MINOR) tls: implement tls.getCACertificates() (Joyee Cheung) #57107 -
[
2b2267f203] - tools: add config subspace (Marco Ippolito) #57239 -
[
8e64d38e91] - tools: import rather than require ESLint plugins (Michaël Zasso) #57315 -
[
2569e56b95] - tools: switch back to official OpenSSL (Richard Lau) #57301 -
[
fd49144378] - tools: extract target abseil to abseil.gyp (Chengzhong Wu) #57289 -
[
77e1a85d24] - tools: revert to use @stylistic/eslint-plugin-js v3 (Joyee Cheung) #57314 -
[
2fa6e65262] - tools: add more details about rolling inspector_protocol (Chengzhong Wu) #57167 -
[
5788574cdf] - tools: bump the eslint group in /tools/eslint with 5 updates (dependabot[bot]) #57261 -
[
5955acadba] - tools: remove deps/zlib/GN-scraper.py (Chengzhong Wu) #57238 -
[
a22c21ceb8] - (SEMVER-MINOR) v8: add v8.getCppHeapStatistics() method (Aditi) #57146 -
[
17d4074114] - win,build: add option to enable Control Flow Guard (Hüseyin Açacak) #56605