Skip to content

Update Node.js to v17

Common Ground Bot requested to merge renovate/node-17.x into master

This MR contains the following updates:

Package Type Update Change
node image major 12.22.2-alpine -> 17.3.0-alpine
node stage major 14.17.2 -> 17.3.0

Release Notes

nodejs/node

v17.3.0

Compare Source

Notable changes
OpenSSL-3.0.1

OpenSSL-3.0.1 contains a fix for CVE-2021-4044: Invalid handling of X509_verify_cert() internal errors in libssl (Moderate). This is a vulnerability in OpenSSL that may be exploited through Node.js. More information can be read here: https://www.openssl.org/news/secadv/20211214.txt.

Contributed by Richard Lau #​41177.

Other Notable Changes
  • lib:
    • make AbortSignal cloneable/transferable (James M Snell) #​41050
  • deps:
  • doc:
  • process:
    • add getActiveResourcesInfo() (Darshan Sen) #​40813
  • timers:
    • add experimental scheduler api (James M Snell) #​40909
Commits

v17.2.0

Compare Source

Notable Changes
Commits

v17.1.0

Compare Source

Notable Changes
  • [89b34ecffb] - doc: add VoltrexMaster to collaborators (voltrexmaster) #​40566
  • [95e4d29eb4] - (SEMVER-MINOR) esm: add support for JSON import assertion (Antoine du Hamel) #​40250
  • [1ddbae2d76] - (SEMVER-MINOR) lib: add unsubscribe method to non-active DC channels (simon-id) #​40433
  • [aa61551b49] - (SEMVER-MINOR) lib: add return value for DC channel.unsubscribe (simon-id) #​40433
  • [fbeb895ca6] - (SEMVER-MINOR) v8: multi-tenant promise hook api (Stephen Belanger) #​39283
Commits

v17.0.1

Compare Source

Notable Changes
Fixed distribution for native addon builds

This release fixes an issue introduced in Node.js v17.0.0, where some V8 headers were missing from the distributed tarball, making it impossible to build native addons. These headers are now included. #​40526

Fixed stream issues
  • Fixed a regression in stream.promises.pipeline, which was introduced in version 16.10.0, is fixed. It is now possible again to pass an array of streams to the function. #​40193
  • Fixed a bug in stream.Duplex.from, which didn't work properly when an async generator function was passed to it. #​40499
Commits

v17.0.0

Compare Source

