+20.0.0
+ |
+
19.8.1
19.8.0
19.7.0
diff --git a/doc/abi_version_registry.json b/doc/abi_version_registry.json
index 483031b7d7bd0e..716409da5fe4f7 100644
--- a/doc/abi_version_registry.json
+++ b/doc/abi_version_registry.json
@@ -1,6 +1,6 @@
{
"NODE_MODULE_VERSION": [
- { "modules": 115,"runtime": "node", "variant": "v8_11.2", "versions": "20.0.0-pre" },
+ { "modules": 115,"runtime": "node", "variant": "v8_11.2", "versions": "20.0.0" },
{ "modules": 114,"runtime": "electron", "variant": "electron", "versions": "24" },
{ "modules": 113,"runtime": "electron", "variant": "electron", "versions": "23" },
{ "modules": 112,"runtime": "node", "variant": "v8_10.9", "versions": "20.0.0-pre" },
diff --git a/doc/api/async_context.md b/doc/api/async_context.md
index 7e456aa9be1b03..7a55baa53cd925 100644
--- a/doc/api/async_context.md
+++ b/doc/api/async_context.md
@@ -505,7 +505,7 @@ added:
- v14.8.0
- v12.19.0
changes:
- - version: REPLACEME
+ - version: v20.0.0
pr-url: https://github.com/nodejs/node/pull/46432
description: The `asyncResource` property added to the bound function
has been deprecated and will be removed in a future
@@ -535,7 +535,7 @@ added:
- v14.8.0
- v12.19.0
changes:
- - version: REPLACEME
+ - version: v20.0.0
pr-url: https://github.com/nodejs/node/pull/46432
description: The `asyncResource` property added to the bound function
has been deprecated and will be removed in a future
diff --git a/doc/api/buffer.md b/doc/api/buffer.md
index da90d3f3050882..b9397cc1ed4911 100644
--- a/doc/api/buffer.md
+++ b/doc/api/buffer.md
@@ -5055,7 +5055,7 @@ added:
- v19.2.0
- v18.13.0
changes:
- - version: REPLACEME
+ - version: v20.0.0
pr-url: https://github.com/nodejs/node/pull/47153
description: No longer experimental.
-->
diff --git a/doc/api/cli.md b/doc/api/cli.md
index cda8232ac91d9f..9cfb8fd47dcb1f 100644
--- a/doc/api/cli.md
+++ b/doc/api/cli.md
@@ -103,7 +103,7 @@ If this flag is passed, the behavior can still be set to not abort through
### `--allow-child-process`
> Stability: 1 - Experimental
@@ -144,7 +144,7 @@ Error: Access to this API has been restricted
### `--allow-fs-read`
> Stability: 1 - Experimental
@@ -190,7 +190,7 @@ $ node --experimental-permission --allow-fs-read=/path/to/index.js index.js
### `--allow-fs-write`
> Stability: 1 - Experimental
@@ -210,7 +210,7 @@ Relative paths are NOT supported through the CLI flag.
### `--allow-worker`
> Stability: 1 - Experimental
@@ -537,7 +537,7 @@ Enable experimental support for the `https:` protocol in `import` specifiers.
### `--experimental-permission`
Enable the Permission Model for current process. When enabled, the
@@ -626,7 +626,7 @@ added:
- v13.3.0
- v12.16.0
changes:
- - version: REPLACEME
+ - version: v20.0.0
pr-url: https://github.com/nodejs/node/pull/47286
description: This option is no longer required as WASI is
enabled by default, but can still be passed.
@@ -1400,7 +1400,7 @@ added:
- v18.1.0
- v16.17.0
changes:
- - version: REPLACEME
+ - version: v20.0.0
pr-url: https://github.com/nodejs/node/pull/46983
description: The test runner is now stable.
- version:
@@ -1420,7 +1420,7 @@ for more details.
@@ -1436,7 +1436,7 @@ added:
- v19.6.0
- v18.15.0
changes:
- - version: REPLACEME
+ - version: v20.0.0
pr-url: https://github.com/nodejs/node/pull/46983
description: The test runner is now stable.
-->
@@ -1451,7 +1451,7 @@ added:
- v19.6.0
- v18.15.0
changes:
- - version: REPLACEME
+ - version: v20.0.0
pr-url: https://github.com/nodejs/node/pull/46983
description: The test runner is now stable.
-->
@@ -1466,7 +1466,7 @@ added:
- v18.0.0
- v16.17.0
changes:
- - version: REPLACEME
+ - version: v20.0.0
pr-url: https://github.com/nodejs/node/pull/46983
description: The test runner is now stable.
-->
diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md
index acbadb5c3d1e03..120dec9cd4adbc 100644
--- a/doc/api/deprecations.md
+++ b/doc/api/deprecations.md
@@ -1864,7 +1864,7 @@ bits are allowed. Authentication tags of other lengths are invalid per
diff --git a/doc/api/diagnostics_channel.md b/doc/api/diagnostics_channel.md
index 8c8cf969231829..0a1e3c889c715d 100644
--- a/doc/api/diagnostics_channel.md
+++ b/doc/api/diagnostics_channel.md
@@ -235,7 +235,7 @@ diagnostics_channel.unsubscribe('my-channel', onMessage);
> Stability: 1 - Experimental
@@ -465,7 +465,7 @@ channel.unsubscribe(onMessage);
> Stability: 1 - Experimental
@@ -509,7 +509,7 @@ channel.bindStore(store, (data) => {
> Stability: 1 - Experimental
@@ -548,7 +548,7 @@ channel.unbindStore(store);
> Stability: 1 - Experimental
@@ -609,7 +609,7 @@ channel.runStores({ some: 'message' }, () => {
> Stability: 1 - Experimental
@@ -626,7 +626,7 @@ dynamically.
> Stability: 1 - Experimental
@@ -694,7 +694,7 @@ channels.subscribe({
> Stability: 1 - Experimental
@@ -764,7 +764,7 @@ channels.unsubscribe({
> Stability: 1 - Experimental
@@ -809,7 +809,7 @@ channels.traceSync(() => {
> Stability: 1 - Experimental
@@ -857,7 +857,7 @@ channels.tracePromise(async () => {
> Stability: 1 - Experimental
diff --git a/doc/api/events.md b/doc/api/events.md
index f5a17224693360..e76e533e4ef19c 100644
--- a/doc/api/events.md
+++ b/doc/api/events.md
@@ -1269,7 +1269,7 @@ const { getEventListeners, EventEmitter } = require('node:events');
## `events.getMaxListeners(emitterOrTarget)`
* `emitterOrTarget` {EventEmitter|EventTarget}
diff --git a/doc/api/globals.md b/doc/api/globals.md
index 1e092f7a8aa005..306d800dbdfd47 100644
--- a/doc/api/globals.md
+++ b/doc/api/globals.md
@@ -477,7 +477,7 @@ A browser-compatible implementation of the [`fetch()`][] function.
## Class: `File`
diff --git a/doc/api/process.md b/doc/api/process.md
index a7594aa205b57d..4dc67a60f9202b 100644
--- a/doc/api/process.md
+++ b/doc/api/process.md
@@ -1728,7 +1728,7 @@ that started the Node.js process. Symbolic links, if any, are resolved.
* {Object}
@@ -2637,7 +2637,7 @@ for the current process. Additional documentation is available in the
### `process.permission.deny(scope[, reference])`
* `scopes` {string}
@@ -2665,7 +2665,7 @@ process.permission.deny('fs.write');
### `process.permission.has(scope[, reference])`
* `scopes` {string}
diff --git a/doc/api/stream.md b/doc/api/stream.md
index f01b6ad6e1f727..697cd241d67d9b 100644
--- a/doc/api/stream.md
+++ b/doc/api/stream.md
@@ -3351,7 +3351,7 @@ reader.read().then(({ value, done }) => {
### `stream.getDefaultHighWaterMark(objectMode)`
* {boolean} objectMode
@@ -3363,7 +3363,7 @@ Defaults to `16384` (16 KiB), or `16` for `objectMode`.
### `stream.setDefaultHighWaterMark(objectMode, value)`
* {boolean} objectMode
diff --git a/doc/api/test.md b/doc/api/test.md
index 165d38f620b737..53600b31406a05 100644
--- a/doc/api/test.md
+++ b/doc/api/test.md
@@ -7,7 +7,7 @@ added:
- v18.0.0
- v16.17.0
changes:
- - version: REPLACEME
+ - version: v20.0.0
pr-url: https://github.com/nodejs/node/pull/46983
description: The test runner is now stable.
-->
@@ -521,7 +521,7 @@ added:
- v19.6.0
- v18.15.0
changes:
- - version: REPLACEME
+ - version: v20.0.0
pr-url: https://github.com/nodejs/node/pull/47238
description: Reporters are now exposed at `node:test/reporters`.
-->
diff --git a/doc/api/url.md b/doc/api/url.md
index 52adf1dca72a79..a60e3e224ebc22 100644
--- a/doc/api/url.md
+++ b/doc/api/url.md
@@ -665,7 +665,7 @@ ID that isn't registered will silently fail.
#### `URL.canParse(input[, base])`
* `input` {string} The absolute or relative input URL to parse. If `input`
@@ -1248,7 +1248,7 @@ added:
- v15.7.0
- v14.18.0
changes:
- - version: REPLACEME
+ - version: v20.0.0
pr-url: https://github.com/nodejs/node/pull/46989
description: The returned object will also contain all the own enumerable
properties of the `url` argument.
diff --git a/doc/api/util.md b/doc/api/util.md
index caf26dcffcf7fe..f178078264875f 100644
--- a/doc/api/util.md
+++ b/doc/api/util.md
@@ -1385,7 +1385,7 @@ added:
- v16.17.0
changes:
- version:
- - REPLACEME
+ - v20.0.0
pr-url: https://github.com/nodejs/node/pull/46718
description: The API is no longer experimental.
- version:
diff --git a/doc/api/webcrypto.md b/doc/api/webcrypto.md
index 59bedad50d36bd..892355f189e0e6 100644
--- a/doc/api/webcrypto.md
+++ b/doc/api/webcrypto.md
@@ -2,7 +2,7 @@
+
+
+
+Current |
+
+
+
+20.0.0
+ |
+
+
+
+* Other Versions
+ * [19.x](CHANGELOG_V19.md)
+ * [18.x](CHANGELOG_V18.md)
+ * [17.x](CHANGELOG_V17.md)
+ * [16.x](CHANGELOG_V16.md)
+ * [15.x](CHANGELOG_V15.md)
+ * [14.x](CHANGELOG_V14.md)
+ * [13.x](CHANGELOG_V13.md)
+ * [12.x](CHANGELOG_V12.md)
+ * [11.x](CHANGELOG_V11.md)
+ * [10.x](CHANGELOG_V10.md)
+ * [9.x](CHANGELOG_V9.md)
+ * [8.x](CHANGELOG_V8.md)
+ * [7.x](CHANGELOG_V7.md)
+ * [6.x](CHANGELOG_V6.md)
+ * [5.x](CHANGELOG_V5.md)
+ * [4.x](CHANGELOG_V4.md)
+ * [0.12.x](CHANGELOG_V012.md)
+ * [0.10.x](CHANGELOG_V010.md)
+ * [io.js](CHANGELOG_IOJS.md)
+ * [Archive](CHANGELOG_ARCHIVE.md)
+
+## 2023-04-18, Version 20.0.0 (Current), @RafaelGSS
+
+We're excited to announce the release of Node.js 20! Highlights include the update of the V8 JavaScript engine to 11.3, a stable test\_runner,
+and improved interoperability of WebCryptoAPI.
+
+As a reminder, Node.js 20 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.
+
+### Notable Changes
+
+#### V8 11.3
+
+The V8 engine is updated to version 11.3, which is part of Chromium 113.
+This version includes three new features to the JavaScript API:
+
+* [String.prototype.isWellFormed and toWellFormed](https://chromestatus.com/feature/5200195346759680)
+* [RegExp v flag with set notation + properties of strings](https://chromestatus.com/feature/5144156542861312)
+* [WebAssembly Tail Call](https://chromestatus.com/feature/5423405012615168)
+
+The V8 update was a contribution by Michaël Zasso in [#47251](https://github.com/nodejs/node/pull/47251).
+
+#### Deprecations and Removals
+
+* \[[`3bed5f11e0`](https://github.com/nodejs/node/commit/3bed5f11e0)] - **(SEMVER-MAJOR)** **url**: runtime-deprecate url.parse() with invalid ports (Rich Trott) [#45526](https://github.com/nodejs/node/pull/45526)
+
+`url.parse()` accepts URLs with ports that are not numbers. This behavior might result in host name spoofing with unexpected input.
+These URLs will throw an error in future versions of Node.js, as the WHATWG URL API does already.
+Starting with Node.js 20, these URLS cause `url.parse()` to emit a warning.
+
+#### Other Notable Changes
+
+##### Stable Test Runner
+
+The recent update to Node.js, version 20, includes an important change to the test\_runner module. The module has been marked as stable after a recent update.
+Previously, the test\_runner module was experimental, but this change marks it as a stable module that is ready for production use.
+
+Contributed by Colin Ihrig in [#46983](https://github.com/nodejs/node/pull/46983)
+
+##### WebCryptoAPI
+
+WebCryptoAPI functions' arguments are now coersed and validated as per their WebIDL definitions like in other Web Crypto API implementations.
+This further improves interoperability with other implementations of Web Crypto API.
+
+This change was made by Filip Skokan in [#46067](https://github.com/nodejs/node/pull/46067).
+
+### Semver-Major Commits
+
+* \[[`9fafb0a090`](https://github.com/nodejs/node/commit/9fafb0a090)] - **(SEMVER-MAJOR)** **async\_hooks**: deprecate the AsyncResource.bind asyncResource property (James M Snell) [#46432](https://github.com/nodejs/node/pull/46432)
+* \[[`7bc0e6a4e7`](https://github.com/nodejs/node/commit/7bc0e6a4e7)] - **(SEMVER-MAJOR)** **buffer**: graduate File from experimental and expose as global (Khafra) [#47153](https://github.com/nodejs/node/pull/47153)
+* \[[`671ffd7825`](https://github.com/nodejs/node/commit/671ffd7825)] - **(SEMVER-MAJOR)** **buffer**: use min/max of `validateNumber` (Deokjin Kim) [#45796](https://github.com/nodejs/node/pull/45796)
+* \[[`ab1614d280`](https://github.com/nodejs/node/commit/ab1614d280)] - **(SEMVER-MAJOR)** **build**: reset embedder string to "-node.0" (Michaël Zasso) [#47251](https://github.com/nodejs/node/pull/47251)
+* \[[`c1bcdbcf79`](https://github.com/nodejs/node/commit/c1bcdbcf79)] - **(SEMVER-MAJOR)** **build**: warn for gcc versions earlier than 10.1 (Richard Lau) [#46806](https://github.com/nodejs/node/pull/46806)
+* \[[`649f68fc1e`](https://github.com/nodejs/node/commit/649f68fc1e)] - **(SEMVER-MAJOR)** **build**: reset embedder string to "-node.0" (Yagiz Nizipli) [#45579](https://github.com/nodejs/node/pull/45579)
+* \[[`9374700d7a`](https://github.com/nodejs/node/commit/9374700d7a)] - **(SEMVER-MAJOR)** **crypto**: remove DEFAULT\_ENCODING (Tobias Nießen) [#47182](https://github.com/nodejs/node/pull/47182)
+* \[[`1640aeb680`](https://github.com/nodejs/node/commit/1640aeb680)] - **(SEMVER-MAJOR)** **crypto**: remove obsolete SSL\_OP\_\* constants (Tobias Nießen) [#47073](https://github.com/nodejs/node/pull/47073)
+* \[[`c2e4b1fa9a`](https://github.com/nodejs/node/commit/c2e4b1fa9a)] - **(SEMVER-MAJOR)** **crypto**: remove ALPN\_ENABLED (Tobias Nießen) [#47028](https://github.com/nodejs/node/pull/47028)
+* \[[`3ef38c4bd7`](https://github.com/nodejs/node/commit/3ef38c4bd7)] - **(SEMVER-MAJOR)** **crypto**: use WebIDL converters in WebCryptoAPI (Filip Skokan) [#46067](https://github.com/nodejs/node/pull/46067)
+* \[[`08af023b1f`](https://github.com/nodejs/node/commit/08af023b1f)] - **(SEMVER-MAJOR)** **crypto**: runtime deprecate replaced rsa-pss keygen parameters (Filip Skokan) [#45653](https://github.com/nodejs/node/pull/45653)
+* \[[`7eb0ac3cb6`](https://github.com/nodejs/node/commit/7eb0ac3cb6)] - **(SEMVER-MAJOR)** **deps**: patch V8 to support compilation on win-arm64 (Michaël Zasso) [#47251](https://github.com/nodejs/node/pull/47251)
+* \[[`a7c129f286`](https://github.com/nodejs/node/commit/a7c129f286)] - **(SEMVER-MAJOR)** **deps**: silence irrelevant V8 warning (Michaël Zasso) [#47251](https://github.com/nodejs/node/pull/47251)
+* \[[`6f5655a18e`](https://github.com/nodejs/node/commit/6f5655a18e)] - **(SEMVER-MAJOR)** **deps**: always define V8\_EXPORT\_PRIVATE as no-op (Michaël Zasso) [#47251](https://github.com/nodejs/node/pull/47251)
+* \[[`f226350fcb`](https://github.com/nodejs/node/commit/f226350fcb)] - **(SEMVER-MAJOR)** **deps**: update V8 to 11.3.244.4 (Michaël Zasso) [#47251](https://github.com/nodejs/node/pull/47251)
+* \[[`d6dae7420e`](https://github.com/nodejs/node/commit/d6dae7420e)] - **(SEMVER-MAJOR)** **deps**: V8: cherry-pick f1c888e7093e (Michaël Zasso) [#45579](https://github.com/nodejs/node/pull/45579)
+* \[[`56c436533e`](https://github.com/nodejs/node/commit/56c436533e)] - **(SEMVER-MAJOR)** **deps**: fix V8 build on Windows with MSVC (Michaël Zasso) [#45579](https://github.com/nodejs/node/pull/45579)
+* \[[`51ab98c71b`](https://github.com/nodejs/node/commit/51ab98c71b)] - **(SEMVER-MAJOR)** **deps**: silence irrelevant V8 warning (Michaël Zasso) [#45579](https://github.com/nodejs/node/pull/45579)
+* \[[`9f84d3eea8`](https://github.com/nodejs/node/commit/9f84d3eea8)] - **(SEMVER-MAJOR)** **deps**: V8: fix v8-cppgc.h for MSVC (Jiawen Geng) [#45579](https://github.com/nodejs/node/pull/45579)
+* \[[`f2318cd4b5`](https://github.com/nodejs/node/commit/f2318cd4b5)] - **(SEMVER-MAJOR)** **deps**: fix V8 build issue with inline methods (Jiawen Geng) [#45579](https://github.com/nodejs/node/pull/45579)
+* \[[`16e03e7968`](https://github.com/nodejs/node/commit/16e03e7968)] - **(SEMVER-MAJOR)** **deps**: update V8 to 10.9.194.4 (Yagiz Nizipli) [#45579](https://github.com/nodejs/node/pull/45579)
+* \[[`cc18fd9608`](https://github.com/nodejs/node/commit/cc18fd9608)] - **(SEMVER-MAJOR)** **events**: refactor to use `validateNumber` (Deokjin Kim) [#45770](https://github.com/nodejs/node/pull/45770)
+* \[[`ff92b40ffc`](https://github.com/nodejs/node/commit/ff92b40ffc)] - **(SEMVER-MAJOR)** **http**: close the connection after sending a body without declared length (Tim Perry) [#46333](https://github.com/nodejs/node/pull/46333)
+* \[[`2a29df6464`](https://github.com/nodejs/node/commit/2a29df6464)] - **(SEMVER-MAJOR)** **http**: keep HTTP/1.1 conns alive even if the Connection header is removed (Tim Perry) [#46331](https://github.com/nodejs/node/pull/46331)
+* \[[`391dc74a10`](https://github.com/nodejs/node/commit/391dc74a10)] - **(SEMVER-MAJOR)** **http**: throw error if options of http.Server is array (Deokjin Kim) [#46283](https://github.com/nodejs/node/pull/46283)
+* \[[`ed3604cd64`](https://github.com/nodejs/node/commit/ed3604cd64)] - **(SEMVER-MAJOR)** **http**: server check Host header, to meet RFC 7230 5.4 requirement (wwwzbwcom) [#45597](https://github.com/nodejs/node/pull/45597)
+* \[[`88d71dc301`](https://github.com/nodejs/node/commit/88d71dc301)] - **(SEMVER-MAJOR)** **lib**: refactor to use min/max of `validateNumber` (Deokjin Kim) [#45772](https://github.com/nodejs/node/pull/45772)
+* \[[`e4d641f02a`](https://github.com/nodejs/node/commit/e4d641f02a)] - **(SEMVER-MAJOR)** **lib**: refactor to use validators in http2 (Debadree Chatterjee) [#46174](https://github.com/nodejs/node/pull/46174)
+* \[[`0f3e531096`](https://github.com/nodejs/node/commit/0f3e531096)] - **(SEMVER-MAJOR)** **lib**: performance improvement on readline async iterator (Thiago Oliveira Santos) [#41276](https://github.com/nodejs/node/pull/41276)
+* \[[`5b5898ac86`](https://github.com/nodejs/node/commit/5b5898ac86)] - **(SEMVER-MAJOR)** **lib,src**: update exit codes as per todos (Debadree Chatterjee) [#45841](https://github.com/nodejs/node/pull/45841)
+* \[[`2d0d99733b`](https://github.com/nodejs/node/commit/2d0d99733b)] - **(SEMVER-MAJOR)** **process**: remove `process.exit()`, `process.exitCode` coercion to integer (Daeyeon Jeong) [#43716](https://github.com/nodejs/node/pull/43716)
+* \[[`dc06df31b6`](https://github.com/nodejs/node/commit/dc06df31b6)] - **(SEMVER-MAJOR)** **readline**: refactor to use `validateNumber` (Deokjin Kim) [#45801](https://github.com/nodejs/node/pull/45801)
+* \[[`295b2f3ff4`](https://github.com/nodejs/node/commit/295b2f3ff4)] - **(SEMVER-MAJOR)** **src**: update NODE\_MODULE\_VERSION to 115 (Michaël Zasso) [#47251](https://github.com/nodejs/node/pull/47251)
+* \[[`3803b028dd`](https://github.com/nodejs/node/commit/3803b028dd)] - **(SEMVER-MAJOR)** **src**: share common code paths for SEA and embedder script (Anna Henningsen) [#46825](https://github.com/nodejs/node/pull/46825)
+* \[[`e8bddac3e9`](https://github.com/nodejs/node/commit/e8bddac3e9)] - **(SEMVER-MAJOR)** **src**: apply ABI-breaking API simplifications (Anna Henningsen) [#46705](https://github.com/nodejs/node/pull/46705)
+* \[[`f84de0ad4c`](https://github.com/nodejs/node/commit/f84de0ad4c)] - **(SEMVER-MAJOR)** **src**: use uint32\_t for process initialization flags enum (Anna Henningsen) [#46427](https://github.com/nodejs/node/pull/46427)
+* \[[`a6242772ec`](https://github.com/nodejs/node/commit/a6242772ec)] - **(SEMVER-MAJOR)** **src**: fix ArrayBuffer::Detach deprecation (Michaël Zasso) [#45579](https://github.com/nodejs/node/pull/45579)
+* \[[`dd5c39a808`](https://github.com/nodejs/node/commit/dd5c39a808)] - **(SEMVER-MAJOR)** **src**: update NODE\_MODULE\_VERSION to 112 (Yagiz Nizipli) [#45579](https://github.com/nodejs/node/pull/45579)
+* \[[`63eca7fec0`](https://github.com/nodejs/node/commit/63eca7fec0)] - **(SEMVER-MAJOR)** **stream**: validate readable defaultEncoding (Marco Ippolito) [#46430](https://github.com/nodejs/node/pull/46430)
+* \[[`9e7093f416`](https://github.com/nodejs/node/commit/9e7093f416)] - **(SEMVER-MAJOR)** **stream**: validate writable defaultEncoding (Marco Ippolito) [#46322](https://github.com/nodejs/node/pull/46322)
+* \[[`fb91ee4f26`](https://github.com/nodejs/node/commit/fb91ee4f26)] - **(SEMVER-MAJOR)** **test**: make trace-gc-flag tests less strict (Yagiz Nizipli) [#45579](https://github.com/nodejs/node/pull/45579)
+* \[[`eca618071e`](https://github.com/nodejs/node/commit/eca618071e)] - **(SEMVER-MAJOR)** **test**: adapt test-v8-stats for V8 update (Michaël Zasso) [#45579](https://github.com/nodejs/node/pull/45579)
+* \[[`c03354d3e0`](https://github.com/nodejs/node/commit/c03354d3e0)] - **(SEMVER-MAJOR)** **test**: test case for multiple res.writeHead and res.getHeader (Marco Ippolito) [#45508](https://github.com/nodejs/node/pull/45508)
+* \[[`c733cc0c7f`](https://github.com/nodejs/node/commit/c733cc0c7f)] - **(SEMVER-MAJOR)** **test\_runner**: mark module as stable (Colin Ihrig) [#46983](https://github.com/nodejs/node/pull/46983)
+* \[[`7ce223273d`](https://github.com/nodejs/node/commit/7ce223273d)] - **(SEMVER-MAJOR)** **tools**: update V8 gypfiles for 11.1 (Michaël Zasso) [#47251](https://github.com/nodejs/node/pull/47251)
+* \[[`ca4bd3023e`](https://github.com/nodejs/node/commit/ca4bd3023e)] - **(SEMVER-MAJOR)** **tools**: update V8 gypfiles for 11.0 (Michaël Zasso) [#47251](https://github.com/nodejs/node/pull/47251)
+* \[[`58b06a269a`](https://github.com/nodejs/node/commit/58b06a269a)] - **(SEMVER-MAJOR)** **tools**: update V8 gypfiles (Michaël Zasso) [#45579](https://github.com/nodejs/node/pull/45579)
+* \[[`027841c964`](https://github.com/nodejs/node/commit/027841c964)] - **(SEMVER-MAJOR)** **url**: use private properties for brand check (Yagiz Nizipli) [#46904](https://github.com/nodejs/node/pull/46904)
+* \[[`3bed5f11e0`](https://github.com/nodejs/node/commit/3bed5f11e0)] - **(SEMVER-MAJOR)** **url**: runtime-deprecate url.parse() with invalid ports (Rich Trott) [#45526](https://github.com/nodejs/node/pull/45526)
+* \[[`7c76fddf25`](https://github.com/nodejs/node/commit/7c76fddf25)] - **(SEMVER-MAJOR)** **util,doc**: mark parseArgs() as stable (Colin Ihrig) [#46718](https://github.com/nodejs/node/pull/46718)
+
+### Semver-Minor Commits
+
+TBD
+
+### Semver-Patch Commits
+
+TBD
diff --git a/doc/changelogs/CHANGELOG_V4.md b/doc/changelogs/CHANGELOG_V4.md
index fc8dd29d53a5e2..d9c8d9193aa957 100644
--- a/doc/changelogs/CHANGELOG_V4.md
+++ b/doc/changelogs/CHANGELOG_V4.md
@@ -56,6 +56,7 @@
|