Releases: nodejs/node
2024-08-06, Version 22.6.0 (Current), @RafaelGSS
Experimental TypeScript support via strip types
Node.js introduces the --experimental-strip-types
flag for initial TypeScript support.
This feature strips type annotations from .ts files, allowing them to run
without transforming TypeScript-specific syntax. Current limitations include:
- Supports only inline type annotations, not features like
enums
ornamespaces
. - Requires explicit file extensions in import and require statements.
- Enforces the use of the type keyword for type imports to avoid runtime errors.
- Disabled for TypeScript in node_modules by default.
Thanks Marco Ippolito for working on this.
Experimental Network Inspection Support in Node.js
This update introduces the initial support for network inspection in Node.js.
Currently, this is an experimental feature, so you need to enable it using the --experimental-network-inspection
flag.
With this feature enabled, you can inspect network activities occurring within a JavaScript application.
To use network inspection, start your Node.js application with the following command:
$ node --inspect-wait --experimental-network-inspection index.js
Please note that the network inspection capabilities are in active development.
We are actively working on enhancing this feature and will continue to expand its functionality in future updates.
- Network inspection is limited to the
http
andhttps
modules only. - The Network tab in Chrome DevTools will not be available until the
feature request on the Chrome DevTools side is addressed.
Thanks Kohei Ueno for working on this.
Other Notable Changes
- [
15a94e67b1
] - lib,src: drop --experimental-network-imports (Rafael Gonzaga) #53822 - [
68e444d2d8
] - (SEMVER-MINOR) http: add diagnostics channelhttp.client.request.error
(Kohei Ueno) #54054 - [
2d982d3dee
] - (SEMVER-MINOR) deps: V8: backport 7857eb34db42 (Stephen Belanger) #53997 - [
15816bd0dd
] - (SEMVER-MINOR) stream: expose DuplexPair API (Austin Wright) #34111 - [
893c864542
] - (SEMVER-MINOR) test_runner: fix support watch with run(), add globPatterns option (Matteo Collina) #53866 - [
048d421ad1
] - meta: add jake to collaborators (jakecastelli) #54004 - [
6ad6e01bf3
] - (SEMVER-MINOR) test_runner: refactor snapshots to get file from context (Colin Ihrig) #53853 - [
698e44f8e7
] - (SEMVER-MINOR) test_runner: add context.filePath (Colin Ihrig) #53853
Commits
- [
063f46dc2a
] - assert: use isError instead of instanceof in innerOk (Pietro Marchini) #53980 - [
10bea42f81
] - build: update gcovr to 7.2 and codecov config (Benjamin E. Coe) #54019 - [
7c417c6cf4
] - build: avoid compiling with VS v17.10 (Hüseyin Açacak) #53863 - [
ee97c045b4
] - build: ensure v8_pointer_compression_sandbox is enabled on 64bit (Shelley Vohr) #53884 - [
bfbed0afd5
] - build: fix conflict gyp configs (Chengzhong Wu) #53605 - [
0f1fe63e32
] - build: trigger coverage ci when updating codecov (Yagiz Nizipli) #53929 - [
ad62b945f0
] - build: update codecov coverage build count (Yagiz Nizipli) #53929 - [
3c40868fd3
] - build: disable test-asan workflow (Michaël Zasso) #53844 - [
2a62d6ca57
] - build, tools: drop leading/
fromr2dir
(Richard Lau) #53951 - [
9c7b009f47
] - build,tools: simplify upload of shasum signatures (Michaël Zasso) #53892 - [
057bd44f9f
] - child_process: fix incomplete prototype pollution hardening (Liran Tal) #53781 - [
66f7c595c7
] - cli: document--inspect
port0
behavior (Aviv Keller) #53782 - [
fad3e74b47
] - console: fix issues with frozen intrinsics (Vinicius Lourenço) #54070 - [
e685ecd7ae
] - deps: update corepack to 0.29.3 (Node.js GitHub Bot) #54072 - [
e5f7250e6d
] - deps: update amaro to 0.0.6 (Node.js GitHub Bot) #54199 - [
2c1e9082e8
] - deps: update amaro to 0.0.5 (Node.js GitHub Bot) #54199 - [
2d982d3dee
] - (SEMVER-MINOR) deps: V8: backport 7857eb34db42 (Stephen Belanger) #53997 - [
1061898462
] - deps: update c-ares to v1.32.3 (Node.js GitHub Bot) #54020 - [
f4a7ac5e18
] - deps: V8: cherry-pick 35888fee7bba (Joyee Cheung) #53728 - [
1176310226
] - deps: add gn build files for ncrypto (Cheng) #53940 - [
7a1d5a4f84
] - deps: update c-ares to v1.32.2 (Node.js GitHub Bot) #53865 - [
66f6a2aec9
] - deps: V8: cherry-pick 9812cb486e2b (Michaël Zasso) #53966 - [
8e66a18ef0
] - deps: start working on ncrypto dep (James M Snell) #53803 - [
c114082b12
] - deps: fix include_dirs of nbytes (Cheng) #53862 - [
b7315281be
] - doc: move numCPUs require to top of file in cluster CJS example (Alfredo González) #53932 - [
8e7c30c2a4
] - doc: update security-release process to automated one (Rafael Gonzaga) #53877 - [
52a4206be2
] - doc: fix typo in technical-priorities.md (YoonSoo_Shin) #54094 - [
30e18a04a3
] - doc: fix typo in diagnostic tooling support tiers document (Taejin Kim) #54058 - [
58aebfd31e
] - doc: move GeoffreyBooth to TSC regular member (Geoffrey Booth) #54047 - [
c1634c7213
] - doc: correct typescript stdin support (Marco Ippolito) #54036 - [
64812d5c22
] - doc: fix typo in recognizing-contributors (Marco Ippolito) #53990 - [
6b35994b6f
] - doc: fix documentation for--run
(Aviv Keller) #53976 - [
04d203a233
] - doc: update boxstarter README (Aviv Keller) #53785 - [
86fa46db1c
] - doc: add info about prefix-only modules tomodule.builtinModules
(Grigory) #53954 - [
defdc3c568
] - doc: removescroll-behavior: smooth;
(Cloyd Lau) #53942
*...
2024-07-24, Version 20.16.0 'Iron' (LTS), @marco-ippolito
process: add process.getBuiltinModule(id)
process.getBuiltinModule(id)
provides a way to load built-in modules
in a globally available function. ES Modules that need to support
other environments can use it to conditionally load a Node.js built-in
when it is run in Node.js, without having to deal with the resolution
error that can be thrown by import
in a non-Node.js environment or
having to use dynamic import()
which either turns the module into
an asynchronous module, or turns a synchronous API into an asynchronous one.
if (globalThis.process?.getBuiltinModule) {
// Run in Node.js, use the Node.js fs module.
const fs = globalThis.process.getBuiltinModule('fs');
// If `require()` is needed to load user-modules, use createRequire()
const module = globalThis.process.getBuiltinModule('module');
const require = module.createRequire(import.meta.url);
const foo = require('foo');
}
If id
specifies a built-in module available in the current Node.js process,
process.getBuiltinModule(id)
method returns the corresponding built-in
module. If id
does not correspond to any built-in module, undefined
is returned.
process.getBuiltinModule(id)
accepts built-in module IDs that are recognized
by module.isBuiltin(id)
.
The references returned by process.getBuiltinModule(id)
always point to
the built-in module corresponding to id
even if users modify
require.cache
so that require(id)
returns something else.
Contributed by Joyee Cheung in #52762
doc: doc-only deprecate OpenSSL engine-based APIs
OpenSSL 3 deprecated support for custom engines with a recommendation to switch to its new provider model.
The clientCertEngine
option for https.request()
, tls.createSecureContext()
, and tls.createServer()
; the privateKeyEngine
and privateKeyIdentifier
for tls.createSecureContext();
and crypto.setEngine()
all depend on this functionality from OpenSSL.
Contributed by Richard Lau in #53329
inspector: fix disable async hooks on Debugger.setAsyncCallStackDepth
Debugger.setAsyncCallStackDepth
was previously calling the enable function by mistake. As a result, when profiling using Chrome DevTools, the async hooks won't be turned off properly after receiving Debugger.setAsyncCallStackDepth
with depth 0.
Contributed by Joyee Cheung in #53473
Other Notable Changes
- [
09e2191432
] - (SEMVER-MINOR) buffer: add .bytes() method to Blob (Matthew Aitken) #53221 - [
394e00f41c
] - (SEMVER-MINOR) doc: add context.assert docs (Colin Ihrig) #53169 - [
a8601efa5e
] - (SEMVER-MINOR) doc: improve explanation about built-in modules (Joyee Cheung) #52762 - [
5e76c258f7
] - doc: add StefanStojanovic to collaborators (StefanStojanovic) #53118 - [
5e694026f1
] - doc: add Marco Ippolito to TSC (Rafael Gonzaga) #53008 - [
f3ba1eb72f
] - (SEMVER-MINOR) net: add new net.server.listen tracing channel (Paolo Insogna) #53136 - [
2bcce3255b
] - (SEMVER-MINOR) src,permission: --allow-wasi & prevent WASI exec (Rafael Gonzaga) #53124 - [
a03a4c7bdd
] - (SEMVER-MINOR) test_runner: add context.fullName (Colin Ihrig) #53169 - [
69b828f5a5
] - (SEMVER-MINOR) util: support--no-
for argument with boolean type for parseArgs (Zhenwei Jin) #53107
Commits
- [
76fd0ea92e
] - assert,util: correct comparison when both contain same reference (Daniel Lemire) #53431 - [
65308b6692
] - benchmark: fix api restriction for the permission category (Ryan Tsien) #51528 - [
1e2bc2c2d0
] - benchmark: fix napi/ref addon (Michaël Zasso) #53233 - [
09e2191432
] - (SEMVER-MINOR) buffer: add .bytes() method to Blob (Matthew Aitken) #53221 - [
e1951a4804
] - build: fix spacing before NINJA_ARGS (jakecastelli) #53181 - [
76f3bb3460
] - build: generate binlog in out directories (Chengzhong Wu) #53325 - [
eded0c187b
] - build: support python 3.13 (Chengzhong Wu) #53190 - [
1e57c67fdb
] - build: update ruff to v0.4.5 (Yagiz Nizipli) #53180 - [
28e71ede63
] - build: add--skip-tests
totest-ci-js
target (Antoine du Hamel) #53105 - [
bb06778a65
] - build: fix building embedtest in GN build (Cheng) #53145 - [
117ff5f139
] - build: use broader detection for 'help' (Aviv Keller) #53045 - [
9aa896e7f5
] - build: fix -j propagation to ninja (Tobias Nießen) #53088 - [
acdbc78955
] - build: exit on unsupported host OS for Android (Mohammed Keyvanzadeh) #52882 - [
bf3d94478e
] - build: fix--enable-d8
builds (Richard Lau) #53106 - [
99da7d7237
] - build: set "clang" in config.gypi in GN build (Cheng) #53004 - [
9446278f03
] - crypto: improve GetECGroupBits signature (Tobias Nießen) #53364 - [
dc2a4af68d
] - crypto: fix propagation of "memory limit exceeded" (Tobias Nießen) #53300 - [
c5174f5e60
] - deps: update c-ares to v1.31.0 (Node.js GitHub Bot) #53554 - [
28e932dc7a
] - deps: update undici to 6.19.2 (Node.js GitHub Bot) #53468 - [
e4f9c663c4
] - deps: update undici to 6.19.1 (Node.js GitHub Bot) #53468 - [
171dc50fdc
] - deps: update undici to 6.19.1 (Node.js GitHub Bot) #53468 - [
6bb6a9100d
] - deps: update undici to 6.19.0 (Node.js GitHub Bot) #53468 - [
815d71b4cd
] - deps: update acorn-walk to 8.3.3 (Node.js GitHub Bot) #53466 - [
8b5f1d765a
] - deps: update zlib to 1.3.0.1-motley-209717d (Node.js GitHub Bot) #53156 - [
fc73da6f50
] - deps: update c-ares to v1.30.0 (Node.js GitHub Bot) #53416 - [
a6b803abd6
] - deps: update undici to 6.18.2 (Node.js GitHub Bot) #53255 - [
0f235535bb
] - deps: update ada to 2.8.0 (Node.js GitHub Bot) #53254 - [
63407269a8
] - deps: update corepack to 0.28.2 (Node.js GitHub Bot) #53253 - [
7a126e8773
] - deps: update c-ares to 1.29.0 (Node.js GitHub Bot) #53155 - [
0c8fcceefa
] - deps: upgrade npm to 10.8.1 (npm team) #53207 - [
23866979f2
] - deps: upd...
2024-07-19, Version 22.5.1 (Current), @richardlau
Notable Changes
This release fixes a regression introduced in Node.js 22.5.0. The problem is known to display the following symptoms:
- Crash with
FATAL ERROR: v8::Object::GetCreationContextChecked No creation context available
#53902 - npm errors with
npm error Exit handler never called!
npm/cli#7657 - yarn hangs or outputs
Usage Error: Couldn't find the node_modules state file - running an install might help (findPackageLocation)
yarnpkg/berry#6398
Commits
- [
e2deeedc6e
] - Revert "fs: add v8 fast api to closeSync" (Aviv Keller) #53904
2024-07-17, Version 22.5.0 (Current), @RafaelGSS prepared by @aduh95
Notable Changes
- [
1367c5558e
] - (SEMVER-MINOR) http: expose websockets (Natalia Venditto) #53721 - [
b31394920d
] - (SEMVER-MINOR) lib: addnode:sqlite
module (Colin Ihrig) #53752 - [
aa7df9551d
] - module: add__esModule
torequire()
'd ESM (Joyee Cheung) #52166 - [
8743c4d65a
] - (SEMVER-MINOR) path: addmatchesGlob
method (Aviv Keller) #52881 - [
77936c3d24
] - (SEMVER-MINOR) process: port on-exit-leak-free to core (Vinicius Lourenço) #53239 - [
82d88a83f8
] - (SEMVER-MINOR) stream: pipeline wait for close before calling the callback (jakecastelli) #53462 - [
3a0fcbb17a
] - test_runner: support glob matching coverage files (Aviv Keller) #53553 - [
22ca334090
] - (SEMVER-MINOR) worker: addpostMessageToThread
(Paolo Insogna) #53682
Commits
- [
eb4e370933
] - benchmark: add require-esm benchmark (Joyee Cheung) #52166 - [
4d4a8338db
] - benchmark: add cpSync benchmark (Yagiz Nizipli) #53612 - [
3d60b38afa
] - build: fix build warning of c-ares under GN build (Cheng) #53750 - [
a45c801048
] - build: fix build error in sqlite under GN build (Cheng) #53686 - [
40032eb623
] - build: add gn files for deps/nbytes (Cheng) #53685 - [
082799debb
] - build: fix mac build error of c-ares under GN (Cheng) #53687 - [
b05394ea6a
] - build: add version-specific library path for AIX (Richard Lau) #53585 - [
6237172eaf
] - cli: updatenode.1
to reflect Atom's sunset (Aviv Keller) #53734 - [
5697938cb7
] - crypto: avoid std::function (Tobias Nießen) #53683 - [
3cc01aa314
] - crypto: make deriveBits length parameter optional and nullable (Filip Skokan) #53601 - [
f82e20fdea
] - crypto: avoid taking ownership of OpenSSL objects (Tobias Nießen) #53460 - [
ad1e5610ec
] - deps: update googletest to 4b21f1a (Node.js GitHub Bot) #53842 - [
d285d610a0
] - deps: update minimatch to 10.0.1 (Node.js GitHub Bot) #53841 - [
70f5209c9f
] - deps: update corepack to 0.29.2 (Node.js GitHub Bot) #53838 - [
4930e12a45
] - deps: update simdutf to 5.3.0 (Node.js GitHub Bot) #53837 - [
d346833364
] - deps: update ada to 2.9.0 (Node.js GitHub Bot) #53748 - [
ab8abb5367
] - deps: upgrade npm to 10.8.2 (npm team) #53799 - [
1ad664905a
] - deps: update nbytes and add update script (Yagiz Nizipli) #53790 - [
a66f11e798
] - deps: update googletest to 34ad51b (Node.js GitHub Bot) #53157 - [
9bf61d6a0d
] - deps: update googletest to 305e5a2 (Node.js GitHub Bot) #53157 - [
8542ace488
] - deps: V8: cherry-pick 9ebca66a5740 (Chengzhong Wu) #53755 - [
29a734c21d
] - deps: V8: cherry-pick e061cf9970d9 (Joyee Cheung) #53755 - [
c7624af44a
] - deps: update c-ares to v1.32.1 (Node.js GitHub Bot) #53753 - [
bbcec9e129
] - deps: update minimatch to 9.0.5 (Node.js GitHub Bot) #53646 - [
76032fd980
] - deps: update c-ares to v1.32.0 (Node.js GitHub Bot) #53722 - [
26386046ad
] - doc: move MylesBorins to emeritus (Myles Borins) #53760 - [
362875bda0
] - doc: add Rafael to the last security release (Rafael Gonzaga) #53769 - [
a1a5ad848d
] - doc: use mock.callCount() in examples (Sébastien Règne) #53754 - [
bb960c5471
] - doc: clarify authenticity of plaintexts in update (Tobias Nießen) #53784 - [
5dd3018eb4
] - doc: add option to have support me link (Michael Dawson) #53312 - [
0f95ad3d7d
] - doc: add OpenSSL security level to TLS docs (Afanasii Kurakin) #53647 - [
2d92ec2831
] - doc: updatescroll-padding-top
to 4rem (Cloyd Lau) #53662 - [
933359a786
] - doc: mention v8.setFlagsFromString to pm (Rafael Gonzaga) #53731 - [
e17c2618e3
] - doc: remove the last <pre> tag (Claudio W) #53741 - [
7f18a5f47a
] - doc: exclude voting and regular TSC from spotlight (Michael Dawson) #53694 - [
df3dcd1bd1
] - doc: fix releases guide for recent Git versions (Michaël Zasso) #53709 - [
50987ea833
] - doc: requirenode:process
in assert doc examples (Alfredo González) #53702 - [
fa58d01497
] - doc: add additional explanation to the wildcard section in permissions (jakecastelli) #53664 - [
28bf1e48ef
] - doc: mark NODE_MODULE_VERSION for Node.js 22.0.0 (Michaël Zasso) #53650 - [
1cc0b41f00
] - doc: include node.module_timer on available categories (Vinicius Lourenço) #53638 - [
d224e9eab5
] - doc: fix module customization hook examples (Elliot Goodrich) #53637 - [
2cf60964e6
] - doc: fix doc for correct usage with plan & TestContext (Emil Tayeb) #53615 - [
6df86ae056
] - doc: remove some news issues that are no longer (Michael Dawson) #53608 - [
42b9408f3e
] - doc: add issue for news from ambassadors (Michael Dawson) #53607 - [
2d1ff91953
] - doc: add esm example for os (Leonardo Peixoto) [#53604](https://github.co...
2024-07-08, Version 22.4.1 (Current), @RafaelGSS
This is a security release.
Notable Changes
- CVE-2024-36138 - Bypass incomplete fix of CVE-2024-27980 (High)
- CVE-2024-22020 - Bypass network import restriction via data URL (Medium)
- CVE-2024-22018 - fs.lstat bypasses permission model (Low)
- CVE-2024-36137 - fs.fchown/fchmod bypasses permission model (Low)
- CVE-2024-37372 - Permission model improperly processes UNC paths (Low)
Commits
- [
110902ff5e
] - lib,esm: handle bypass network-import via data: (RafaelGSS) nodejs-private/node-private#522 - [
0a0de3d491
] - lib,permission: support fs.lstat (RafaelGSS) - [
93574335ff
] - lib,permission: disable fchmod/fchown when pm enabled (RafaelGSS) nodejs-private/node-private#584 - [
09899e6302
] - src: handle permissive extension on cmd check (RafaelGSS) nodejs-private/node-private#596 - [
5d9c811634
] - src,permission: fix UNC path resolution (RafaelGSS) nodejs-private/node-private#581
2024-07-08, Version 20.15.1 'Iron' (LTS), @RafaelGSS
This is a security release.
Notable Changes
- CVE-2024-36138 - Bypass incomplete fix of CVE-2024-27980 (High)
- CVE-2024-22020 - Bypass network import restriction via data URL (Medium)
- CVE-2024-22018 - fs.lstat bypasses permission model (Low)
- CVE-2024-36137 - fs.fchown/fchmod bypasses permission model (Low)
- CVE-2024-37372 - Permission model improperly processes UNC paths (Low)
Commits
- [
60e184a6e4
] - lib,esm: handle bypass network-import via data: (RafaelGSS) nodejs-private/node-private#522 - [
025cbd6936
] - lib,permission: support fs.lstat (RafaelGSS) nodejs-private/node-private#486 - [
d38ea17341
] - lib,permission: disable fchmod/fchown when pm enabled (RafaelGSS) nodejs-private/node-private#584 - [
1ba624cd3b
] - src: handle permissive extension on cmd check (RafaelGSS) nodejs-private/node-private#596 - [
2524d00c3d
] - src,permission: fix UNC path resolution (RafaelGSS) nodejs-private/node-private#581 - [
484cb0f13c
] - src,permission: resolve path on fs_permission (Rafael Gonzaga) #52761
2024-07-08, Version 18.20.4 'Hydrogen' (LTS), @RafaelGSS
This is a security release.
Notable Changes
- CVE-2024-36138 - Bypass incomplete fix of CVE-2024-27980 (High)
- CVE-2024-22020 - Bypass network import restriction via data URL (Medium)
Commits
- [
85abedf1ff
] - lib,esm: handle bypass network-import via data: (RafaelGSS) nodejs-private/node-private#522 - [
eccd63b865
] - src: handle permissive extension on cmd check (RafaelGSS) nodejs-private/node-private#596
2024-07-02, Version 22.4.0 (Current), @targos
Notable Changes
Experimental Web Storage API
- [
9e30724b53
] - (SEMVER-MINOR) deps,lib,src: add experimental web storage (Colin Ihrig) #52435
API stability updates
- [
201266706b
] - doc: movenode --run
stability to rc (Yagiz Nizipli) #53433 - [
16c0884d48
] - doc: mark WebSocket as stable (Matthew Aitken) #53352 - [
cf375e73c1
] - doc: mark --heap-prof and related flags stable (Joyee Cheung) #53343 - [
0160745057
] - doc: mark --cpu-prof and related flags stable (Joyee Cheung) #53343
Other Notable Changes
- [
df4762722c
] - doc: doc-only deprecate OpenSSL engine-based APIs (Richard Lau) #53329 - [
ad5282e196
] - inspector: fix disable async hooks onDebugger.setAsyncCallStackDepth
(Joyee Cheung) #53473 - [
e95af740fc
] - (SEMVER-MINOR) lib: add diagnostics_channel events to module loading (RafaelGSS) #44340 - [
50733a1abe
] - (SEMVER-MINOR) util: support--no-
for argument with boolean type for parseArgs (Zhenwei Jin) #53107
Commits
- [
9f32002397
] - assert,util: correct comparison when both contain same reference (Daniel Lemire) #53431 - [
dfdc062111
] - buffer: make indexOf(byte) faster (Tobias Nießen) #53455 - [
1de437527e
] - build: configure with shared sqlite3 (Chengzhong Wu) #53519 - [
c7d44ba1f3
] - build: find version of Clang installed on Windows (Stefan Stojanovic) #53228 - [
36aad8b204
] - build: fix spacing before NINJA_ARGS (jakecastelli) #53181 - [
82092cdaa3
] - crypto: improve GetECGroupBits signature (Tobias Nießen) #53364 - [
073c231607
] - deps: update c-ares to v1.31.0 (Node.js GitHub Bot) #53554 - [
977beab729
] - (SEMVER-MINOR) deps: sqlite: fix Windows compilation (Colin Ihrig) #52435 - [
e69b8d202c
] - deps: update undici to 6.19.2 (Node.js GitHub Bot) #53468 - [
c4a7e051c8
] - deps: update undici to 6.19.1 (Node.js GitHub Bot) #53468 - [
fa34f8fcf0
] - deps: update undici to 6.19.1 (Node.js GitHub Bot) #53468 - [
0b40bfad43
] - deps: update undici to 6.19.0 (Node.js GitHub Bot) #53468 - [
1877f22a79
] - deps: update simdjson to 3.9.4 (Node.js GitHub Bot) #53467 - [
1b84964b8d
] - deps: patch V8 to 12.4.254.21 (Node.js GitHub Bot) #53470 - [
6acadeb59b
] - deps: update acorn-walk to 8.3.3 (Node.js GitHub Bot) #53466 - [
7a7f438841
] - deps: update zlib to 1.3.0.1-motley-209717d (Node.js GitHub Bot) #53156 - [
bf891bf64c
] - deps: update c-ares to v1.30.0 (Node.js GitHub Bot) #53416 - [
bd68888261
] - deps: V8: cherry-pick a3cc8522a4c8 (kxxt) #53412 - [
2defaaf771
] - deps: V8: cherry-pick 6ea594ff7132 (kxxt) #53412 - [
9e30724b53
] - (SEMVER-MINOR) deps,lib,src: add experimental web storage (Colin Ihrig) #52435 - [
608cc05de1
] - doc: recommend not using libuv node-api function (Michael Dawson) #53521 - [
30858eca59
] - doc: add additional guidance for PRs to deps (Michael Dawson) #53499 - [
a5852cc710
] - doc: only apply content-visibility on all.html (Filip Skokan) #53510 - [
befabe5c58
] - doc: update the description of the return type for options.filter (Zhenwei Jin) #52742 - [
5ed1a036ba
] - doc: remove first timer badge (Aviv Keller) #53338 - [
201266706b
] - doc: movenode --run
stability to rc (Yagiz Nizipli) #53433 - [
46a7681cc4
] - doc: add Buffer.from(string) to functions that use buffer pool (Christian Bates-White) #52801 - [
ec5364f6de
] - doc: add initial text for ambassadors program (Michael Dawson) #52857 - [
fa113b8fc7
] - doc: fix typo (EhsanKhaki) #53397 - [
d9182d0086
] - doc: define more cases for stream event emissions (Aviv Keller) #53317 - [
923d24b6f2
] - doc: remove mentions of policy model from security info (Aviv Keller) #53249 - [
48f78cd31b
] - doc: fix mistakes in the moduleload
hook api (István Donkó) #53349 - [
16c0884d48
] - doc: mark WebSocket as stable (Matthew Aitken) #53352 - [
df4762722c
] - doc: doc-only deprecate OpenSSL engine-based APIs (Richard Lau) #53329 - [
cf375e73c1
] - doc: mark --heap-prof and related flags stable (Joyee Cheung) #53343 - [
0160745057
] - doc: mark --cpu-prof and related flags stable (Joyee Cheung) #53343 - [
6e12d9f049
] - doc: remove IRC from man page (Tobias Nießen) #53344 - [
24c7a9415b
] - doc, http: addrejectNonStandardBodyWrites
option, clear its behaviour (jakecastelli) #53396 - [
ec38f3dc6a
] - doc, meta: organize contributing to Node-API guide (Aviv Keller) #53243 - [
cf5a973c42
] - doc, meta: use markdown rather than HTML in CONTRIBUTING.md (Aviv Keller) #53235 - [
105b006fd2
] - fs: moveToNamespacedPath
to c++ (Yagiz Nizipli) #52135 - [
568377f7f0
] - fs: do not crash if the watched file is removed while setting up watch (Matteo Collina) #53452 - [
fad179307c
] - fs: add fast api forInternalModuleStat
(Yagiz ...
2024-06-20, Version 20.15.0 'Iron' (LTS), @marco-ippolito
test_runner: support test plans
It is now possible to count the number of assertions and subtests that are expected to run within a test. If the number of assertions and subtests that run does not match the expected count, the test will fail.
test('top level test', (t) => {
t.plan(2);
t.assert.ok('some relevant assertion here');
t.subtest('subtest', () => {});
});
Contributed by Colin Ihrig in #52860
inspector: introduce the --inspect-wait
flag
This release introduces the --inspect-wait
flag, which allows debugger to wait for attachement. This flag is useful when you want to debug the code from the beginning. Unlike --inspect-brk
, which breaks on the first line, this flag waits for debugger to be connected and then runs the code as soon as a session is established.
Contributed by Kohei Ueno in #52734
zlib: expose zlib.crc32()
This release exposes the crc32() function from zlib to user-land.
It computes a 32-bit Cyclic Redundancy Check checksum of data. If
value is specified, it is used as the starting value of the checksum,
otherwise, 0 is used as the starting value.
The CRC algorithm is designed to compute checksums and to detect error
in data transmission. It's not suitable for cryptographic authentication.
const zlib = require('node:zlib');
const { Buffer } = require('node:buffer');
let crc = zlib.crc32('hello'); // 907060870
crc = zlib.crc32('world', crc); // 4192936109
crc = zlib.crc32(Buffer.from('hello', 'utf16le')); // 1427272415
crc = zlib.crc32(Buffer.from('world', 'utf16le'), crc); // 4150509955
Contributed by Joyee Cheung in #52692
cli: allow running wasm in limited vmem with --disable-wasm-trap-handler
By default, Node.js enables trap-handler-based WebAssembly bound
checks. As a result, V8 does not need to insert inline bound checks
int the code compiled from WebAssembly which may speedup WebAssembly
execution significantly, but this optimization requires allocating
a big virtual memory cage (currently 10GB). If the Node.js process
does not have access to a large enough virtual memory address space
due to system configurations or hardware limitations, users won't
be able to run any WebAssembly that involves allocation in this
virtual memory cage and will see an out-of-memory error.
$ ulimit -v 5000000
$ node -p "new WebAssembly.Memory({ initial: 10, maximum: 100 });"
[eval]:1
new WebAssembly.Memory({ initial: 10, maximum: 100 });
^
RangeError: WebAssembly.Memory(): could not allocate memory
at [eval]:1:1
at runScriptInThisContext (node:internal/vm:209:10)
at node:internal/process/execution:118:14
at [eval]-wrapper:6:24
at runScript (node:internal/process/execution:101:62)
at evalScript (node:internal/process/execution:136:3)
at node:internal/main/eval_string:49:3
--disable-wasm-trap-handler
disables this optimization so that
users can at least run WebAssembly (with a less optimial performance)
when the virtual memory address space available to their Node.js
process is lower than what the V8 WebAssembly memory cage needs.
Contributed by Joyee Cheung in #52766
Other Notable Changes
- [
12512c3d0e
] - doc: add pimterry to collaborators (Tim Perry) #52874 - [
9d485b40bb
] - (SEMVER-MINOR) tools: fix get_asan_state() in tools/test.py (Joyee Cheung) #52766 - [
e98c305f52
] - (SEMVER-MINOR) tools: support max_virtual_memory test configuration (Joyee Cheung) #52766 - [
dce0300896
] - (SEMVER-MINOR) tools: support != in test status files (Joyee Cheung) #52766
Commits
- [
227093bfec
] - assert: add deep equal check for more Error type (Zhenwei Jin) #51805 - [
184cfe5a71
] - benchmark: filter non-present deps fromstart-cli-version
(Adam Majer) #51746 - [
8b3e83bb53
] - buffer: even faster atob (Daniel Lemire) #52443 - [
8d628c3255
] - buffer: use size_t instead of uint32_t to avoid segmentation fault (Xavier Stouder) #48033 - [
16ae2b2933
] - buffer: remove lines setting indexes to integer value (Zhenwei Jin) #52588 - [
48c15d0dcd
] - build: remove deprecated calls for argument groups (Mohammed Keyvanzadeh) #52913 - [
1be8232d17
] - build: drop base64 dep in GN build (Cheng) #52856 - [
918962d6e7
] - build: make simdjson a public dep in GN build (Cheng) #52755 - [
5215b6fd8e
] - build, tools: copy release assets to staging R2 bucket once built (flakey5) #51394 - [
473fa73857
] - (SEMVER-MINOR) cli: allow running wasm in limited vmem with --disable-wasm-trap-handler (Joyee Cheung) #52766 - [
954d2aded4
] - cluster: replaceforEach
withfor-of
loop (Jérôme Benoit) #50317 - [
794e450ea7
] - console: colorize console error and warn (Jithil P Ponnan) #51629 - [
0fb7c18f10
] - crypto: fix duplicated switch-case return values (Mustafa Ateş UZUN) #49030 - [
cd1415c8b2
] - Revert "crypto: make timingSafeEqual faster for Uint8Array" (Tobias Nießen) #53390 - [
b774544bb1
] - deps: enable unbundling of simdjson, simdutf, ada (Daniel Lemire) #52924 - [
da4dbfc5fd
] - doc: remove reference to AUTHORS file (Marco Ippolito) #52960 - [
2f3f2ff8af
] - doc: update hljs with the latest styles (Aviv Keller) #52911 - [
3a1d17a9b1
] - doc: mention quicker way to build docs (Alex Crawford) #52937 - [
be309bd19d
] - doc: mention push.followTags config (Rafael Gonzaga) #52906 - [
e62c6e2684
] - doc: document pipeline withend
option (Alois Klink) #48970 - [
af27225cf6
] - doc: add example forexecFileSync
method and ref to stdio (Evan Shortiss) #39412 - [
086626f9b1
] - doc: add examples and notes to http server.close et al (mary marchini) #49091 - [
3aa3337a00
] - doc: fixdns.lookup
family0
andall
descriptions (Adam Jones) #51653 - [
585f2a2e7f
] - doc: updatefs.realpath
documentation (sinkhaha) #48170 - [
4bf3d44e1d
] - doc: update fs read documentation for clarity (Mert Can Altin) #52453 - [
ae5d47dde3
] - doc: watermark string behavior (Benjamin Gruenbaum) #52842 - [
1e429d10d3
] - doc: exclude commits with baking-for-lts (Marco Ippolito) #52896 - [
3df3e37cdb
] - doc: add names next to release key bash commands (Aviv Keller) #52878 - [
12512c3d0e
] - doc: add pimterry to collaborators (Tim Perry) #52874 - [
97e0fef019
] - doc: add more definitions to GLOSSARY.md (Aviv Keller) [#52798](https://gith...
2024-06-11, Version 22.3.0 (Current), @RafaelGSS
Notable Changes
- [
5a41bcf9ca
] - (SEMVER-MINOR) src: traverse parent folders while running--run
(Yagiz Nizipli) #53154 - [
1d5934524b
] - (SEMVER-MINOR) buffer: add .bytes() method to Blob (Matthew Aitken) #53221 - [
75e5612fae
] - (SEMVER-MINOR) src,permission: --allow-wasi & prevent WASI exec (Rafael Gonzaga) #53124 - [
b5c30e2f5e
] - (SEMVER-MINOR) module: print amount of load time of a cjs module (Vinicius Lourenço) #52213 - [
8c6dffc269
] - (SEMVER-MINOR) test_runner: add snapshot testing (Colin Ihrig) #53169 - [
048478d351
] - (SEMVER-MINOR) doc: add context.assert docs (Colin Ihrig) #53169 - [
f6d2af8ee7
] - (SEMVER-MINOR) test_runner: add context.fullName (Colin Ihrig) #53169 - [
a0766bdf0e
] - (SEMVER-MINOR) net: add new net.server.listen tracing channel (Paolo Insogna) #53136 - [
374743cd4e
] - (SEMVER-MINOR) process: add process.getBuiltinModule(id) (Joyee Cheung) #52762 - [
1eb55f3550
] - (SEMVER-MINOR) doc: improve explanation about built-in modules (Joyee Cheung) #52762 - [
6165894774
] - fs: mark recursive cp methods as stable (Théo LUDWIG) #53127 - [
db5dd0c6df
] - doc: add StefanStojanovic to collaborators (StefanStojanovic) #53118 - [
cfcde78513
] - (SEMVER-MINOR) cli: addNODE_RUN_PACKAGE_JSON_PATH
env (Yagiz Nizipli) #53058 - [
7a67ecf161
] - (SEMVER-MINOR) test_runner: support module mocking (Colin Ihrig) #52848 - [
ee56aecced
] - (SEMVER-MINOR) lib: add EventSource Client (Aras Abbasi) #51575 - [
6413769bc7
] - (SEMVER-MINOR) lib: replace MessageEvent with undici's (Matthew Aitken) #52370 - [
c70b2f7a76
] - (SEMVER-MINOR) cli: addNODE_RUN_SCRIPT_NAME
env tonode --run
(Yagiz Nizipli) #53032 - [
badec0c38b
] - doc: add Marco Ippolito to TSC (Rafael Gonzaga) #53008
Commits
- [
feb0ba2860
] - benchmark: fix napi/ref addon (Michaël Zasso) #53233 - [
bb844de4e1
] - benchmark: fix api restriction for the permission category (Ryan Tsien) #51528 - [
1d5934524b
] - (SEMVER-MINOR) buffer: add .bytes() method to Blob (Matthew Aitken) #53221 - [
d87f9af5aa
] - buffer: make compare/equals faster (Tobias Nießen) #52993 - [
ec83431d71
] - build: generate binlog in out directories (Chengzhong Wu) #53325 - [
0976439417
] - build: fix --v8-lite-mode build (Daeyeon Jeong) #52725 - [
350c733ae6
] - build: support python 3.13 (Chengzhong Wu) #53190 - [
74cefa55a2
] - build: update ruff to v0.4.5 (Yagiz Nizipli) #53180 - [
33242ff042
] - build: add--skip-tests
totest-ci-js
target (Antoine du Hamel) #53105 - [
edcadf7f8a
] - build: fix building embedtest in GN build (Cheng) #53145 - [
d711942fce
] - build: use broader detection for 'help' (Aviv Keller) #53045 - [
ca655b61a7
] - build: fix -j propagation to ninja (Tobias Nießen) #53088 - [
5fba67ff9f
] - build: exit on unsupported host OS for Android (Mohammed Keyvanzadeh) #52882 - [
b7d7e9a084
] - build: fix--enable-d8
builds (Richard Lau) #53106 - [
14547c5d32
] - build: fix ./configure --help format error (Zhenwei Jin) #53066 - [
f9490806d3
] - build: set "clang" in config.gypi in GN build (Cheng) #53004 - [
638b510ce7
] - cli: add--expose-gc
flag available toNODE_OPTIONS
(Juan José) #53078 - [
cfcde78513
] - (SEMVER-MINOR) cli: addNODE_RUN_PACKAGE_JSON_PATH
env (Yagiz Nizipli) #53058 - [
c70b2f7a76
] - (SEMVER-MINOR) cli: addNODE_RUN_SCRIPT_NAME
env tonode --run
(Yagiz Nizipli) #53032 - [
34f20983fd
] - crypto: fix propagation of "memory limit exceeded" (Tobias Nießen) #53300 - [
fef067f4f4
] - deps: update nghttp2 to 1.62.1 (Node.js GitHub Bot) #52966 - [
fc949928ac
] - deps: update nghttp2 to 1.62.0 (Node.js GitHub Bot) #52966 - [
4a17dda8dc
] - deps: update undici to 6.18.2 (Node.js GitHub Bot) #53255 - [
e45cc2a551
] - deps: update ada to 2.8.0 (Node.js GitHub Bot) #53254 - [
77907a2619
] - deps: update corepack to 0.28.2 (Node.js GitHub Bot) #53253 - [
b688050778
] - deps: update simdjson to 3.9.3 (Node.js GitHub Bot) #53252 - [
6303f19cbe
] - deps: patch V8 to 12.4.254.20 (Node.js GitHub Bot) #53159 - [
257004c68f
] - deps: update c-ares to 1.29.0 (Node.js GitHub Bot) #53155 - [
0b375a3e36
] - deps: upgrade npm to 10.8.1 (npm team) #53207 - [
728c861b1c
] - deps: fix FP16 bitcasts.h (Stefan Stojanovic) #53134 - [
52a78737b1
] - deps: patch V8 to 12.4.254.19 (Node.js GitHub Bot) #53094 - [
4d27b32e58
] - deps: update undici to 6.18.1 (Node.js GitHub Bot) #53073 - [
b94199240b
] - deps: update undici to 6.18.0 (Node.js GitHub Bot) #53073 - [
793af1b3e7
] - deps: update undici to 6.17.0 (Node.js GitHub Bot) #53034 - [[
fe00becc03
](fe00b...