Notable Changes
Deprecations and Removals
  • [f182b9b29f] - (SEMVER-MAJOR) dns: runtime deprecate type coercion of dns.lookup options (Antoine du Hamel) #​39793
  • [4b030d0573] - doc: deprecate (doc-only) http abort related (dr-js) #​36670
  • [36e2ffe6dc] - (SEMVER-MAJOR) module: subpath folder mappings EOL (Guy Bedford) #​40121
  • [64287e4d45] - (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns (Guy Bedford) #​40117
OpenSSL 3.0

Node.js now includes OpenSSL 3.0, specifically quictls/openssl which provides QUIC support. With OpenSSL 3.0 FIPS support is again available using the new FIPS module. For details about how to build Node.js with FIPS support please see BUILDING.md.

While OpenSSL 3.0 APIs should be mostly compatible with those provided by OpenSSL 1.1.1, we do anticipate some ecosystem impact due to tightened restrictions on the allowed algorithms and key sizes.

If you hit an ERR_OSSL_EVP_UNSUPPORTED error in your application with Node.js 17, it’s likely that your application or a module you’re using is attempting to use an algorithm or key size which is no longer allowed by default with OpenSSL 3.0. A command-line option, --openssl-legacy-provider, has been added to revert to the legacy provider as a temporary workaround for these tightened restrictions.

For details about all the features in OpenSSL 3.0 please see the OpenSSL 3.0 release blog.

Contributed in https://github.com/nodejs/node/pull/38512, https://github.com/nodejs/node/pull/40478

V8 9.5

The V8 JavaScript engine is updated to V8 9.5. This release comes with additional supported types for the Intl.DisplayNames API and Extended timeZoneName options in the Intl.DateTimeFormat API.

You can read more details in the V8 9.5 release post - https://v8.dev/blog/v8-release-95.

Contributed by Michaël Zasso - https://github.com/nodejs/node/pull/40178

Readline Promise API

The readline module provides an interface for reading data from a Readable stream (such as process.stdin) one line at a time.

The following simple example illustrates the basic use of the readline module:

import * as readline from 'node:readline/promises';
import { stdin as input, stdout as output } from 'process';

const rl = readline.createInterface({ input, output });

const answer = await rl.question('What do you think of Node.js? ');

console.log(`Thank you for your valuable feedback: ${answer}`);

rl.close();

Contributed by Antoine du Hamel - https://github.com/nodejs/node/pull/37947

Other Notable Changes
Semver-Major Commits
  • [9dfa30bdd5] - (SEMVER-MAJOR) build: compile with C++17 (MSVC) (Richard Lau) #​38807
  • [9f0bc602e4] - (SEMVER-MAJOR) build: compile with --gnu++17 (Richard Lau) #​38807
  • [62719c5fd2] - (SEMVER-MAJOR) deps: update V8 to 9.5.172.19 (Michaël Zasso) #​40178
  • [66da32c045] - (SEMVER-MAJOR) deps,test,src,doc,tools: update to OpenSSL 3.0 (Daniel Bevenius) #​38512
  • [40c6e838df] - (SEMVER-MAJOR) dgram: tighten address validation in socket.send (Voltrex) #​39190
  • [f182b9b29f] - (SEMVER-MAJOR) dns: runtime deprecate type coercion of dns.lookup options (Antoine du Hamel) #​39793
  • [1b2749ecbe] - (SEMVER-MAJOR) dns: default to verbatim=true in dns.lookup() (treysis) #​39987
  • [ae876d420c] - (SEMVER-MAJOR) doc: update minimum supported FreeBSD to 12.2 (Michaël Zasso) #​40179
  • [59d3d542d6] - (SEMVER-MAJOR) errors: print Node.js version on fatal exceptions that cause exit (Divlo) #​38332
  • [f9447b71a6] - (SEMVER-MAJOR) fs: fix rmsync error swallowing (Nitzan Uziely) #​38684
  • [f27b7cf95c] - (SEMVER-MAJOR) fs: aggregate errors in fsPromises to avoid error swallowing (Nitzan Uziely) #​38259
  • [d0a898681f] - (SEMVER-MAJOR) lib: add structuredClone() global (Ethan Arrowood) #​39759
  • [e4b1fb5e64] - (SEMVER-MAJOR) lib: expose DOMException as global (Khaidi Chu) #​39176
  • [36e2ffe6dc] - (SEMVER-MAJOR) module: subpath folder mappings EOL (Guy Bedford) #​40121
  • [64287e4d45] - (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns (Guy Bedford) #​40117
  • [707dd77d86] - (SEMVER-MAJOR) readline: validate AbortSignals and remove unused event listeners (Antoine du Hamel) #​37947
  • [8122d243ae] - (SEMVER-MAJOR) readline: introduce promise-based API (Antoine du Hamel) #​37947
  • [592d1c3d44] - (SEMVER-MAJOR) readline: refactor Interface to ES2015 class (Antoine du Hamel) #​37947
  • [3f619407fe] - (SEMVER-MAJOR) src: allow CAP_NET_BIND_SERVICE in SafeGetenv (Daniel Bevenius) #​37727
  • [0a7f850123] - (SEMVER-MAJOR) src: return Maybe from a couple of functions (Darshan Sen) #​39603
  • [bdaf51bae7] - (SEMVER-MAJOR) src: allow custom PageAllocator in NodePlatform (Shelley Vohr) #​38362
  • [0c6f345cda] - (SEMVER-MAJOR) stream: fix highwatermark threshold and add the missing error (Rongjian Zhang) #​38700
  • [0e841b45c2] - (SEMVER-MAJOR) stream: don't emit 'data' after 'error' or 'close' (Robert Nagy) #​39639
  • [ef992f6de9] - (SEMVER-MAJOR) stream: do not emit end on readable error (Szymon Marczak) #​39607
  • [efd40eadab] - (SEMVER-MAJOR) stream: forward errored to callback (Robert Nagy) #​39364
  • [09d8c0c8d2] - (SEMVER-MAJOR) stream: destroy readable on read error (Robert Nagy) #​39342
  • [a5dec3a470] - (SEMVER-MAJOR) stream: validate abort signal (Robert Nagy) #​39346
  • [bb275ef2a4] - (SEMVER-MAJOR) stream: unify stream utils (Robert Nagy) #​39294
  • [b2ae12d422] - (SEMVER-MAJOR) stream: throw on premature close in Readable[AsyncIterator] (Darshan Sen) #​39117
  • [0738a2b7bd] - (SEMVER-MAJOR) stream: finished should error on errored stream (Robert Nagy) #​39235
  • [954217adda] - (SEMVER-MAJOR) stream: error Duplex write/read if not writable/readable (Robert Nagy) #​34385
  • [f4609bdf3f] - (SEMVER-MAJOR) stream: bypass legacy destroy for pipeline and async iteration (Robert Nagy) #​38505
  • [e1e669b109] - (SEMVER-MAJOR) url: throw invalid this on detached accessors (James M Snell) #​39752
  • [70157b9cb7] - (SEMVER-MAJOR) url: forbid certain confusable changes from being introduced by toASCII (Timothy Gu) #​38631
Semver-Minor Commits
  • [6cd12be347] - (SEMVER-MINOR) fs: add FileHandle.prototype.readableWebStream() (James M Snell) #​39331
  • [341312d78a] - (SEMVER-MINOR) readline: add autoCommit option (Antoine du Hamel) #​37947
  • [1d2f37d970] - (SEMVER-MINOR) src: add --openssl-legacy-provider option (Daniel Bevenius) #​40478
  • [3b72788afb] - (SEMVER-MINOR) src: add flags for controlling process behavior (Cheng Zhao) #​40339
  • [8306051001] - (SEMVER-MINOR) stream: add readableDidRead (Robert Nagy) #​36820
  • [08ffbd115e] - (SEMVER-MINOR) vm: add support for import assertions in dynamic imports (Antoine du Hamel) #​40249
Semver-Patch Commits

v16.13.1

Compare Source

Notable Changes
  • [c14eb2325d] - deps: upgrade npm to 8.1.2 (npm team) #​40643
  • [a901b6c53c] - deps: update c-ares to 1.18.1 (Richard Lau) #​40660
    • This release contains a c-ares update to fix a regression introduced in Node.js v16.6.2 resolving CNAME records containing underscores (#​39780).
  • [755c08573f] - doc: add VoltrexMaster to collaborators (voltrexmaster) #​40566
  • [881dd7ba2a] - lib: fix regular expression to detect `/` and `\` (Francesco Trotta) #​40325
Commits

v16.13.0

Compare Source

Notable Changes

This release marks the transition of Node.js 16.x into Long Term Support (LTS) with the codename 'Gallium'. The 16.x release line now moves into "Active LTS" and will remain so until October 2022. After that time, it will move into "Maintenance" until end of life in April 2024.

v16.12.0

Compare Source

Notable Changes
Experimental ESM Loader Hooks API

Node.js ESM Loader hooks have been consolidated to represent the steps involved needed to facilitate future loader chaining:

  1. resolve: resolve [+ getFormat]
  2. load: getFormat + getSource + transformSource

For consistency, getGlobalPreloadCode has been renamed to globalPreload.

A loader exporting obsolete hook(s) will trigger a single deprecation warning (per loader) listing the errant hooks.

Contributed by Jacob Smith, Geoffrey Booth, and Bradley Farias - https://github.com/nodejs/node/pull/37468

Other Notable Changes
Commits

v16.11.1

Compare Source

This is a security release.

Notable changes
  • CVE-2021-22959: HTTP Request Smuggling due to spaced in headers (Medium)
    • The http parser accepts requests with a space (SP) right after the header name before the colon. This can lead to HTTP Request Smuggling (HRS). More details will be available at CVE-2021-22959 after publication.
  • CVE-2021-22960: HTTP Request Smuggling when parsing the body (Medium)
    • The parse ignores chunk extensions when parsing the body of chunked requests. This leads to HTTP Request Smuggling (HRS) under certain conditions. More details will be available at CVE-2021-22960 after publication.
Commits

v16.11.0

Compare Source

Notable Changes
  • crypto
    • update root certificates (Richard Lau) #​40280
  • deps
    • upgrade npm to 8.0.0 (npm team) #​40369
    • update nghttp2 to v1.45.1 (thunder-coding) #​40206
    • update V8 to 9.4.146.19 (Michaël Zasso) #​40285
  • tools
    • update certdata.txt (Richard Lau) #​40280
Commits

v16.10.0

Compare Source

Notable Changes
  • [fb226ff2ee] - (SEMVER-MINOR) crypto: add rsa-pss keygen parameters (Filip Skokan) #​39927
  • [85206b7311] - deps: upgrade npm to 7.24.0 (npm team) #​40167
  • [98f56d179c] - deps: update Acorn to v8.5.0 (Michaël Zasso) #​40015
  • [9655329772] - doc: add Ayase-252 to collaborators (Qingyu Deng) #​40078
  • [59fff925be] - (SEMVER-MINOR) fs: make open and close stream override optional when unused (Antoine du Hamel) #​40013
  • [a63a4bce90] - (SEMVER-MINOR) http: limit requests per connection (Artur K) #​40082
    • The maximum number of requests a socket can handle before closing keep alive connection can be set with server.maxRequestsPerSocket.
  • [9a672961fa] - (SEMVER-MINOR) src: add --no-global-search-paths cli option (Cheng Zhao) #​39754
    • Adds the --no-global-search-paths command-line option to not search modules from global paths like $HOME/.node_modules and $NODE_PATH.
  • [fe920b6cbf] - (SEMVER-MINOR) src: make napi_create_reference accept symbol (JckXia) #​39926
  • [97f3072ceb] - (SEMVER-MINOR) stream: add signal support to pipeline generators (Robert Nagy) #​39067
Commits

v16.9.1

Compare Source

Notable Changes

This release fixes a regression introduced by the V8 9.3 update in Node.js 16.9.0.

Commits

v16.9.0

Compare Source

Notable Changes
Corepack

Node.js now includes Corepack, a script that acts as a bridge between Node.js projects and the package managers they are intended to be used with during development. In practical terms, Corepack will let you use Yarn and pnpm without having to install them - just like what currently happens with npm, which is shipped in Node.js by default. Please head over to the Corepack documentation page for more information on how to use it.

Contributed by Maël Nison - #​39608

V8 9.3

V8 is updated to version 9.3, which includes performance improvements and new JavaScript features.

Object.hasOwn

Object.hasOwn is a static alias for Object.prototype.hasOwnProperty.call:

Object.hasOwn({ value: 42 }, 'value'); // Returns `true`.
Error cause

Errors can now be optionally constructed with a cause option, pointing to another error. This adds a cause property on the new error:

const error1 = new Error('Error one');
const error2 = new Error('Error two', { cause: error1 });
// error2.cause === error1

Contributed by Michaël Zasso - #​39947

Other Notable Changes
Commits

v16.8.0

Compare Source

Notable Changes
Commits

v16.7.0

Compare Source

Notable Changes
  • fs:
    • experimental: add recursive cp method (Benjamin Coe) #​39372
Commits

v16.6.2

Compare Source

This is a security release.

Notable Changes
  • CVE-2021-3672/CVE-2021-22931: Improper handling of untypical characters in domain names (High)
    • Node.js was vulnerable to Remote Code Execution, XSS, application crashes due to missing input validation of hostnames returned by Domain Name Servers in the Node.js DNS library which can lead to the output of wrong hostnames (leading to Domain Hijacking) and injection vulnerabilities in applications using the library. You can read more about it at https://nvd.nist.gov/vuln/detail/CVE-2021-22931.
  • CVE-2021-22940: Use after free on close http2 on stream canceling (High)
    • Node.js was vulnerable to a use after free attack where an attacker might be able to exploit memory corruption to change process behavior. This release includes a follow-up fix for CVE-2021-22930 as the issue was not completely resolved by the previous fix. You can read more about it at https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-22940.
  • CVE-2021-22939: Incomplete validation of rejectUnauthorized parameter (Low)
    • If the Node.js HTTPS API was used incorrectly and "undefined" was in passed for the "rejectUnauthorized" parameter, no error was returned and connections to servers with an expired certificate would have been accepted. You can read more about it at https://nvd.nist.gov/vuln/detail/CVE-2021-22939.
Commits

v16.6.1

Compare Source

Notable Changes
  • Updated npm to 7.20.3 (npm team) #​39579
  • Reverted an ABI-breaking change from V8 9.2 that could impact some native modules (Michaël Zasso) #​39624
  • Fixed a bug in error handling known to affect at least Webpack and Jest (Guy Bedford) #​39593
Commits

v16.6.0

Compare Source

This is a security release.

Notable Changes
Say hello to V8 9.2

The V8 engine is updated to version 9.2.230.21.

It notably introduces the new Array.prototype.at method (also on Typed Arrays and strings):

const array = [1, 2, 3];

console.log(array.at(-1));
// Prints: 3

Contributed by Michaël Zasso - #​39470

Other notable changes
Commits

v16.5.0

Compare Source

Notable Changes
Experimental Web Streams API

Node.js now exposes an experimental implementation of the Web Streams API.

While it is experimental, the API is not exposed on the global object and is only accessible using the new stream/web core module:

import { ReadableStream, WritableStream } from 'stream/web';
// Or from 'node:stream/web'

Importing the module will emit a single experimental warning per process.

The raw API is implemented and we are now working on its integration with various existing core APIs.

Contributed by James M Snell - #​39062

Other notable changes
Commits

v16.4.2

Compare Source

Notable Changes

Node.js 16.4.1 introduced a regression in the Windows installer on non-English locales that is being fixed in this release. There is no need to download this release if you are not using the Windows installer.

Commits

v16.4.1

Compare Source

This is a security release.

Notable Changes

Vulnerabilities fixed:

  • CVE-2021-22918: libuv upgrade - Out of bounds read (Medium)
    • Node.js is vulnerable to out-of-bounds read in libuv's uv__idna_toascii() function which is used to convert strings to ASCII. This is called by Node's dns module's lookup() function and can lead to information disclosures or crashes. You can read more about it in https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-22918
  • CVE-2021-22921: Windows installer - Node Installer Local Privilege Escalation (Medium)
    • Node.js is vulnerable to local privilege escalation attacks under certain conditions on Windows platforms. More specifically, improper configuration of permissions in the installation directory allows an attacker to perform two different escalation attacks: PATH and DLL hijacking. You can read more about it in https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-22921
Commits

v16.4.0

Compare Source

Notable changes
  • async_hooks:
    • stabilize part of AsyncLocalStorage (Vladimir de Turckheim) #​37675
  • deps:
    • upgrade npm to 7.18.1 (npm team) #​39065
    • update V8 to 9.1.269.36 (Michaël Zasso) #​38273
  • dns:
    • allow --dns-result-order to change default dns verbatim (Ouyang Yadong) #​38099
Commits

v16.3.0

Compare Source

Notable Changes
  • cli:
    • add -C alias for --conditions flag (Guy Bedford) #​38755
  • deps:
    • add workspaces support to npm install commands (Ruy Adorno) #​38750
Commits

v16.2.0

Compare Source

Notable Changes
  • [36b948560c] - (SEMVER-MINOR) async_hooks: use new v8::Context PromiseHook API (Stephen Belanger) #​36394
  • [c0deeeacb2] - lib: support setting process.env.TZ on windows (James M Snell) #​38642
  • [4c4902748c] - (SEMVER-MINOR) module: add support for URL to import.meta.resolve (Antoine du Hamel) #​38587
  • [c182198c44] - (SEMVER-MINOR) process: add 'worker' event (James M Snell) #​38659
  • [fbf02e3198] - (SEMVER-MINOR) util: add util.types.isKeyObject and util.types.isCryptoKey (Filip Skokan) #​38619
Commits

v16.1.0

Compare Source

Notable Changes
  • [8a90f55a05] - (SEMVER-MINOR) fs: allow no-params fsPromises fileHandle read (Nitzan Uziely) #​38287
Commits

v16.0.0

Compare Source

Notable Changes
Deprecations and Removals
  • (SEMVER-MAJOR) fs: remove permissive rmdir recursive (Antoine du Hamel) #​37216
  • (SEMVER-MAJOR) fs: runtime deprecate rmdir recursive option (Antoine du Hamel) #​37302
  • (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('http_parser') (James M Snell) #​37813
  • (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('url') (James M Snell) #​37799
  • (SEMVER-MAJOR) lib: make process.binding('util') return only type checkers (Anna Henningsen) #​37819
  • (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('crypto') (James M Snell) #​37790
  • (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('signal_wrap') (James M Snell) #​37800
  • (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('v8') (James M Snell) #​37789
  • (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('async_wrap') (James M Snell) #​37576
  • (SEMVER-MAJOR) module: remove module.createRequireFromPath (Antoine du Hamel) #​37201
  • (SEMVER-MAJOR) module: runtime deprecate subpath folder mappings (Antoine du Hamel) #​37215
  • (SEMVER-MAJOR) module: runtime deprecate "main" index and extension lookups (Antoine du Hamel) #​37206
  • (SEMVER-MAJOR) module: runtime deprecate invalid package.json main entries (Antoine du Hamel) #​37204
  • (SEMVER-MAJOR) process: runtime deprecate changing process.config (James M Snell) #​36902
Stable Timers Promises API

The Timers Promises API provides an alternative set of timer functions that return Promise objects. Added in Node.js v15.0.0, in this release they graduate from experimental status to stable.

Contributed by James Snell - #​38112

Toolchain and Compiler Upgrades

Node.js v16.0.0 will be the first release where we ship prebuilt binaries for Apple Silicon. While we’ll be providing separate tarballs for the Intel (darwin-x64) and ARM (darwin-arm64) architectures the macOS installer (.pkg) will be shipped as a ‘fat’ (multi-architecture) binary.

  • (SEMVER-MAJOR) build: remove support for Python 2 (Christian Clauss) #​36691
  • (SEMVER-MAJOR) build: default PYTHON to python3 in Makefile (Michaël Zasso) #​37764
  • build: update Makefile to support fat binary (Ash Cripps) #​37861
  • (SEMVER-MAJOR) build: enable ASLR (PIE) on OS X (woodfairy) #​35704
  • build: warn for gcc versions earlier than 8.3.0 (Richard Lau) #​37935
  • (SEMVER-MAJOR) doc: update minimum supported Xcode to 11 (Michaël Zasso) #​37872
  • (SEMVER-MAJOR) doc: update minimum supported GCC to 8.3 (Michaël Zasso) #​37871
  • (SEMVER-MAJOR) doc: update AIX to GCC8 for v16.x (Ash Cripps) #​37677
  • tools: set arch in Distribution.xml (Ash Cripps) #​38261
V8 9.0

The V8 JavaScript engine is updated to V8 9.0, including performance tweaks and improvements.

This update also brings the ECMAScript RegExp Match Indices, which provide the start and end indices of the captured string. The indices array is available via the .indices property on match objects when the regular expression has the /d flag.

Contributed by Michaël Zasso - #​37587

Other Notable Changes
  • (SEMVER-MINOR) assert: graduate assert.match and assert.doesNotMatch (James M Snell) #​38111
  • (SEMVER-MAJOR) buffer: expose btoa and atob as globals (James M Snell) #​37786
  • (SEMVER-MAJOR) deps: bump minimum ICU version to 68 (Michaël Zasso) #​37330
  • deps: update ICU to 69.1 (Michaël Zasso) #​38178
  • deps: update llhttp to 6.0.0 (Fedor Indutny) #​38277
  • deps: upgrade npm to 7.10.0 (Ruy Adorno) #​38254
  • (SEMVER-MINOR) http: add http.ClientRequest.getRawHeaderNames() (simov) #​37660
  • (SEMVER-MAJOR) lib,src: update cluster to use Parent (Michael Dawson) #​36478
  • (SEMVER-MINOR) module: add support for node:‑prefixed require(…) calls (ExE Boss) #​37246
  • (SEMVER-MINOR) perf_hooks: add histogram option to timerify (James M Snell) #​37475
  • (SEMVER-MINOR) repl: add auto‑completion for node:‑prefixed require(…) calls (ExE Boss) #​37246
  • (SEMVER-MINOR) util: add getSystemErrorMap() impl (eladkeyshawn) #​38101
Semver-Major Commits
  • [324a6c235a] - (SEMVER-MAJOR) async_hooks: add thisArg to AsyncResource.bind (James M Snell) #​36782
  • [d1e2184c8e] - (SEMVER-MAJOR) buffer: expose btoa and atob as globals (James M Snell) #​37786
  • [4268fae04a] - (SEMVER-MAJOR) build: remove support for Python 2 (Christian Clauss) #​36691
  • [c3a5e15ebe] - (SEMVER-MAJOR) build: default PYTHON to python3 in Makefile (Michaël Zasso) #​37764
  • [1d8c022544] - (SEMVER-MAJOR) build: update Makefile to support fat binary (Ash Cripps) #​37861
  • [38f32386c1] - (SEMVER-MAJOR) build: include minimal V8 headers in distribution (Michaël Zasso) #​37570
  • [a19af5ee71] - (SEMVER-MAJOR) build: use C++11 ABI with libstdc++ (Anna Henningsen) #​36634
  • [8d6b74d347] - (SEMVER-MAJOR) build: enable ASLR (PIE) on OS X (woodfairy) #​35704
  • [732ad99e47] - (SEMVER-MAJOR) deps: update V8 to 9.0.257.11 (Michaël Zasso) #​37587
  • [43cc8e4b2e] - (SEMVER-MAJOR) deps: bump minimum ICU version to 68 (Michaël Zasso) #​37330
  • [c5ff019a4e] - (SEMVER-MAJOR) deps: update V8 to 8.9.255.19 (Michaël Zasso) #​37330
  • [c7b3292251] - (SEMVER-MAJOR) deps: update V8 to 8.8.278.17 (Michaël Zasso) #​36139
  • [48db20f6f5] - (SEMVER-MAJOR) deps: update V8 to 8.7.220 (Michaël Zasso) #​35700
  • [d85e1f0703] - (SEMVER-MAJOR) dns: use url module instead of punycode for IDNA (Antoine du Hamel) #​35091
  • [290c158018] - (SEMVER-MAJOR) doc: update minimum supported Xcode to 11 (Michaël Zasso) #​37872
  • [1ff2918d80] - (SEMVER-MAJOR) doc: update minimum supported GCC to 8.3 (Michaël Zasso) #​37871
  • [2706e67116] - (SEMVER-MAJOR) doc: update AIX to GCC8 for v16.x (Ash Cripps) #​37677
  • [5ae5ca90ef] - (SEMVER-MAJOR) doc: add http.IncomingMessage#connection (Pranshu Srivastava) #​33768
  • [83d6e63aee] - (SEMVER-MAJOR) events: change EventTarget handler exception behavior (Nitzan Uziely) #​37237
  • [9948036ee0] - (SEMVER-MAJOR) fs: remove permissive rmdir recursive (Antoine du Hamel) #​37216
  • [d4693ff430] - (SEMVER-MAJOR) fs: add validation for fd and path (Dylan Elliott) #​35187
  • [0ddd75bcd8] - (SEMVER-MAJOR) fs: runtime deprecate rmdir recursive option (Antoine du Hamel) #​37302
  • [da217d0773] - (SEMVER-MAJOR) fs: fix flag and mode validation (James M Snell) #​37480
  • [2ef9a76ece] - (SEMVER-MAJOR) http: use objects with null prototype in Agent (Michaël Zasso) #​36409
  • [25e30005b8] - (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('http_parser') (James M Snell) #​37813
  • [8bb4e048af] - (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('url') (James M Snell) #​37799
  • [fe73e4d578] - (SEMVER-MAJOR) lib: make process.binding('util') return only type checkers (Anna Henningsen) #​37819
  • [3bee6d8aad] - (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('crypto') (James M Snell) #​37790
  • [ac00df112e] - (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('signal_wrap') (James M Snell) #​37800
  • [ae595d76e3] - (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('v8') (James M Snell) #​37789
  • [104dac79cc] - (SEMVER-MAJOR) lib: aggregate errors to avoid error swallowing (Antoine du Hamel) #​37460
  • [1468c9ff7c] - (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('async_wrap') (James M Snell) #​37576
  • [295e766c27] - (SEMVER-MAJOR) lib: remove usage of url.parse (raisinten) #​36853
  • [cb3020d824] - (SEMVER-MAJOR) lib: add error handling for input stream (rexagod) #​31603
  • [15164cebce] - (SEMVER-MAJOR) lib,src: update cluster to use Parent (Michael Dawson) #​36478
  • [3cc9aec988] - (SEMVER-MAJOR) module: runtime deprecate subpath folder mappings (Antoine du Hamel) #​37215
  • [9fab73c73b] - (SEMVER-MAJOR) module: runtime deprecate "main" index and extension lookups (Antoine du Hamel) #​37206
  • [76a073b67e] - (SEMVER-MAJOR) module: runtime deprecate invalid package.json main entries (Antoine du Hamel) #​37204
  • [674614b3f5] - (SEMVER-MAJOR) module: remove module.createRequireFromPath (Antoine du Hamel) #​37201
  • [aecd5ebf49] - (SEMVER-MAJOR) module: only set cache when finding module succeeds (Yongsheng Zhang) #​36642
  • [f0bf373176] - (SEMVER-MAJOR) perf_hooks: make performance a global (James M Snell) #​37970
  • [f3eb224c83] - (SEMVER-MAJOR) perf_hooks: complete overhaul of the implementation (James M Snell) #​37136
  • [f1753d4c76] - (SEMVER-MAJOR) process: disallow adding options to process.allowedNodeEnvironmentFlags (Antoine du Hamel) #​36660
  • [96f3977ded] - (SEMVER-MAJOR) process: runtime deprecate changing process.config (James M Snell) #​36902
  • [45dbcbef90] - (SEMVER-MAJOR) readline: cursorTo throw error on NaN (Zijian Liu) #​36379
  • [bf79987433] - (SEMVER-MAJOR) src: mark internally exported functions as explicitly internal (Tyler Ang-Wanek) #​37000
  • [1fe571aa0c] - (SEMVER-MAJOR) src: inline AsyncCleanupHookHandle in headers (Tyler Ang-Wanek) #​37000
  • [dfc288e7fd] - (SEMVER-MAJOR) src: clean up embedder API (Anna Henningsen) #​35897
  • [65e8864fa3] - (SEMVER-MAJOR) worker: send correct error status for worker init (Yash Ladha) #​36242
Semver-Minor Commits
  • [944a956087] - (SEMVER-MINOR) assert: graduate assert.match and assert.doesNotMatch (James M Snell) #​38111
  • [6a1986d50a] - (SEMVER-MINOR) deps: update llhttp to 5.1.0 (Fedor Indutny) #​38146
  • [069b5df4f6] - (SEMVER-MINOR) module: add support for node:‑prefixed require(…) calls (ExE Boss) #​37246
  • [b803bca4fa] - (SEMVER-MINOR) perf_hooks: add histogram option to timerify (James M Snell) #​37475
  • [95391fe689] - (SEMVER-MINOR) repl: add auto‑completion for node:‑prefixed require(…) calls (ExE Boss) #​37246
  • [15b8e6b1c4] - (SEMVER-MINOR) timers: graduate awaitable timers and improve docs (James M Snell) #​38112
  • [802171057f] - (SEMVER-MINOR) util: add getSystemErrorMap() impl (eladkeyshawn) #​38101
Semver-Patch Commits

v15.14.0

Compare Source

This is a security release.

Notable Changes

Vulnerabilties Fixed:

  • CVE-2021-3450: OpenSSL - CA certificate check bypass with X509_V_FLAG_X509_STRICT (High)
  • CVE-2021-3449: OpenSSL - NULL pointer deref in signature_algorithms processing (High)
  • CVE-2020-7774: npm upgrade - Update y18n to fix Prototype-Pollution (High)

Other Notable Changes:

  • [b6f4901221] - (SEMVER-MINOR) fs: add support for async iterators to fsPromises.writeFile (HiroyukiYagihashi) #​37490
  • [0709cbb7fe] - (SEMVER-MINOR) net: allow net.BlockList to use net.SocketAddress objects (James M Snell) #​37917
  • [daa8a7bbcf] - (SEMVER-MINOR) net: add SocketAddress class (James M Snell) #​37917
  • [a4169ce519] - (SEMVER-MINOR) net: make net.BlockList cloneable (James M Snell) #​37917
  • [669b81c68b] - (SEMVER-MINOR) net,tls: add abort signal support to connect (Nitzan Uziely) #​37735
  • [a1123f0a29] - (SEMVER-MINOR) readline: add AbortSignal support to interface (Nitzan Uziely) #​37932
Commits

v15.13.0

Compare Source

Notable Changes
  • buffer:
    • implement btoa and atob (James M Snell) #​37529
  • deps:
  • doc:
  • http:
    • add http.ClientRequest.getRawHeaderNames() (simov) #​37660
Commits

v15.12.0

Compare Source

Notable Changes
  • crypto:
    • add optional callback to crypto.sign and crypto.verify (Filip Skokan) #​37500
    • support JWK objects in create*Key (Filip Skokan) #​37254
  • deps:
    • switch openssl to quictls/openssl (James M Snell) #​37601
    • update to cjs-module-lexer@1.1.0 (Guy Bedford) #​37712
  • fs:
    • improve fsPromises writeFile performance (Nitzan Uziely) #​37610
    • improve fsPromises readFile performance (Nitzan Uziely) #​37608
  • lib:
    • implement AbortSignal.abort() (James M Snell) #​37693
  • node-api:
    • define version 8 (Gabriel Schulhof) #​37652
  • worker:
    • add setEnvironmentData/getEnvironmentData (James M Snell) #​37486
Commits

v15.11.0

Compare Source

Notable Changes
  • [a3e3156b52] - (SEMVER-MINOR) crypto: make FIPS related options always awailable (Vít Ondruch) #​36341
  • [9ba5c0f9ba] - (SEMVER-MINOR) errors: remove experimental from --enable-source-maps (Benjamin Coe) #​37362
Commits

v15.10.0

Compare Source

This is a security release.

Notable changes

Vulnerabilities fixed:

  • CVE-2021-22883: HTTP2 'unknownProtocol' cause Denial of Service by resource exhaustion
    • Affected Node.js versions are vulnerable to denial of service attacks when too many connection attempts with an 'unknownProtocol' are established. This leads to a leak of file descriptors. If a file descriptor limit is configured on the system, then the server is unable to accept new connections and prevent the process also from opening, e.g. a file. If no file descriptor limit is configured, then this lead to an excessive memory usage and cause the system to run out of memory.
  • CVE-2021-22884: DNS rebinding in --inspect
    • Affected Node.js versions are vulnerable to denial of service attacks when the whitelist includes “localhost6”. When “localhost6” is not present in /etc/hosts, it is just an ordinary domain that is resolved via DNS, i.e., over network. If the attacker controls the victim's DNS server or can spoof its responses, the DNS rebinding protection can be bypassed by using the “localhost6” domain. As long as the attacker uses the “localhost6” domain, they can still apply the attack described in CVE-2018-7160.
  • CVE-2021-23840: OpenSSL - Integer overflow in CipherUpdate
Commits

v15.9.0

Compare Source

Notable Changes
  • crypto:
    • add keyObject.export() 'jwk' format option (Filip Skokan) #​37081
  • deps:
    • upgrade to libuv 1.41.0 (Colin Ihrig) #​37360
  • doc:
    • add dmabupt to collaborators (Xu Meng) #​37377
    • refactor fs docs structure (James M Snell) #​37170
  • fs:
    • add fsPromises.watch() (James M Snell) #​37179
    • use a default callback for fs.close() (James M Snell) #​37174
    • add AbortSignal support to watch (Benjamin Gruenbaum) #​37190
  • perf_hooks:
    • introduce createHistogram (James M Snell) #​37155
  • stream:
    • improve Readable.from error handling (Benjamin Gruenbaum) #​37158
  • timers:
    • introduce setInterval async iterator (linkgoron) #​37153
  • tls:
    • add ability to get cert/peer cert as X509Certificate object (James M Snell) #​37070
Commits

v15.8.0

Compare Source

Notable Changes
Commits

v15.7.0

Compare Source

Notable changes
Commits

v15.6.0

Compare Source

Notable Changes
  • child_process:
    • add 'overlapped' stdio flag (Thiago Padilha) #​29412
    • support AbortSignal in fork (Benjamin Gruenbaum) #​36603
  • crypto:
    • implement basic secure heap support (James M Snell) #​36779
    • fixup bug in keygen error handling (James M Snell) #​36779
    • introduce X509Certificate API (James M Snell) #​36804
    • implement randomuuid (James M Snell) #​36729
  • doc:
    • update release key for Danielle Adams (Danielle Adams) #​36793
    • add dnlup to collaborators (Daniele Belardi) #​36849
    • add panva to collaborators (Filip Skokan) #​36802
    • add yashLadha to collaborator (Yash Ladha) #​36666
  • http:
    • set lifo as the default scheduling strategy in Agent (Matteo Collina) #​36685
  • net:
    • support abortSignal in server.listen (Nitzan Uziely) #​36623
  • process:
    • add direct access to rss without iterating pages (Adrien Maret) #​34291
  • v8:
    • fix native serdes constructors (ExE Boss) #​36549
Commits

v15.5.1

Compare Source

This is a security release.

Notable changes

Vulnerabilities fixed:

  • CVE-2020-8265: use-after-free in TLSWrap (High)

    • Affected Node.js versions are vulnerable to a use-after-free bug in its TLS implementation. When writing to a TLS enabled socket, node::StreamBase::Write calls node::TLSWrap::DoWrite with a freshly allocated WriteWrap object as first argument. If the DoWrite method does not return an error, this object is passed back to the caller as part of a StreamWriteResult structure. This may be exploited to corrupt memory leading to a Denial of Service or potentially other exploits.
  • CVE-2020-8287: HTTP Request Smuggling in nodejs (Low)

    • Affected versions of Node.js allow two copies of a header field in a http request. For example, two Transfer-Encoding header fields. In this case Node.js identifies the first header field and ignores the second. This can lead to HTTP Request Smuggling (https://cwe.mitre.org/data/definitions/444.html).
Commits

v15.5.0

Compare Source

Notable Changes
Extended support for AbortSignal in child_process and stream

The following APIs now support an AbortSignal in their options object:

  • child_process.spawn()

Calling .abort() on the corresponding AbortController is similar to calling .kill() on the child process except the error passed to the callback will be an AbortError:

const controller = new AbortController();
const { signal } = controller;
const grep = spawn('grep', ['ssh'], { signal });
grep.on('error', (err) => {
  // This will be called with err being an AbortError if the controller aborts
});
controller.abort(); // stops the process
  • new stream.Writable() and new stream.Readable()

Calling .abort() on the corresponding AbortController will behave the same way as calling .destroy(new AbortError()) on the stream:

const { Readable } = require('stream');
const controller = new AbortController();
const read = new Readable({
  read(size) {
    // ...
  },
  signal: controller.signal
});
// Later, abort the operation closing the stream
controller.abort();

Contributed by Benjamin Gruenbaum #​36431, #​36432.

BigInt support in querystring.stringify()

If querystring.stringify() is called with an object that contains BigInt values, they will now be serialized to their decimal representation instead of the empty string:

const querystring = require('querystring');
console.log(querystring.stringify({ bigint: 2n ** 64n }));
// Prints: bigint=18446744073709551616

Contributed by Darshan Sen #​36499.

Additions to the C++ embedder APIs

A new IsolateSettingsFlag is available for those calling SetIsolateUpForNode(): SHOULD_NOT_SET_MREPARE_STACK_TRACE_CALLBACK can be used to prevent Node.js from setting a custom callback to prepare stack traces.

Contributed by Shelley Vohr #​36447.


Added node::GetEnvironmentIsolateData() and node::GetArrayBufferAllocator() to respectively get the current IsolateData* and, from it, the current Node.js ArrayBufferAllocator if there is one.

Contributed by Anna Henningsen #​36441.

New core collaborator

With this release, we welcome a new Node.js core collaborator:

Commits
Semver-minor commits
  • [e449571230] - (SEMVER-MINOR) child_process: add signal support to spawn (Benjamin Gruenbaum) #​36432
  • [25d7e90386] - (SEMVER-MINOR) http: use autoDestroy: true in incoming message (Daniele Belardi) #​33035
  • [5481be8cbd] - (SEMVER-MINOR) lib: support BigInt in querystring.stringify (raisinten) #​36499
  • [036ed1fafc] - (SEMVER-MINOR) src: add way to get IsolateData and allocator from Environment (Anna Henningsen) #​36441
  • [e23309486b] - (SEMVER-MINOR) src: allow preventing SetPrepareStackTraceCallback (Shelley Vohr) #​36447
  • [6ecbc1dcb3] - (SEMVER-MINOR) stream: support abortsignal in constructor (Benjamin Gruenbaum) #​36431
Semver-patch commits
Documentation commits
Other commits

v15.4.0

Compare Source

Notable Changes
  • child_processes:
    • add AbortSignal support (Benjamin Gruenbaum) #​36308
  • deps:
    • update ICU to 68.1 (Michaël Zasso) #​36187
  • events:
    • support signal in EventTarget (Benjamin Gruenbaum) #​36258
    • graduate Event, EventTarget, AbortController (James M Snell) #​35949
  • http:
    • enable call chaining with setHeader() (pooja d.p) #​35924
  • module:
    • add isPreloading indicator (James M Snell) #​36263
  • stream:
    • support abort signal (Benjamin Gruenbaum) #​36061
    • add FileHandle support to Read/WriteStream (Momtchil Momtchev) #​35922
  • worker:
    • add experimental BroadcastChannel (James M Snell) #​36271
Commits

v15.3.0

Compare Source

Notable Changes
  • [6349b1d673] - (SEMVER-MINOR) dns: add a cancel() method to the promise Resolver (Szymon Marczak) #​33099
  • [9ce9b016e6] - (SEMVER-MINOR) events: add max listener warning for EventTarget (James M Snell) #​36001
  • [8390f8a86b] - (SEMVER-MINOR) http: add support for abortsignal to http.request (Benjamin Gruenbaum) #​36048
  • [9c6be3cc90] - (SEMVER-MINOR) http2: allow setting the local window size of a session (Yongsheng Zhang) #​35978
  • [15ff155c12] - (SEMVER-MINOR) lib: add throws option to fs.f/l/statSync (Andrew Casey) #​33716
  • [85c85d368a] - (SEMVER-MINOR) path: add path/posix and path/win32 alias modules (ExE Boss) #​34962
  • [d1baae3640] - (SEMVER-MINOR) readline: add getPrompt to get the current prompt (Mattias Runge-Broberg) #​33675
  • [5729478509] - (SEMVER-MINOR) src: add loop idle time in diagnostic report (Gireesh Punathil) #​35940
  • [baa87c1a7d] - (SEMVER-MINOR) util: add util/types alias module (ExE Boss) #​34055
Commits

v15.2.1

Compare Source

Notable changes

This is a security release.

Vulnerabilities fixed:

  • CVE-2020-8277: Denial of Service through DNS request (High). A Node.js application that allows an attacker to trigger a DNS request for a host of their choice could trigger a Denial of service by getting the application to resolve a DNS record with a larger number of responses.
Commits

v15.2.0

Compare Source

Notable changes
  • events:
    • getEventListeners static (Benjamin Gruenbaum) #​35991
  • fs:
    • support abortsignal in writeFile (Benjamin Gruenbaum) #​35993
    • add support for AbortSignal in readFile (Benjamin Gruenbaum) #​35911
  • stream:
    • fix thrown object reference (Gil Pedersen) #​36065
Commits

v15.1.0

Compare Source

Notable Changes
Diagnostics channel (experimental module)

diagnostics_channel is a new experimental module that provides an API to create named channels to report arbitrary message data for diagnostics purposes.

With diagnostics_channel, Node.js core and module authors can publish contextual data about what they are doing at a given time. This could be the hostname and query string of a mysql query, for example. Just create a named channel with dc.channel(name) and call channel.publish(data) to send the data to any listeners to that channel.

const dc = require('diagnostics_channel');
const channel = dc.channel('mysql.query');

MySQL.prototype.query = function query(queryString, values, callback) {
  // Broadcast query information whenever a query is made
  channel.publish({
    query: queryString,
    host: this.hostname,
  });

  this.doQuery(queryString, values, callback);
};

Channels are like one big global event emitter but are split into separate objects to ensure they get the best performance. If nothing is listening to the channel, the publishing overhead should be as close to zero as possible. Consuming channel data is as easy as using channel.subscribe(listener) to run a function whenever a message is published to that channel.

const dc = require('diagnostics_channel');
const channel = dc.channel('mysql.query');

channel.subscribe(({ query, host }) => {
  console.log(`mysql query to ${host}: ${query}`);
});

The data captured can be used to provide context for what an app is doing at a given time. This can be used for things like augmenting tracing data, tracking network and filesystem activity, logging queries, and many other things. It's also a very useful data source for diagnostics tools to provide a clearer picture of exactly what the application is doing at a given point in the data they are presenting.

Contributed by Stephen Belanger #​34895.

New child process 'spawn' event

Instances of ChildProcess now emit a new 'spawn' event once the child process has spawned successfully.

If emitted, the 'spawn' event comes before all other events and before any data is received via stdout or stderr.

The 'spawn' event will fire regardless of whether an error occurs within the spawned process. For example, if bash some-command spawns successfully, the 'spawn' event will fire, though bash may fail to spawn some-command. This caveat also applies when using { shell: true }.

Contributed by Matthew Francis Brunetti #​35369.

Set the local address for DNS resolution

It is now possible to set the local IP address used by a Resolver instance to send its requests. This allows programs to specify outbound interfaces when used on multi-homed systems.

The resolver will use the v4 local address when making requests to IPv4 DNS servers, and the v6 local address when making requests to IPv6 DNS servers.

const { Resolver } = require('dns');

const resolver = new Resolver();

resolver.setLocalAddress('10.1.2.3');
// Equivalent to: resolver.setLocalAddress('10.1.2.3', '::0');

Contributed by Josh Dague #​34824.

Control V8 coverage at runtime

The v8 module includes two new methods to control the V8 coverage started by the NODE_V8_COVERAGE environment variable.

With v8.takeCoverage(), it is possible to write a coverage report to disk on demand. This can be done multiple times during the lifetime of the process, and the execution counter will be reset on each call. When the process is about to exit, one last coverage will still be written to disk, unless v8.stopCoverage() was invoked before.

The v8.stopCoverage() method allows to stop the coverage collection, so that V8 can release the execution counters and optimize code.

Contributed by Joyee Cheung #​33807.

Analyze Worker's event loop utilization

Worker instances now have a performance property, with a single eventLoopUtilization method that can be used to gather information about the worker's event loop utilization between the 'online' and 'exit' events.

The method works the same way as perf_hooks eventLoopUtilization().

Contributed by Trevor Norris #​35664.

Take a V8 heap snapshot just before running out of memory (experimental)

With the new --heapsnapshot-near-heap-limit=max_count experimental command line flag, it is now possible to automatically generate a heap snapshot when the V8 heap usage is approaching the heap limit. count should be a non-negative integer (in which case Node.js will write no more than max_count snapshots to disk).

When generating snapshots, garbage collection may be triggered and bring the heap usage down, therefore multiple snapshots may be written to disk before the Node.js instance finally runs out of memory. These heap snapshots can be compared to determine what objects are being allocated during the time consecutive snapshots are taken.

Generating V8 snapshots takes time and memory (both memory managed by the V8 heap and native memory outside the V8 heap). The bigger the heap is, the more resources it needs. Node.js will adjust the V8 heap to accommondate the additional V8 heap memory overhead, and try its best to avoid using up all the memory avialable to the process.

$ node --max-old-space-size=100 --heapsnapshot-near-heap-limit=3 index.js
Wrote snapshot to Heap.20200430.100036.49580.0.001.heapsnapshot
Wrote snapshot to Heap.20200430.100037.49580.0.002.heapsnapshot
Wrote snapshot to Heap.20200430.100038.49580.0.003.heapsnapshot

<--- Last few GCs --->

[49580:0x110000000]     4826 ms: Mark-sweep 130.6 (147.8) -> 130.5 (147.8) MB, 27.4 / 0.0 ms  (average mu = 0.126, current mu = 0.034) allocation failure scavenge might not succeed
[49580:0x110000000]     4845 ms: Mark-sweep 130.6 (147.8) -> 130.6 (147.8) MB, 18.8 / 0.0 ms  (average mu = 0.088, current mu = 0.031) allocation failure scavenge might not succeed

<--- JS stacktrace --->

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
....

Contributed by Joyee Cheung #​33010.

Commits
Semver-minor commits
  • [8169902b40] - (SEMVER-MINOR) child_process: add ChildProcess 'spawn' event (Matthew Francis Brunetti) #​35369
  • [548f91af2c] - (SEMVER-MINOR) dns: add setLocalAddress to Resolver (Josh Dague) #​34824
  • [f861733bac] - (SEMVER-MINOR) http: report request start and end with diagnostics_channel (Stephen Belanger) #​34895
  • [883ed4b7f1] - (SEMVER-MINOR) http2: add updateSettings to both http2 servers (Vincent Boivin) #​35383
  • [b38a43d5d9] - (SEMVER-MINOR) lib: create diagnostics_channel module (Stephen Belanger) #​34895
  • [a7f37bc725] - (SEMVER-MINOR) src: add --heapsnapshot-near-heap-limit option (Joyee Cheung) #​33010
  • [7bfa872013] - (SEMVER-MINOR) v8: implement v8.stopCoverage() (Joyee Cheung) #​33807
  • [15ffed5319] - (SEMVER-MINOR) v8: implement v8.takeCoverage() (Joyee Cheung) #​33807
  • [221e28311f] - (SEMVER-MINOR) worker: add eventLoopUtilization() (Trevor Norris) #​35664
Semver-patch commits
Documentation commits
Other commits

v15.0.1

Compare Source

Notable changes
Commits

v15.0.0

Compare Source

Notable Changes
Deprecations and Removals
  • [a11788736a] - (SEMVER-MAJOR) build: remove --build-v8-with-gn configure option (Yang Guo) #​27576
  • [89428c7a2d] - (SEMVER-MAJOR) build: drop support for VS2017 (Michaël Zasso) #​33694
  • [c25cf34ac1] - (SEMVER-MAJOR) doc: move DEP0018 to End-of-Life (Rich Trott) #​35316
  • [2002d90abd] - (SEMVER-MAJOR) fs: deprecation warning on recursive rmdir (Ian Sutherland) #​35562
  • [eee522ac29] - (SEMVER-MAJOR) lib: add EventTarget-related browser globals (Anna Henningsen) #​35496
  • [41796ebd30] - (SEMVER-MAJOR) net: remove long deprecated server.connections property (James M Snell) #​33647
  • [a416692e93] - (SEMVER-MAJOR) repl: remove deprecated repl.memory function (Ruben Bridgewater) #​33286
  • [f217b2dfb0] - (SEMVER-MAJOR) repl: remove deprecated repl.turnOffEditorMode() function (Ruben Bridgewater) #​33286
  • [a1bcad8dc0] - (SEMVER-MAJOR) repl: remove deprecated repl.parseREPLKeyword() function (Ruben Bridgewater) #​33286
  • [4ace010b53] - (SEMVER-MAJOR) repl: remove deprecated bufferedCommand property (Ruben Bridgewater) #​33286
  • [37524307fe] - (SEMVER-MAJOR) repl: remove deprecated .rli (Ruben Bridgewater) #​33286
  • [a85ce885bd] - (SEMVER-MAJOR) src: remove deprecated node debug command (James M Snell) #​33648
  • [a8904e8eee] - (SEMVER-MAJOR) timers: introduce timers/promises (James M Snell) #​33950
  • [1211b9a72f] - (SEMVER-MAJOR) util: change default value of maxStringLength to 10000 (unknown) #​32744
  • [ca8f3ef2e5] - (SEMVER-MAJOR) wasi: drop --experimental-wasm-bigint requirement (Colin Ihrig) #​35415
npm 7 - #​35631

Node.js 15 comes with a new major release of npm, npm 7. npm 7 comes with many new features - including npm workspaces and a new package-lock.json format. npm 7 also includes yarn.lock file support. One of the big changes in npm 7 is that peer dependencies are now installed by default.

Throw On Unhandled Rejections - #​33021

As of Node.js 15, the default mode for unhandledRejection is changed to throw (from warn). In throw mode, if an unhandledRejection hook is not set, the unhandledRejection is raised as an uncaught exception. Users that have an unhandledRejection hook should see no change in behavior, and it’s still possible to switch modes using the --unhandled-rejections=mode process flag.

QUIC - #​32379

Node.js 15 comes with experimental support QUIC, which can be enabled by compiling Node.js with the --experimental-quic configuration flag. The Node.js QUIC implementation is exposed by the core net module.

V8 8.6 - #​35415

The V8 JavaScript engine has been updated to V8 8.6 (V8 8.4 is the latest available in Node.js 14). Along with performance tweaks and improvements the V8 update also brings the following language features:

  • Promise.any() (from V8 8.5)
  • AggregateError (from V8 8.5)
  • String.prototype.replaceAll() (from V8 8.5)
  • Logical assignment operators &&=, ||=, and ??= (from V8 8.5)
Other Notable Changes
  • [50228cf6ff] - (SEMVER-MAJOR) assert: add assert/strict alias module (ExE Boss) #​34001
  • [039cd00a9a] - (SEMVER-MAJOR) dns: add dns/promises alias (shisama) #​32953
  • [54b36e401d] - (SEMVER-MAJOR) fs: reimplement read and write streams using stream.construct (Robert Nagy) #​29656
  • [f5c0e282cc] - (SEMVER-MAJOR) http2: allow Host in HTTP/2 requests (Alba Mendez) #​34664
  • [eee522ac29] - (SEMVER-MAJOR) lib: add EventTarget-related browser globals (Anna Henningsen) #​35496
  • [a8b26d72c5] - (SEMVER-MAJOR) lib: unflag AbortController (James M Snell) #​33527
  • [74ca960aac] - (SEMVER-MAJOR) lib: initial experimental AbortController implementation (James M Snell) #​33527
  • [efefdd668d] - (SEMVER-MAJOR) net: autoDestroy Socket (Robert Nagy) #​31806
  • [0fb91acedf] - (SEMVER-MAJOR) src: disallow JS execution inside FreeEnvironment (Anna Henningsen) #​33874
  • [21782277c2] - (SEMVER-MAJOR) src: use node:moduleName as builtin module filename (Michaël Zasso) #​35498
  • [fb8cc72e73] - (SEMVER-MAJOR) stream: construct (Robert Nagy) #​29656
  • [705d888387] - (SEMVER-MAJOR) worker: make MessageEvent class more Web-compatible (Anna Henningsen) #​35496
Semver-Major Commits
  • [50228cf6ff] - (SEMVER-MAJOR) assert: add assert/strict alias module (ExE Boss) #​34001
  • [d701247165] - (SEMVER-MAJOR) build: reset embedder string to "-node.0" (Michaël Zasso) #​35415
  • [a11788736a] - (SEMVER-MAJOR) build: remove --build-v8-with-gn configure option (Yang Guo) #​27576
  • [89428c7a2d] - (SEMVER-MAJOR) build: drop support for VS2017 (Michaël Zasso) #​33694
  • [dae283d96f] - (SEMVER-MAJOR) crypto: refactoring internals, add WebCrypto (James M Snell) #​35093
  • [ba77dc8597] - (SEMVER-MAJOR) crypto: move node_crypto files to src/crypto (James M Snell) #​35093
  • [9378070da0] - (SEMVER-MAJOR) deps: V8: cherry-pick d76abfe (Michaël Zasso) #​35415
  • [efee8341ad] - (SEMVER-MAJOR) deps: V8: cherry-pick 717543b (Michaël Zasso) #​35415
  • [b006fa8730] - (SEMVER-MAJOR) deps: V8: cherry-pick 6be2f6e (Michaël Zasso) #​35415
  • [3c23af4cb7] - (SEMVER-MAJOR) deps: fix V8 build issue with inline methods (Jiawen Geng) #​35415
  • [b803b3f48b] - (SEMVER-MAJOR) deps: fix platform-embedded-file-writer-win for ARM64 (Michaël Zasso) #​35415
  • [47cb9f14e8] - (SEMVER-MAJOR) deps: update V8 postmortem metadata script (Colin Ihrig) #​35415
  • [a1d639ba5d] - (SEMVER-MAJOR) deps: update V8 to 8.6.395 (Michaël Zasso) #​35415
  • [3ddcad55fb] - (SEMVER-MAJOR) deps: upgrade npm to 7.0.0 (Myles Borins) #​35631
  • [2e54524955] - (SEMVER-MAJOR) deps: update npm to 7.0.0-rc.3 (Myles Borins) #​35474
  • [e983b1cece] - (SEMVER-MAJOR) deps: V8: cherry-pick 0d6debc (Gus Caplan) #​33600
  • [039cd00a9a] - (SEMVER-MAJOR) dns: add dns/promises alias (shisama) #​32953
  • [c25cf34ac1] - (SEMVER-MAJOR) doc: move DEP0018 to End-of-Life (Rich Trott) #​35316
  • [8bf37ee496] - (SEMVER-MAJOR) doc: update support macos version for 15.x (Ash Cripps) #​35022
  • [2002d90abd] - (SEMVER-MAJOR) fs: deprecation warning on recursive rmdir (Ian Sutherland) #​35562
  • [54b36e401d] - (SEMVER-MAJOR) fs: reimplement read and write streams using stream.construct (Robert Nagy) #​29656
  • [32b641e528] - (SEMVER-MAJOR) http: fixed socket.setEncoding fatal error (iskore) #​33405
  • [8a6fab02ad] - (SEMVER-MAJOR) http: emit 'error' on aborted server request (Robert Nagy) #​33172
  • [d005f490a8] - (SEMVER-MAJOR) http: cleanup end argument handling (Robert Nagy) #​31818
  • [f5c0e282cc] - (SEMVER-MAJOR) http2: allow Host in HTTP/2 requests (Alba Mendez) #​34664
  • [1e4187fcf4] - (SEMVER-MAJOR) http2: add invalidheaders test (Pranshu Srivastava) #​33161
  • [d79c330186] - (SEMVER-MAJOR) http2: refactor state code validation for the http2Stream class (rickyes) #​33535
  • [df31f71f1e] - (SEMVER-MAJOR) http2: header field valid checks (Pranshu Srivastava) #​33193
  • [1428db8a1f] - (SEMVER-MAJOR) lib: refactor Socket._getpeername and Socket._getsockname (himself65) #​32969
  • [eee522ac29] - (SEMVER-MAJOR) lib: add EventTarget-related browser globals (Anna Henningsen) #​35496
  • [c66e6471e7] - (SEMVER-MAJOR) lib: remove ERR_INVALID_OPT_VALUE and ERR_INVALID_OPT_VALUE_ENCODING (Denys Otrishko) #​34682
  • [b546a2b469] - (SEMVER-MAJOR) lib: handle one of args case in ERR_MISSING_ARGS (Denys Otrishko) #​34022
  • [a86a295fd7] - (SEMVER-MAJOR) lib: remove NodeError from the prototype of errors with code (Michaël Zasso) #​33857
  • [a8b26d72c5] - (SEMVER-MAJOR) lib: unflag AbortController (James M Snell) #​33527
  • [74ca960aac] - (SEMVER-MAJOR) lib: initial experimental AbortController implementation (James M Snell) #​33527
  • [78ca61e2cf] - (SEMVER-MAJOR) net: check args in net.connect() and socket.connect() calls (Denys Otrishko) #​34022
  • [41796ebd30] - (SEMVER-MAJOR) net: remove long deprecated server.connections property (James M Snell) #​33647
  • [efefdd668d] - (SEMVER-MAJOR) net: autoDestroy Socket (Robert Nagy) #​31806
  • [6cfba9f7f6] - (SEMVER-MAJOR) process: update v8 fast api calls usage (Maya Lekova) #​35415
  • [3b10f7f933] - (SEMVER-MAJOR) process: change default --unhandled-rejections=throw (Dan Fabulich) #​33021
  • [d8eef83757] - (SEMVER-MAJOR) process: use v8 fast api calls for hrtime (Gus Caplan) #​33600
  • [49745cdef0] - (SEMVER-MAJOR) process: delay throwing an error using throwDeprecation (Ruben Bridgewater) #​32312
  • [a416692e93] - (SEMVER-MAJOR) repl: remove deprecated repl.memory function (Ruben Bridgewater) #​33286
  • [f217b2dfb0] - (SEMVER-MAJOR) repl: remove deprecated repl.turnOffEditorMode() function (Ruben Bridgewater) #​33286
  • [a1bcad8dc0] - (SEMVER-MAJOR) repl: remove deprecated repl.parseREPLKeyword() function (Ruben Bridgewater) #​33286
  • [4ace010b53] - (SEMVER-MAJOR) repl: remove deprecated bufferedCommand property (Ruben Bridgewater) #​33286
  • [37524307fe] - (SEMVER-MAJOR) repl: remove deprecated .rli (Ruben Bridgewater) #​33286
  • [b65e5aeaa7] - (SEMVER-MAJOR) src: implement NodePlatform::PostJob (Clemens Backes) #​35415
  • [b1e8e0e604] - (SEMVER-MAJOR) src: update NODE_MODULE_VERSION to 88 (Michaël Zasso) #​35415
  • [eeb6b473fd] - (SEMVER-MAJOR) src: error reporting on CPUUsage (Yash Ladha) #​34762
  • [21782277c2] - (SEMVER-MAJOR) src: use node:moduleName as builtin module filename (Michaël Zasso) #​35498
  • [05771279af] - (SEMVER-MAJOR) src: enable wasm trap handler on windows (Gus Caplan) #​35033
  • [b7cf823410] - (SEMVER-MAJOR) src: update NODE_MODULE_VERSION to 86 (Michaël Zasso) #​33579
  • [0fb91acedf] - (SEMVER-MAJOR) src: disallow JS execution inside FreeEnvironment (Anna Henningsen) #​33874
  • [53fb2b6b41] - (SEMVER-MAJOR) src: remove _third_party_main support (Anna Henningsen) #​33971
  • [a85ce885bd] - (SEMVER-MAJOR) src: remove deprecated node debug command (James M Snell) #​33648
  • [ac3714637e] - (SEMVER-MAJOR) src: remove unused CancelPendingDelayedTasks (Anna Henningsen) #​32859
  • [a65218f5e8] - (SEMVER-MAJOR) stream: try to wait for flush to complete before 'finish' (Robert Nagy) #​34314
  • [4e3f6f355b] - (SEMVER-MAJOR) stream: cleanup and fix Readable.wrap (Robert Nagy) #​34204
  • [527e2147af] - (SEMVER-MAJOR) stream: add promises version to utility functions (rickyes) #​33991
  • [c7e55c6b72] - (SEMVER-MAJOR) stream: fix writable.end callback behavior (Robert Nagy) #​34101
  • [fb8cc72e73] - (SEMVER-MAJOR) stream: construct (Robert Nagy) #​29656
  • [4bc7025309] - (SEMVER-MAJOR) stream: write should throw on unknown encoding (Robert Nagy) #​33075
  • [ea87809bb6] - (SEMVER-MAJOR) stream: fix _final and 'prefinish' timing (Robert Nagy) #​32780
  • [0bd5595509] - (SEMVER-MAJOR) stream: simplify Transform stream implementation (Robert Nagy) #​32763
  • [8f86986985] - (SEMVER-MAJOR) stream: use callback to properly propagate error (Robert Nagy) #​29179
  • [94dd7b9f94] - (SEMVER-MAJOR) test: update tests after increasing typed array size to 4GB (Kim-Anh Tran) #​35415
  • [d9e98df01b] - (SEMVER-MAJOR) test: fix tests for npm 7.0.0 (Myles Borins) #​35631
  • [c87641aa97] - (SEMVER-MAJOR) test: fix test suite to work with npm 7 (Myles Borins) #​35474
  • [eb9d7a437e] - (SEMVER-MAJOR) test: update WPT harness and tests (Michaël Zasso) #​33770
  • [a8904e8eee] - (SEMVER-MAJOR) timers: introduce timers/promises (James M Snell) #​33950
  • [c55f661551] - (SEMVER-MAJOR) tools: disable x86 safe exception handlers in V8 (Michaël Zasso) #​35415
  • [80e8aec4a5] - (SEMVER-MAJOR) tools: update V8 gypfiles for 8.6 (Ujjwal Sharma) #​35415
  • [faeb9607c6] - (SEMVER-MAJOR) tools: update V8 gypfiles for 8.5 (Ujjwal Sharma) #​35415
  • [bb62f4ad9e] - (SEMVER-MAJOR) url: file URL path normalization (Daijiro Wachi) #​35477
  • [69ef4c2375] - (SEMVER-MAJOR) url: verify domain is not empty after "ToASCII" (Michaël Zasso) #​33770
  • [4831278a16] - (SEMVER-MAJOR) url: remove U+0000 case in the fragment state (Michaël Zasso) #​33770
  • [0d08d5ae7c] - (SEMVER-MAJOR) url: remove gopher from special schemes (Michaël Zasso) #​33325
  • [9be51ee9a1] - (SEMVER-MAJOR) url: forbid lt and gt in url host code point (Yash Ladha) #​33328
  • [1211b9a72f] - (SEMVER-MAJOR) util: change default value of maxStringLength to 10000 (unknown) #​32744
  • [ca8f3ef2e5] - (SEMVER-MAJOR) wasi: drop --experimental-wasm-bigint requirement (Colin Ihrig) #​35415
  • [abd8cdfc4e] - (SEMVER-MAJOR) win, child_process: sanitize env variables (Bartosz Sosnowski) #​35210
  • [705d888387] - (SEMVER-MAJOR) worker: make MessageEvent class more Web-compatible (Anna Henningsen) #​35496
  • [7603c7e50c] - (SEMVER-MAJOR) worker: set trackUnmanagedFds to true by default (Anna Henningsen) #​34394
  • [5ef5116311] - (SEMVER-MAJOR) worker: rename error code to be more accurate (Anna Henningsen) #​33872
Semver-Minor Commits
  • [1d5fa88eb8] - (SEMVER-MINOR) cli: add --node-memory-debug option (Anna Henningsen) #​35537
  • [095be6a01f] - (SEMVER-MINOR) crypto: add getCipherInfo method (James M Snell) #​35368
  • [df1023bb22] - (SEMVER-MINOR) events: allow use of AbortController with on (James M Snell) #​34912
  • [883fc779b6] - (SEMVER-MINOR) events: allow use of AbortController with once (James M Snell) #​34911
  • [e876c0c308] - (SEMVER-MINOR) http2: add support for sensitive headers (Anna Henningsen) #​34145
  • [6f34498148] - (SEMVER-MINOR) net: add support for resolving DNS CAA records (Danny Sonnenschein) #​35466
  • [37a8179673] - (SEMVER-MINOR) net: make blocklist family case insensitive (James M Snell) #​34864
  • [1f9b20b637] - (SEMVER-MINOR) net: introduce net.BlockList (James M Snell) #​34625
  • [278d38f4cf] - (SEMVER-MINOR) src: add maybe versions of EmitExit and EmitBeforeExit (Anna Henningsen) #​35486
  • [2310f679a1] - (SEMVER-MINOR) src: move node_binding to modern THROW_ERR* (James M Snell) #​35469
  • [744a284ccc] - (SEMVER-MINOR) stream: support async for stream impl functions (James M Snell) #​34416
  • [bfbdc84738] - (SEMVER-MINOR) timers: allow promisified timeouts/immediates to be canceled (James M Snell) #​33833
  • [a8971f87d3] - (SEMVER-MINOR) url: support non-special URLs (Daijiro Wachi) #​34925
Semver-Patch Commits

v14.18.2

Compare Source

Notable changes

This release contains a c-ares update to fix a regression introduced in Node.js 14.17.5 resolving CNAME records containing underscores #​39780.

Also included are commits to allow Node.js 14 to continue to build and pass tests on our Jenkins CI, including adding Python 3.10 to the list of allowable Python versions for building.

Commits

v14.18.1

Compare Source

This is a security release.

Notable changes
  • CVE-2021-22959: HTTP Request Smuggling due to spaced in headers (Medium)
    • The http parser accepts requests with a space (SP) right after the header name before the colon. This can lead to HTTP Request Smuggling (HRS). More details will be available at CVE-2021-22959 after publication.
  • CVE-2021-22960: HTTP Request Smuggling when parsing the body (Medium)
    • The parse ignores chunk extensions when parsing the body of chunked requests. This leads to HTTP Request Smuggling (HRS) under certain conditions. More details will be available at CVE-2021-22960 after publication.
Commits

v14.18.0

Compare Source

Notable Changes
  • [3a60de0135] - assert: change status of legacy asserts (James M Snell) #​38113
  • [df37c106a7] - (SEMVER-MINOR) buffer: introduce Blob (James M Snell) #​36811
  • [223494c548] - (SEMVER-MINOR) buffer: add base64url encoding option (Filip Skokan) #​36952
  • [14fc4ddabc] - (SEMVER-MINOR) child_process: allow options.cwd receive a URL (Khaidi Chu) #​38862
  • [b68b13acb3] - (SEMVER-MINOR) child_process: add timeout to spawn and fork (Nitzan Uziely) #​37256
  • [da98c9f99b] - (SEMVER-MINOR) child_process: allow promisified exec to be cancel (Carlos Fuentes) #​34249
  • [779310ac87] - (SEMVER-MINOR) child_process: add 'overlapped' stdio flag (Thiago Padilha) #​29412
  • [40eb3b79f1] - (SEMVER-MINOR) cli: add -C alias for --conditions flag (Guy Bedford) #​38755
  • [39eba0a2e1] - (SEMVER-MINOR) cli: add --node-memory-debug option (Anna Henningsen) #​35537
  • [d8d9a9628a] - (SEMVER-MINOR) dns: add "tries" option to Resolve options (Luan Devecchi) #​39610
  • [15ba19b020] - (SEMVER-MINOR) dns: allow --dns-result-order to change default dns verbatim (Ouyang Yadong) #​38099
  • [307c1d817f] - doc: refactor fs docs structure (James M Snell) #​37170
  • [9ee3f77e32] - (SEMVER-MINOR) errors: remove experimental from --enable-source-maps (Benjamin Coe) #​37362
  • [e73bfed2f4] - esm: deprecate legacy main lookup for modules (Guy Bedford) #​36918
  • [989c204a58] - (SEMVER-MINOR) fs: allow empty string for temp directory prefix (Voltrex) #​39028
  • [ef72490cde] - (SEMVER-MINOR) fs: allow no-params fsPromises fileHandle read (Nitzan Uziely) #​38287
  • [cad9d20f64] - (SEMVER-MINOR) fs: add support for async iterators to fsPromises.writeFile (HiroyukiYagihashi) #​37490
  • [2b0e2706c0] - fs: improve fsPromises readFile performance (Nitzan Uziely) #​37608
  • [fe12cc07b3] - (SEMVER-MINOR) fs: add fsPromises.watch() (James M Snell) #​37179
  • [2459c115a8] - (SEMVER-MINOR) fs: allow position parameter to be a BigInt in read and readSync (Darshan Sen) #​36190
  • [6544cfb4b9] - (SEMVER-MINOR) http2: add support for sensitive headers (Anna Henningsen) #​34145
  • [a6c6cbb4e6] - (SEMVER-MINOR) http2: allow setting the local window size of a session (Yongsheng Zhang) #​35978
  • [1e5aca550c] - inspector: mark as stable (Gireesh Punathil) #​37748
  • [93af04afbb] - (SEMVER-MINOR) module: add support for URL to import.meta.resolve (Antoine du Hamel) #​38587
  • [f9f9389d83] - (SEMVER-MINOR) module: add support for node:‑prefixed require(…) calls (ExE Boss) #​37246
  • [87c71065eb] - (SEMVER-MINOR) net: introduce net.BlockList (James M Snell) #​34625
  • [b421d99a48] - (SEMVER-MINOR) node-api: allow retrieval of add-on file name (Gabriel Schulhof) #​37195
  • [6a4811df8a] - (SEMVER-MINOR) os: add os.devNull (Luigi Pinca) #​38569
  • [4a88ddeeca] - (SEMVER-MINOR) perf_hooks: introduce createHistogram (James M Snell) #​37155
  • [1a6bf1c4a3] - (SEMVER-MINOR) process: add api to enable source-maps programmatically (legendecas) #​39085
  • [99735a6fe8] - (SEMVER-MINOR) process: add 'worker' event (James M Snell) #​38659
  • [3982919317] - (SEMVER-MINOR) process: add direct access to rss without iterating pages (Adrien Maret) #​34291
  • [526e6c7bde] - (SEMVER-MINOR) readline: add AbortSignal support to interface (Nitzan Uziely) #​37932
  • [e6eee08692] - (SEMVER-MINOR) readline: add support for the AbortController to the question method (Mattias Runge-Broberg) #​33676
  • [32de361d70] - (SEMVER-MINOR) readline: add history event and option to set initial history (Mattias Runge-Broberg) #​33662
  • [797f7f8a38] - (SEMVER-MINOR) repl: add auto‑completion for node:‑prefixed require(…) calls (ExE Boss) #​37246
  • [abfd71b64c] - (SEMVER-MINOR) src: call overload ctor from the original ctor (Darshan Sen) #​39768
  • [1efae01b18] - (SEMVER-MINOR) src: add a constructor overload for CallbackScope (Darshan Sen) #​39768
  • [f7933804ba] - (SEMVER-MINOR) src: allow to negate boolean CLI flags (Michaël Zasso) #​39023
  • [6d06ac2202] - (SEMVER-MINOR) src: add --heapsnapshot-near-heap-limit option (Joyee Cheung) #​33010
  • [577d228ca0] - (SEMVER-MINOR) src: add way to get IsolateData and allocator from Environment (Anna Henningsen) #​36441
  • [658a266cd4] - (SEMVER-MINOR) src: allow preventing SetPrepareStackTraceCallback (Shelley Vohr) #​36447
  • [f421422ea4] - (SEMVER-MINOR) src: add maybe versions of EmitExit and EmitBeforeExit (Anna Henningsen) #​35486
  • [a62d4d60f4] - (SEMVER-MINOR) stream: add readableDidRead if has been read from (Robert Nagy) #​39589
  • [63502131a3] - (SEMVER-MINOR) stream: pipeline accept Buffer as a valid first argument (Nitzan Uziely) #​37739
  • [68bbebd42c] - (SEMVER-MINOR) tls: allow reading data into a static buffer (Andrey Pechkurov) #​35753
  • [1cbb74d63d] - (SEMVER-MINOR) url: expose urlToHttpOptions utility (Yongsheng Zhang) #​35960
  • [8eb11356dd] - (SEMVER-MINOR) util: expose toUSVString (Robert Nagy) #​39814
  • [84fcdc3074] - (SEMVER-MINOR) v8: implement v8.stopCoverage() (Joyee Cheung) #​33807
  • [b238b6bf17] - (SEMVER-MINOR) v8: implement v8.takeCoverage() (Joyee Cheung) #​33807
  • [9f6bc58da8] - (SEMVER-MINOR) worker: add setEnvironmentData/getEnvironmentData (James M Snell) #​37486
Commits
Semver-minor commits
  • [f3563d3197] - (SEMVER-MINOR) async_hooks: use new v8::Context PromiseHook API (Stephen Belanger) #​36394
  • [df37c106a7] - (SEMVER-MINOR) buffer: introduce Blob (James M Snell) #​36811
  • [223494c548] - (SEMVER-MINOR) buffer: add base64url encoding option (Filip Skokan) #​36952
  • [14fc4ddabc] - (SEMVER-MINOR) child_process: allow options.cwd receive a URL (Khaidi Chu) #​38862
  • [b68b13acb3] - (SEMVER-MINOR) child_process: add timeout to spawn and fork (Nitzan Uziely) #​37256
  • [da98c9f99b] - (SEMVER-MINOR) child_process: allow promisified exec to be cancel (Carlos Fuentes) #​34249
  • [779310ac87] - (SEMVER-MINOR) child_process: add 'overlapped' stdio flag (Thiago Padilha) #​29412
  • [40eb3b79f1] - (SEMVER-MINOR) cli: add -C alias for --conditions flag (Guy Bedford) #​38755
  • [39eba0a2e1] - (SEMVER-MINOR) cli: add --node-memory-debug option (Anna Henningsen) #​35537
  • [d9b58a0262] - (SEMVER-MINOR) deps: V8: cherry-pick fa4cb17 (Stephen Belanger) #​38577
  • [9d7177c152] - (SEMVER-MINOR) deps: V8: cherry-pick 4c07451 (Stephen Belanger) #​36394
  • [ec0f0ef8ef] - (SEMVER-MINOR) deps: V8: cherry-pick 5f44131 (Stephen Belanger) #​36394
  • [3e7238e45a] - (SEMVER-MINOR) deps: V8: cherry-pick 272445f (Stephen Belanger) #​36394
  • [214e568597] - (SEMVER-MINOR) deps: V8: backport c0fceaa (Stephen Belanger) #​36394
  • [d8d9a9628a] - (SEMVER-MINOR) dns: add "tries" option to Resolve options (Luan Devecchi) #​39610
  • [15ba19b020] - (SEMVER-MINOR) dns: allow --dns-result-order to change default dns verbatim (Ouyang Yadong) #​38099
  • [defb77cac9] - (SEMVER-MINOR) doc: add missing change to resolver ctor (Luan Devecchi) #​39610
  • [9ee3f77e32] - (SEMVER-MINOR) errors: remove experimental from --enable-source-maps (Benjamin Coe) #​37362
  • [989c204a58] - (SEMVER-MINOR) fs: allow empty string for temp directory prefix (Voltrex) #​39028
  • [ef72490cde] - (SEMVER-MINOR) fs: allow no-params fsPromises fileHandle read (Nitzan Uziely) #​38287
  • [cad9d20f64] - (SEMVER-MINOR) fs: add support for async iterators to fsPromises.writeFile (HiroyukiYagihashi) #​37490
  • [fe12cc07b3] - (SEMVER-MINOR) fs: add fsPromises.watch() (James M Snell) #​37179
  • [2459c115a8] - (SEMVER-MINOR) fs: allow position parameter to be a BigInt in read and readSync (Darshan Sen) #​36190
  • [6544cfb4b9] - (SEMVER-MINOR) http2: add support for sensitive headers (Anna Henningsen) #​34145
  • [a6c6cbb4e6] - (SEMVER-MINOR) http2: allow setting the local window size of a session (Yongsheng Zhang) #​35978
  • [93af04afbb] - (SEMVER-MINOR) module: add support for URL to import.meta.resolve (Antoine du Hamel) #​38587
  • [f9f9389d83] - (SEMVER-MINOR) module: add support for node:‑prefixed require(…) calls (ExE Boss) #​37246
  • [76d4f22bab] - (SEMVER-MINOR) net: allow net.BlockList to use net.SocketAddress objects (James M Snell) #​37917
  • [82363d864d] - (SEMVER-MINOR) net: add SocketAddress class (James M Snell) #​37917
  • [0202ba46b8] - (SEMVER-MINOR) net: make net.BlockList cloneable (James M Snell) #​37917
  • [a41a3e3b3f] - (SEMVER-MINOR) net: make blocklist family case insensitive (James M Snell) #​34864
  • [87c71065eb] - (SEMVER-MINOR) net: introduce net.BlockList (James M Snell) #​34625
  • [b421d99a48] - (SEMVER-MINOR) node-api: allow retrieval of add-on file name (Gabriel Schulhof) #​37195
  • [6a4811df8a] - (SEMVER-MINOR) os: add os.devNull (Luigi Pinca) #​38569
  • [4a88ddeeca] - (SEMVER-MINOR) perf_hooks: introduce createHistogram (James M Snell) #​37155
  • [1a6bf1c4a3] - (SEMVER-MINOR) process: add api to enable source-maps programmatically (legendecas) #​39085
  • [99735a6fe8] - (SEMVER-MINOR) process: add 'worker' event (James M Snell) #​38659
  • [3982919317] - (SEMVER-MINOR) process: add direct access to rss without iterating pages (Adrien Maret) #​34291
  • [526e6c7bde] - (SEMVER-MINOR) readline: add AbortSignal support to interface (Nitzan Uziely) #​37932
  • [e6eee08692] - (SEMVER-MINOR) readline: add support for the AbortController to the question method (Mattias Runge-Broberg) #​33676
  • [32de361d70] - (SEMVER-MINOR) readline: add history event and option to set initial history (Mattias Runge-Broberg) #​33662
  • [797f7f8a38] - (SEMVER-MINOR) repl: add auto‑completion for node:‑prefixed require(…) calls (ExE Boss) #​37246
  • [abfd71b64c] - (SEMVER-MINOR) src: call overload ctor from the original ctor (Darshan Sen) #​39768
  • [1efae01b18] - (SEMVER-MINOR) src: add a constructor overload for CallbackScope (Darshan Sen) #​39768
  • [1aa2080d29] - (SEMVER-MINOR) src: fix align in cares_wrap.h (Luan) #​39610
  • [f7933804ba] - (SEMVER-MINOR) src: allow to negate boolean CLI flags (Michaël Zasso) #​39023
  • [6d06ac2202] - (SEMVER-MINOR) src: add --heapsnapshot-near-heap-limit option (Joyee Cheung) #​33010
  • [4091eb9db7] - (SEMVER-MINOR) src: move node_binding to modern THROW_ERR* (James M Snell) #​35469
  • [577d228ca0] - (SEMVER-MINOR) src: add way to get IsolateData and allocator from Environment (Anna Henningsen) #​36441
  • [658a266cd4] - (SEMVER-MINOR) src: allow preventing SetPrepareStackTraceCallback (Shelley Vohr) #​36447
  • [f421422ea4] - (SEMVER-MINOR) src: add maybe versions of EmitExit and EmitBeforeExit (Anna Henningsen) #​35486
  • [a62d4d60f4] - (SEMVER-MINOR) stream: add readableDidRead if has been read from (Robert Nagy) #​39589
  • [63502131a3] - (SEMVER-MINOR) stream: pipeline accept Buffer as a valid first argument (Nitzan Uziely) #​37739
  • [72ef41c72b] - (SEMVER-MINOR) test: add wpt tests for Blob (Michaël Zasso) #​36811
  • [68bbebd42c] - (SEMVER-MINOR) tls: allow reading data into a static buffer (Andrey Pechkurov) #​35753
  • [587deacad9] - (SEMVER-MINOR) tools: add Worker to type-parser (James M Snell) #​38659
  • [1cbb74d63d] - (SEMVER-MINOR) url: expose urlToHttpOptions utility (Yongsheng Zhang) #​35960
  • [8eb11356dd] - (SEMVER-MINOR) util: expose toUSVString (Robert Nagy) #​39814
  • [84fcdc3074] - (SEMVER-MINOR) v8: implement v8.stopCoverage() (Joyee Cheung) #​33807
  • [b238b6bf17] - (SEMVER-MINOR) v8: implement v8.takeCoverage() (Joyee Cheung) #​33807
  • [9f6bc58da8] - (SEMVER-MINOR) worker: add setEnvironmentData/getEnvironmentData (James M Snell) #​37486
Semver-patch commits
Documentation commits
Other commits

v14.17.6

Compare Source

This is a security release.

Notable Changes

These are vulnerabilities in the node-tar, arborist, and npm cli modules which are related to the initial reports and subsequent remediation of node-tar vulnerabilities CVE-2021-32803 and CVE-2021-32804. Subsequent internal security review of node-tar and additional external bounty reports have resulted in another 5 CVE being remediated in core npm CLI dependencies including node-tar, and npm arborist.

You can read more about it in:

Commits

v14.17.5

Compare Source

This is a security release.

Notable Changes
  • CVE-2021-3672/CVE-2021-22931: Improper handling of untypical characters in domain names (High)
    • Node.js was vulnerable to Remote Code Execution, XSS, application crashes due to missing input validation of hostnames returned by Domain Name Servers in the Node.js DNS library which can lead to the output of wrong hostnames (leading to Domain Hijacking) and injection vulnerabilities in applications using the library. You can read more about it at https://nvd.nist.gov/vuln/detail/CVE-2021-22931.
  • CVE-2021-22940: Use after free on close http2 on stream canceling (High)
    • Node.js was vulnerable to a use after free attack where an attacker might be able to exploit memory corruption to change process behavior. This release includes a follow-up fix for CVE-2021-22930 as the issue was not completely resolved by the previous fix. You can read more about it at https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-22940.
  • CVE-2021-22939: Incomplete validation of rejectUnauthorized parameter (Low)
    • If the Node.js HTTPS API was used incorrectly and "undefined" was in passed for the "rejectUnauthorized" parameter, no error was returned and connections to servers with an expired certificate would have been accepted. You can read more about it at https://nvd.nist.gov/vuln/detail/CVE-2021-22939.
Commits

v14.17.4

Compare Source

This is a security release.

Notable Changes
  • CVE-2021-22930: Use after free on close http2 on stream canceling (High)

This releases also fixes some regressions with internationalization introduced by the ICU updates in Node.js 14.17.0 and 14.17.1.

Commits

v14.17.3

Compare Source

Notable Changes

Node.js 14.17.2 introduced a regression in the Windows installer on non-English locales that is being fixed in this release. There is no need to download this release if you are not using the Windows installer.

Commits

v14.17.2

Compare Source

This is a security release.

Notable Changes

Vulnerabilities fixed:

  • CVE-2021-22918: libuv upgrade - Out of bounds read (Medium)
    • Node.js is vulnerable to out-of-bounds read in libuv's uv__idna_toascii() function which is used to convert strings to ASCII. This is called by Node's dns module's lookup() function and can lead to information disclosures or crashes. You can read more about it in https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-22918
  • CVE-2021-22921: Windows installer - Node Installer Local Privilege Escalation (Medium)
    • Node.js is vulnerable to local privilege escalation attacks under certain conditions on Windows platforms. More specifically, improper configuration of permissions in the installation directory allows an attacker to perform two different escalation attacks: PATH and DLL hijacking. You can read more about it in https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-22921
Commits

v14.17.1

Compare Source

Notable Changes
Commits

v14.17.0

Compare Source

Notable Changes
Diagnostics channel (experimental module)

diagnostics_channel is a new experimental module that provides an API to create named channels to report arbitrary message data for diagnostics purposes.

The module was initially introduced in Node.js v15.1.0 and is backported to v14.17.0 to enable testing it at a larger scale.

With diagnostics_channel, Node.js core and module authors can publish contextual data about what they are doing at a given time. This could be the hostname and query string of a mysql query, for example. Just create a named channel with dc.channel(name) and call channel.publish(data) to send the data to any listeners to that channel.

const dc = require('diagnostics_channel');
const channel = dc.channel('mysql.query');

MySQL.prototype.query = function query(queryString, values, callback) {
  // Broadcast query information whenever a query is made
  channel.publish({
    query: queryString,
    host: this.hostname,
  });

  this.doQuery(queryString, values, callback);
};

Channels are like one big global event emitter but are split into separate objects to ensure they get the best performance. If nothing is listening to the channel, the publishing overhead should be as close to zero as possible. Consuming channel data is as easy as using channel.subscribe(listener) to run a function whenever a message is published to that channel.

const dc = require('diagnostics_channel');
const channel = dc.channel('mysql.query');

channel.subscribe(({ query, host }) => {
  console.log(`mysql query to ${host}: ${query}`);
});

The data captured can be used to provide context for what an app is doing at a given time. This can be used for things like augmenting tracing data, tracking network and filesystem activity, logging queries, and many other things. It's also a very useful data source for diagnostics tools to provide a clearer picture of exactly what the application is doing at a given point in the data they are presenting.

Contributed by Stephen Belanger #​34895.

UUID support in the crypto module

The new crypto.randomUUID() method now allows to generate random RFC 4122 Version 4 UUID strings:

const { randomUUID } = require('crypto');

console.log(randomUUID());
// 'aa7c91a1-f8fc-4339-b9db-f93fc7233429'

Contributed by James M Snell #​36729.

Experimental support for AbortController and AbortSignal

Node.js 14.17.0 adds experimental partial support for AbortController and AbortSignal.

Both constructors can be enabled globally using the --experimental-abortcontroller flag.

Additionally, several Node.js APIs have been updated to support AbortSignal for cancellation. It is not mandatory to use the built-in constructors with them. Any spec-compliant third-party alternatives should be compatible.

AbortSignal support was added to the following methods:

  • child_process.exec
  • child_process.execFile
  • child_process.fork
  • child_process.spawn
  • dgram.createSocket
  • events.on
  • events.once
  • fs.readFile
  • fs.watch
  • fs.writeFile
  • http.request
  • https.request
  • http2Session.request
  • The promisified variants of setImmediate and setTimeout
Other notable changes
  • doc:
    • revoke deprecation of legacy url, change status to legacy (James M Snell) #​37784
    • add legacy status to stability index (James M Snell) #​37784
    • upgrade stability status of report API (Gireesh Punathil) #​35654
  • deps:
    • V8: Backport various patches for Apple Silicon support (BoHong Li) #​38051
    • update ICU to 68.1 (Michaël Zasso) #​36187
    • upgrade to libuv 1.41.0 (Colin Ihrig) #​37360
  • http:
    • add http.ClientRequest.getRawHeaderNames() (simov) #​37660
    • report request start and end with diagnostics_channel (Stephen Belanger) #​34895
  • util:
    • add getSystemErrorMap() impl (eladkeyshawn) #​38101
Commits

Configuration

📅 Schedule: At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this MR and you won't be reminded about these updates again.


  • If you want to rebase/retry this MR, click this checkbox.

This MR has been generated by Renovate Bot.

Edited by Common Ground Bot

Merge request reports