Skip to content

Update Node.js to v18

This MR contains the following updates:

Package Update Change
node major 16.15.0 -> 18.14.0

MR created with the help of gitlab-org/frontend/renovate-gitlab-bot


Release Notes

nodejs/node

v18.14.0

Compare Source

Notable changes
Updated npm to 9.3.1

Based on the list of guidelines we've established on integrating npm and node, here is a grouped list of the breaking changes with the reasoning as to why they fit within the guidelines linked above. Note that all the breaking changes were made in 9.0.0. All subsequent minor and patch releases after npm@9.0.0 do not contain any breaking changes.

Engines

Explanation: the node engines supported by npm@9 make it safe to allow npm@9 as the default in any LTS version of 14 or 16, as well as anything later than or including 18.0.0

  • npm is now compatible with the following semver range for node: ^14.17.0 || ^16.13.0 || >=18.0.0
Filesystem

Explanation: when run as root previous versions of npm attempted to manage file ownership automatically on the user's behalf. this behavior was problematic in many cases and has been removed in favor of allowing users to manage their own filesystem permissions

  • npm will no longer attempt to modify ownership of files it creates.
Auth

Explanation: any errors thrown from users having unsupported auth configurations will show npm config fix in the remediation instructions, which will allow the user to automatically have their auth config fixed.

  • The presence of auth related settings that are not scoped to a specific registry found in a config file is no longer supported and will throw errors.
Login

Explanation: the default auth-type has changed and users can opt back into the old behavior with npm config set auth-type=legacy. login and adduser have also been seperated making each command more closely match it's name instead of being aliases for each other.

  • Legacy auth types sso, saml & legacy have been consolidated into "legacy".
  • auth-type defaults to "web"
  • login and adduser are now separate commands that send different data to the registry.
  • auth-type config values web and legacy only try their respective methods, npm no longer tries them all and waits to see which one doesn't fail.
Tarball Packing

Explanation: previously using multiple ignore/allow lists when packing was an undefined behavior, and now the order of operations is strictly defined when packing a tarball making it easier to follow and should only affect users relying on the previously undefined behavior.

  • npm pack now follows a strict order of operations when applying ignore rules. If a files array is present in the package.json, then rules in .gitignore and .npmignore files from the root will be ignored.
Display/Debug/Timing Info

Explanation: these changes center around the display of information to the terminal including timing and debug log info. We do not anticipate these changes breaking any existing workflows.

  • Links generated from git urls will now use HEAD instead of master as the default ref.
  • timing has been removed as a value for --loglevel.
  • --timing will show timing information regardless of --loglevel, except when --silent.
  • When run with the --timing flag, npm now writes timing data to a file alongside the debug log data, respecting the logs-dir option and falling back to <CACHE>/_logs/ dir, instead of directly inside the cache directory.
  • The timing file data is no longer newline delimited JSON, and instead each run will create a uniquely named <ID>-timing.json file, with the <ID> portion being the same as the debug log.
  • npm now outputs some json errors on stdout. Previously npm would output all json formatted errors on stderr, making it difficult to parse as the stderr stream usually has logs already written to it.
Config/Command Deprecations or Removals

Explanation: install-links is the only config or command in the list that has an effect on package installs. We fixed a number of issues that came up during prereleases with this change. It will also only be applied to new package trees created without a package-lock.json file. Any install with an existing lock file will not be changed.

  • Deprecate boolean install flags in favor of --install-strategy.
  • npm config set will no longer accept deprecated or invalid config options.
  • install-links config defaults to "true".
  • node-version config has been removed.
  • npm-version config has been removed.
  • npm access subcommands have been renamed.
  • npm birthday has been removed.
  • npm set-script has been removed.
  • npm bin has been removed (use npx or npm exec to execute binaries).
Other notable changes
  • doc:
    • add parallelism note to os.cpus() (Colin Ihrig) #​45895
  • http:
    • join authorization headers (Marco Ippolito) #​45982
    • improved timeout defaults handling (Paolo Insogna) #​45778
  • stream:
    • implement finished() for ReadableStream and WritableStream (Debadree Chatterjee) #​46205
Commits

v18.13.0

Compare Source

Notable changes
Add support for externally shared js builtins

By default Node.js is built so that all dependencies are bundled into the Node.js binary itself. Some Node.js distributions prefer to manage dependencies externally. There are existing build options that allow dependencies with native code to be externalized. This commit adds additional options so that dependencies with JavaScript code (including WASM) can also be externalized. This addition does not affect binaries shipped by the Node.js project but will allow other distributions to externalize additional dependencies when needed.

Contributed by Michael Dawson in #​44376

Introduce File

The File class is part of the FileAPI. It can be used anywhere a Blob can, for example in URL.createObjectURL and FormData. It contains two properties that Blobs do not have: lastModified, the last time the file was modified in ms, and name, the name of the file.

Contributed by Khafra in #​45139

Support function mocking on Node.js test runner

The node:test module supports mocking during testing via a top-level mock object.

test('spies on an object method', (t) => {
  const number = {
    value: 5,
    add(a) {
      return this.value + a;
    },
  };
  t.mock.method(number, 'add');

  assert.strictEqual(number.add(3), 8);
  assert.strictEqual(number.add.mock.calls.length, 1);
});

Contributed by Colin Ihrig in #​45326

Other notable changes
  • build:
    • disable v8 snapshot compression by default (Joyee Cheung) #​45716
  • crypto:
    • update root certificates (Luigi Pinca) #​45490
  • deps:
    • update ICU to 72.1 (Michaël Zasso) #​45068
  • doc:
    • add doc-only deprecation for headers/trailers setters (Rich Trott) #​45697
    • add Rafael to the tsc (Michael Dawson) #​45691
    • deprecate use of invalid ports in url.parse (Antoine du Hamel) #​45576
    • add lukekarrys to collaborators (Luke Karrys) #​45180
    • add anonrig to collaborators (Yagiz Nizipli) #​45002
    • deprecate url.parse() (Rich Trott) #​44919
  • lib:
    • drop fetch experimental warning (Matteo Collina) #​45287
  • net:
    • (SEMVER-MINOR) add autoSelectFamily and autoSelectFamilyAttemptTimeout options (Paolo Insogna) #​44731
  • src:
    • (SEMVER-MINOR) add uvwasi version (Jithil P Ponnan) #​45639
    • (SEMVER-MINOR) add initial shadow realm support (Chengzhong Wu) #​42869
  • test_runner:
    • (SEMVER-MINOR) add t.after() hook (Colin Ihrig) #​45792
    • (SEMVER-MINOR) don't use a symbol for runHook() (Colin Ihrig) #​45792
  • tls:
    • (SEMVER-MINOR) add "ca" property to certificate object (Ben Noordhuis) #​44935
    • remove trustcor root ca certificates (Ben Noordhuis) #​45776
  • tools:
    • update certdata.txt (Luigi Pinca) #​45490
  • util:
    • add fast path for utf8 encoding (Yagiz Nizipli) #​45412
    • improve textdecoder decode performance (Yagiz Nizipli) #​45294
    • (SEMVER-MINOR) add MIME utilities (#​21128) (Bradley Farias) #​21128
Commits

v18.12.1

Compare Source

This is a security release.

Notable changes

The following CVEs are fixed in this release:

  • CVE-2022-3602: X.509 Email Address 4-byte Buffer Overflow (High)
  • CVE-2022-3786: X.509 Email Address Variable Length Buffer Overflow (High)
  • CVE-2022-43548: DNS rebinding in --inspect via invalid octal IP address (Medium)

More detailed information on each of the vulnerabilities can be found in November 2022 Security Releases blog post.

Commits

v18.12.0

Compare Source

Notable Changes

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

v18.11.0

Compare Source

Notable changes
watch mode (experimental)

Running in 'watch' mode using node --watch restarts the process when an imported file is changed.

Contributed by Moshe Atlow in #​44366

Other notable changes
  • fs:
    • (SEMVER-MINOR) add FileHandle.prototype.readLines (Antoine du Hamel) #​42590
  • http:
    • (SEMVER-MINOR) add writeEarlyHints function to ServerResponse (Wing) #​44180
  • http2:
    • (SEMVER-MINOR) make early hints generic (Yagiz Nizipli) #​44820
  • lib:
    • (SEMVER-MINOR) refactor transferable AbortSignal (flakey5) #​44048
  • src:
    • (SEMVER-MINOR) add detailed embedder process initialization API (Anna Henningsen) #​44121
  • util:
    • (SEMVER-MINOR) add default value option to parsearg (Manuel Spigolon) #​44631
Commits

v18.10.0

Compare Source

Notable changes
  • doc:
    • (SEMVER-MINOR) deprecate modp1, modp2, and modp5 groups (Tobias Nießen) #​44588
    • add legendecas to TSC list (Michael Dawson) #​44662
    • move policy docs to the permissions scope (Rafael Gonzaga) #​44222
  • gyp:
    • libnode for ios app embedding (chexiongsheng) #​44210
  • http:
    • (SEMVER-MINOR) throw error on content-length mismatch (sidwebworks) #​44588
  • stream:
    • (SEMVER-MINOR) add ReadableByteStream.tee() (Daeyeon Jeong) #​44505
Commits

v18.9.1

Compare Source

This is a security release.

Notable changes

The following CVEs are fixed in this release:

  • CVE-2022-32212: DNS rebinding in --inspect on macOS (High)
    • Insufficient fix for macOS devices on v18.5.0
  • CVE-2022-32222: Node 18 reads openssl.cnf from /home/iojs/build/ upon startup on MacOS (Medium)
  • CVE-2022-32213: HTTP Request Smuggling - Flawed Parsing of Transfer-Encoding (Medium)
    • Insufficient fix on v18.5.0
  • CVE-2022-32215: HTTP Request Smuggling - Incorrect Parsing of Multi-line Transfer-Encoding (Medium)
    • Insufficient fix on v18.5.0
  • CVE-2022-35256: HTTP Request Smuggling - Incorrect Parsing of Header Fields (Medium)
  • CVE-2022-35255: Weak randomness in WebCrypto keygen

More detailed information on each of the vulnerabilities can be found in September 22nd 2022 Security Releases blog post.

llhttp updated to 6.0.10

llhttp is updated to 6.0.10 which includes fixes for the following vulnerabilities.

  • HTTP Request Smuggling - CVE-2022-32213 bypass via obs-fold mechanic (Medium)(CVE-2022-32213 ): The llhttp parser in the http module does not correctly parse and validate Transfer-Encoding headers. This can lead to HTTP Request Smuggling (HRS).
  • HTTP Request Smuggling - Incorrect Parsing of Multi-line Transfer-Encoding (Medium)(CVE-2022-32215): The llhttp parser in the http module does not correctly handle multi-line Transfer-Encoding headers. This can lead to HTTP Request Smuggling (HRS).
  • HTTP Request Smuggling - Incorrect Parsing of Header Fields (Medium)(CVE-35256): The llhttp parser in the http does not correctly handle header fields that are not terminated with CLRF. This can lead to HTTP Request Smuggling (HRS).
Commits

v18.9.0

Compare Source

Notable changes
  • doc
    • add daeyeon to collaborators (Daeyeon Jeong) #​44355
  • lib
    • (SEMVER-MINOR) add diagnostics channel for process and worker (theanarkh) #​44045
  • os
    • (SEMVER-MINOR) add machine method (theanarkh) #​44416
  • report
    • (SEMVER-MINOR) expose report public native apis (Chengzhong Wu) #​44255
  • src
    • (SEMVER-MINOR) expose environment RequestInterrupt api (Chengzhong Wu) #​44362
  • vm
    • include vm context in the embedded snapshot (Joyee Cheung) #​44252
Commits

v18.8.0

Compare Source

Notable changes

bootstrap: implement run-time user-land snapshots via --build-snapshot and --snapshot-blob

This patch introduces --build-snapshot and --snapshot-blob options for creating and using user land snapshots.

To generate a snapshot using snapshot.js as an entry point and write the snapshot blob to snapshot.blob:

echo "globalThis.foo = 'I am from the snapshot'" > snapshot.js
node --snapshot-blob snapshot.blob --build-snapshot snapshot.js

To restore application state from snapshot.blob, with index.js as the entry point script for the deserialized application:

echo "console.log(globalThis.foo)" > index.js
node --snapshot-blob snapshot.blob index.js

### => I am from the snapshot

Users can also use the v8.startupSnapshot API to specify an entry point at snapshot building time, thus avoiding the need of an additional entry script at deserialization time:

echo "require('v8').startupSnapshot.setDeserializeMainFunction(() => console.log('I am from the snapshot'))" > snapshot.js
node --snapshot-blob snapshot.blob --build-snapshot snapshot.js
node --snapshot-blob snapshot.blob

### => I am from the snapshot

Contributed by Joyee Cheung in #​38905

Other notable changes
  • crypto:
    • (SEMVER-MINOR) allow zero-length IKM in HKDF and in webcrypto PBKDF2 (Filip Skokan) #​44201
    • (SEMVER-MINOR) allow zero-length secret KeyObject (Filip Skokan) #​44201
  • deps:
    • upgrade npm to 8.18.0 (npm team) #​44263 - Adds a new npm query command
  • doc:
    • add Erick Wendel to collaborators (Erick Wendel) #​44088
    • add theanarkh to collaborators (theanarkh) #​44131
    • add MoLow to collaborators (Moshe Atlow) #​44214
    • add cola119 to collaborators (cola119) #​44248
    • deprecate --trace-atomics-wait (Keyhan Vakil) #​44093
  • http:
    • (SEMVER-MINOR) make idle http parser count configurable (theanarkh) #​43974
  • net:
    • (SEMVER-MINOR) add local family (theanarkh) #​43975
  • src:
    • (SEMVER-MINOR) print source map error source on demand (Chengzhong Wu) #​43875
  • tls:
    • (SEMVER-MINOR) pass a valid socket on tlsClientError (Daeyeon Jeong) #​44021
Commits

v18.7.0

Compare Source

Notable changes
  • doc:
    • add F3n67u to collaborators (Feng Yu) #​43953
    • deprecate coercion to integer in process.exit (Daeyeon Jeong) #​43738
    • (SEMVER-MINOR) deprecate diagnostics_channel object subscribe method (Stephen Belanger) #​42714
  • events:
    • (SEMVER-MINOR) expose CustomEvent on global with CLI flag (Daeyeon Jeong) #​43885
    • (SEMVER-MINOR) add CustomEvent (Daeyeon Jeong) #​43514
  • http:
    • (SEMVER-MINOR) add drop request event for http server (theanarkh) #​43806
  • lib:
    • (SEMVER-MINOR) improved diagnostics_channel subscribe/unsubscribe (Stephen Belanger) #​42714
  • util:
    • (SEMVER-MINOR) add tokens to parseArgs (John Gee) #​43459
Commits

v18.6.0

Compare Source

Notable Changes
Experimental ESM Loader Hooks API

Node.js ESM Loader hooks now support multiple custom loaders, and composition is achieved via "chaining": foo-loader calls bar-loader calls qux-loader (a custom loader must now signal a short circuit when intentionally not calling the next). See the ESM docs for details.

Real-world use-cases are laid out for end-users with working examples in the article Custom ESM loaders: Who, what, when, where, why, how.

Contributed by Jacob Smith, Geoffrey Booth, and Bradley Farias - #​42623

Commits
Semver-minor commits
Semver-patch commits
Documentation commits
Other commits

v18.5.0

Compare Source

This is a security release.

Notable Changes
  • [3f0c3e142d] - (SEMVER-MAJOR) src,deps,build,test: add OpenSSL config appname (Daniel Bevenius) #​43124
  • [9578158ff8] - (SEMVER-MAJOR) src,doc,test: add --openssl-shared-config option (Daniel Bevenius) #​43124
    • Node.js now reads nodejs_conf section in the openssl config
  • [dc7af13486] - deps: update archs files for quictls/openssl-3.0.5+quic (RafaelGSS) #​43693
  • [fa72c534eb] - deps: upgrade openssl sources to quictls/openssl-3.0.5+quic (RafaelGSS) #​43693
Commits

v18.4.0

Compare Source

Notable Changes
  • crypto:
    • remove Node.js-specific webcrypto extensions (Filip Skokan) #​43310
    • add CFRG curves to Web Crypto API (Filip Skokan) #​42507
  • dns:
    • accept 'IPv4' and 'IPv6' for family (Antoine du Hamel) #​43054
  • report:
    • add more heap infos in process report (theanarkh) #​43116
Commits

v18.3.0

Compare Source

Notable Changes
  • [dc3b91f351] - deps: update undici to 5.4.0 (Node.js GitHub Bot) #​43262
  • [d6cf409d78] - (SEMVER-MINOR) util: add parseArgs module (Benjamin Coe) #​42675
  • [9539cfa358] - (SEMVER-MINOR) http: add uniqueHeaders option to request and createServer (Paolo Insogna) #​41397
  • [41fdc2617d] - deps: upgrade npm to 8.11.0 (npm team) #​43210
  • [0000654e47] - deps: patch V8 to 10.2.154.4 (Michaël Zasso) #​43067
  • [b3c8e609fd] - (SEMVER-MINOR) deps: update V8 to 10.2.154.2 (Michaël Zasso) #​42740
  • [3e89b7336d] - (SEMVER-MINOR) fs: make params in writing methods optional (LiviaMedeiros) #​42601
  • [9539cfa358] - (SEMVER-MINOR) http: add uniqueHeaders option to request and createServer (Paolo Insogna) #​41397
  • [8f5b4570e5] - (SEMVER-MINOR) net: add ability to reset a tcp socket (pupilTong) #​43112
  • [5eff7b4a6a] - (SEMVER-MINOR) Revert "build: make x86 Windows support temporarily experimental" (Michaël Zasso) #​42740
    • This means 32-bit Windows binaries are back with this release.
Commits

v18.2.0

Compare Source

Notable Changes
OpenSSL 3.0.3

This update can be treated as a security release as the issues addressed in OpenSSL 3.0.3 slightly affect Node.js 18. See https://nodejs.org/en/blog/vulnerability/openssl-fixes-in-regular-releases-may2022/ for more information on how the May 2022 OpenSSL releases affect other Node.js release lines.

Other Notable Changes
Commits

v18.1.0

Compare Source

Notable Changes
Commits

v18.0.0

Compare Source

Node.js 18 is here! Highlights include the update of the V8 JavaScript engine to 10.1, global fetch enabled by default, and a core test runner module.

Initially, Node.js 18 will replace Node.js 17 as our ‘Current’ release line. As per the release schedule, Node.js 18 will be the ‘Current’ release for the next 6 months and then promoted to Long-term Support (LTS) in October 2022. Once promoted to long-term support the release will be designated the codename ‘Hydrogen’. Node.js 18 will be supported until April 2025.

Notable Changes
Deprecations and Removals
  • (SEMVER-MAJOR) fs: runtime deprecate string coercion in fs.write, fs.writeFileSync (Livia Medeiros) #​42607
  • (SEMVER-MAJOR) dns: remove dns.lookup and dnsPromises.lookup options type coercion (Antoine du Hamel) #​41431
  • (SEMVER-MAJOR) process: runtime deprecate multipleResolves (Benjamin Gruenbaum) #​41896
  • (SEMVER-MAJOR) stream: remove thenable support (Robert Nagy) #​40773
  • (SEMVER-MAJOR) tls: move tls.parseCertString to end-of-life (Tobias Nießen) #​41479
fetch (experimental)

An experimental fetch API is available on the global scope by default. The implementation is based upon undici, an HTTP/1.1 client written for Node.js by contributors to the project.

const res = await fetch('https://nodejs.org/api/documentation.json');
if (res.ok) {
  const data = await res.json();
  console.log(data);
}

Through this addition, the following globals are made available: fetch, FormData, Headers, Request, Response.

Disable this API with the --no-experimental-fetch command-line flag.

Contributed by Michaël Zasso in #​41811.

HTTP Timeouts

server.headersTimeout which limits the amount of time the parser will wait to receive the complete HTTP headers is now set to 60000 (60 seconds) by default.

server.requestTimeout which sets the timeout value in milliseconds for receiving the entire request from the client is now set to 300000 (5 minutes) by default.

If these timeouts expire, the server responds with status 408 without forwarding the request to the request listener and then closes the connection.

Both timeouts must be set to a non-zero value to protect against potential Denial-of-Service attacks in case the server is deployed without a reverse proxy in front.

Contributed by Paolo Insogna in #​41263.

Test Runner module (experimental)

The node:test module facilitates the creation of JavaScript tests that report results in TAP format. To access it:

import test from 'node:test';

This module is only available under the node: scheme.

The following is an example implementation of a parent test with two subtests:

test('top level test', async (t) => {
  await t.test('subtest 1', (t) => {
    assert.strictEqual(1, 1);
  });

  await t.test('subtest 2', (t) => {
    assert.strictEqual(2, 2);
  });
});

Read more in https://nodejs.org/dist/latest-v18.x/docs/api/test.html.

Contributed by Colin Ihrig in #​42325.

Toolchain and Compiler Upgrades
  • Prebuilt binaries for Linux are now built on Red Hat Enterprise Linux (RHEL) 8 and are compatible with Linux distributions based on glibc 2.28 or later, for example, Debian 10, RHEL 8, Ubuntu 20.04.
  • Prebuilt binaries for macOS now require macOS 10.15 or later.
  • For AIX the minimum supported architecture has been raised from Power 7 to Power 8.

Prebuilt binaries for 32-bit Windows will initially not be available due to issues building the V8 dependency in Node.js. We hope to restore 32-bit Windows binaries for Node.js 18 with a future V8 update.

Node.js does not support running on operating systems that are no longer supported by their vendor. For operating systems where their vendor has planned to end support earlier than April 2025, such as Windows 8.1 (January 2023) and Windows Server 2012 R2 (October 2023), support for Node.js 18 will end at the earlier date.

Full details about the supported toolchains and compilers are documented in the Node.js BUILDING.md file.

Contributed by Richard Lau in #​42292, #​42604 and #​42659,and Michaël Zasso in #​42105 and #​42666.

V8 10.1

The V8 engine is updated to version 10.1, which is part of Chromium 101. Compared to the version included in Node.js 17.9.0, the following new features are included:

The data format returned by the serialization API (v8.serialize(value)) has changed, and cannot be deserialized by earlier versions of Node.js. On the other hand, it is still possible to deserialize the previous format, as the API is backwards-compatible.

Contributed by Michaël Zasso in #​42657.

Web Streams API (experimental)

Node.js now exposes the experimental implementation of the Web Streams API on the global scope. This means the following APIs are now globally available:

  • ReadableStream, ReadableStreamDefaultReader, ReadableStreamBYOBReader, ReadableStreamBYOBRequest, ReadableByteStreamController, ReadableStreamDefaultController, TransformStream, TransformStreamDefaultController, WritableStream, WritableStreamDefaultWriter, WritableStreamDefaultController, ByteLengthQueuingStrategy, CountQueuingStrategy, TextEncoderStream, TextDecoderStream, CompressionStream, DecompressionStream.

Contributed James Snell in #​39062, and Antoine du Hamel in #​42225.

Other Notable Changes
  • (SEMVER-MAJOR) buffer: expose Blob as a global (James M Snell) #​41270
  • (SEMVER-MAJOR) child_process: improve argument validation (Rich Trott) #​41305
  • doc: add RafaelGSS to collaborators (RafaelGSS) #​42718
  • (SEMVER-MAJOR) http: make TCP noDelay enabled by default (Paolo Insogna) #​42163
  • (SEMVER-MAJOR) net: make server.address() return an integer for family (Antoine du Hamel) #​41431
  • (SEMVER-MAJOR) worker: expose BroadcastChannel as a global (James M Snell) #​41271
  • (SEMVER-MAJOR) worker: graduate BroadcastChannel to supported (James M Snell) #​41271
Semver-Major Commits
  • [dab8ab2837] - (SEMVER-MAJOR) assert,util: compare RegExp.lastIndex while using deep equal checks (Ruben Bridgewater) #​41020
  • [cff14bcaef] - (SEMVER-MAJOR) buffer: refactor byteLength to remove outdated optimizations (Rongjian Zhang) #​38545
  • [cea76dbf33] - (SEMVER-MAJOR) buffer: expose Blob as a global (James M Snell) #​41270
  • [99c18f4786] - (SEMVER-MAJOR) buffer: graduate Blob from experimental (James M Snell) #​41270
  • [35d72bf4ec] - (SEMVER-MAJOR) build: make x86 Windows support temporarily experimental (Michaël Zasso) #​42666
  • [1134d8faf8] - (SEMVER-MAJOR) build: bump macOS deployment target to 10.15 (Richard Lau) #​42292
  • [27eb91d378] - (SEMVER-MAJOR) build: downgrade Windows 8.1 and server 2012 R2 to experimental (Michaël Zasso) #​42105
  • [26c973d4b3] - (SEMVER-MAJOR) child_process: improve argument validation (Rich Trott) #​41305
  • [38007df999] - (SEMVER-MAJOR) cluster: make kill to be just process.kill (Bar Admoni) #​34312
  • [aed18dfe59] - (SEMVER-MAJOR) crypto: cleanup validation (Mohammed Keyvanzadeh) #​39841
  • [e1fb6ae02f] - (SEMVER-MAJOR) crypto: prettify othername in PrintGeneralName (Tobias Nießen) #​42123
  • [36fb79030e] - (SEMVER-MAJOR) crypto: fix X509Certificate toLegacyObject (Tobias Nießen) #​42124
  • [563b2ed000] - (SEMVER-MAJOR) crypto: use RFC2253 format in PrintGeneralName (Tobias Nießen) #​42002
  • [18365d8ee6] - (SEMVER-MAJOR) crypto: change default check(Host|Email) behavior (Tobias Nießen) #​41600
  • [58f3fdcccd] - (SEMVER-MAJOR) deps: V8: cherry-pick semver-major commits from 10.2 (Michaël Zasso) #​42657
  • [fd4f80ce54] - (SEMVER-MAJOR) deps: update V8 to 10.1.124.6 (Michaël Zasso) #​42657
  • [974ab4060f] - (SEMVER-MAJOR) deps: update V8 to 9.8.177.9 (Michaël Zasso) #​41610
  • [270253c4e2] - (SEMVER-MAJOR) deps: update V8 to 9.7.106.18 (Michaël Zasso) #​40907
  • [08773e3c04] - (SEMVER-MAJOR) dns: remove dns.lookup and dnsPromises.lookup options type coercion (Antoine du Hamel) #​41431
  • [3671cc0432] - (SEMVER-MAJOR) doc: update minimum glibc requirements for Linux (Richard Lau) #​42659
  • [646e057680] - (SEMVER-MAJOR) doc: update AIX minimum supported arch (Richard Lau) #​42604
  • [0bac5478eb] - (SEMVER-MAJOR) fs: runtime deprecate string coercion in fs.write, fs.writeFileSync (Livia Medeiros) #​42607
  • [3caa2c1a00] - (SEMVER-MAJOR) http: refactor headersTimeout and requestTimeout logic (Paolo Insogna) #​41263
  • [eacd45656a] - (SEMVER-MAJOR) http: make TCP noDelay enabled by default (Paolo Insogna) #​42163
  • [4944ad0b9e] - (SEMVER-MAJOR) lib: enable fetch by default (Michaël Zasso) #​41811
  • [8c4b8b201a] - (SEMVER-MAJOR) lib: replace validator and error (Mohammed Keyvanzadeh) #​41678
  • [3c4ee5267a] - (SEMVER-MAJOR) module,repl: support 'node:'-only core modules (Colin Ihrig) #​42325
  • [3a26db9697] - (SEMVER-MAJOR) net: make server.address() return an integer for family (Antoine du Hamel) #​41431
  • [e6a7300a10] - (SEMVER-MAJOR) process: disallow some uses of Object.defineProperty() on process.env (Himself65) #​28006
  • [60b8e79599] - (SEMVER-MAJOR) process: runtime deprecate multipleResolves (Benjamin Gruenbaum) #​41896
  • [d36b60e69a] - (SEMVER-MAJOR) readline: fix question still called after closed (Xuguang Mei) #​42464
  • [58e645de63] - (SEMVER-MAJOR) stream: remove thenable support (Robert Nagy) #​40773
  • [560cbc5849] - (SEMVER-MAJOR) stream: expose web streams globals, remove runtime experimental warning (Antoine du Hamel) #​42225
  • [9fb7ac3bbd] - (SEMVER-MAJOR) stream: need to cleanup event listeners if last stream is readable (Xuguang Mei) #​41954
  • [ceaa299958] - (SEMVER-MAJOR) stream: revert revert map spec compliance (Benjamin Gruenbaum) #​41933
  • [fe7ca085a7] - (SEMVER-MAJOR) stream: throw invalid arg type from End Of Stream (Jithil P Ponnan) #​41766
  • [48e784043d] - (SEMVER-MAJOR) stream: don't emit finish after destroy (Robert Nagy) #​40852
  • [f2170253b6] - (SEMVER-MAJOR) stream: add errored and closed props (Robert Nagy) #​40696
  • [432d1b50e0] - (SEMVER-MAJOR) test: add initial test module (Colin Ihrig) #​42325
  • [92567283f4] - (SEMVER-MAJOR) timers: refactor internal classes to ES2015 syntax (Rabbit) #​37408
  • [65910c0d6c] - (SEMVER-MAJOR) tls: represent registeredID numerically always (Tobias Nießen) #​41561
  • [807c7e14f4] - (SEMVER-MAJOR) tls: move tls.parseCertString to end-of-life (Tobias Nießen) #​41479
  • [f524306077] - (SEMVER-MAJOR) url: throw on NULL in IPv6 hostname (Rich Trott) #​42313
  • [0187bc5cdc] - (SEMVER-MAJOR) v8: make v8.writeHeapSnapshot() error codes consistent (Darshan Sen) #​42577
  • [74b9baa426] - (SEMVER-MAJOR) v8: make writeHeapSnapshot throw if fopen fails (Antonio Román) #​41373
  • [ce4d3adf50] - (SEMVER-MAJOR) worker: expose BroadcastChannel as a global (James M Snell) #​41271
  • [6486a304d3] - (SEMVER-MAJOR) worker: graduate BroadcastChannel to supported (James M Snell) #​41271
Semver-Minor Commits
Semver-Patch Commits

v16.19.0

Compare Source

Notable Changes
OpenSSL 1.1.1s

This update is a bugfix release and does not address any security vulnerabilities.

Root certificates updated to NSS 3.85

Certificates added:

  • Autoridad de Certificacion Firmaprofesional CIF A626340
  • Certainly Root E1
  • Certainly Root R1
  • D-TRUST BR Root CA 1 2020
  • D-TRUST EV Root CA 1 2020
  • DigiCert TLS ECC P384 Root G5
  • DigiCert TLS RSA4096 Root G5
  • E-Tugra Global Root CA ECC v3
  • E-Tugra Global Root CA RSA v3
  • HiPKI Root CA - G1
  • ISRG Root X2
  • Security Communication ECC RootCA1
  • Security Communication RootCA3
  • Telia Root CA v2
  • vTrus ECC Root CA
  • vTrus Root CA

Certificates removed:

  • Cybertrust Global Root
  • DST Root CA X3
  • GlobalSign Root CA - R2
  • Hellenic Academic and Research Institutions RootCA 2011
Time zone update to 2022f

Time zone data has been updated to 2022f. This includes changes to Daylight Savings Time (DST) for Fiji and Mexico. For more information, see https://mm.icann.org/pipermail/tz-announce/2022-October/000075.html.

Other Notable Changes

Dependency updates:

Experimental features:

Commits

v16.18.1

Compare Source

This is a security release.

Notable changes

The following CVEs are fixed in this release:

  • CVE-2022-43548: DNS rebinding in --inspect via invalid octal IP address (Medium)

More detailed information on each of the vulnerabilities can be found in November 2022 Security Releases blog post.

Commits

v16.18.0

Compare Source

Notable changes
  • [1cc050eaa8] - (SEMVER-MINOR) assert: add getCalls and reset to callTracker (Moshe Atlow) #​44191
  • [e5c9975f11] - (SEMVER-MINOR) crypto: allow zero-length secret KeyObject (Filip Skokan) #​44201
  • [317cd051ce] - (SEMVER-MINOR) crypto: allow zero-length IKM in HKDF and in webcrypto PBKDF2 (Filip Skokan) #​44201
  • [f80bdc5ef3] - (SEMVER-MINOR) doc: deprecate modp1, modp2, and modp5 groups (Tobias Nießen) #​44588
  • [8398e98b1b] - (SEMVER-MINOR) http: make idle http parser count configurable (theanarkh) #​43974
  • [2cd2f56962] - (SEMVER-MINOR) http: throw error on content-length mismatch (sidwebworks) #​44378
  • [6be761e8a9] - (SEMVER-MINOR) lib: add diagnostics channel for process and worker (theanarkh) #​44045
  • [1400796cef] - (SEMVER-MINOR) net,tls: pass a valid socket on tlsClientError (Daeyeon Jeong) #​44021
  • [092239a7f1] - (SEMVER-MINOR) net: add local family (theanarkh) #​43975
  • [381e11e18e] - (SEMVER-MINOR) report: expose report public native apis (Chengzhong Wu) #​44255
  • [2ba547aa5b] - (SEMVER-MINOR) src: expose environment RequestInterrupt api (Chengzhong Wu) #​44362
  • [6ed3367155] - (SEMVER-MINOR) stream: add ReadableByteStream.tee() (Daeyeon Jeong) #​44505
  • [0fbedac6ce] - (SEMVER-MINOR) test_runner: add before/after/each hooks (Moshe Atlow) #​43730
  • [70563b53c5] - (SEMVER-MINOR) util: add maxArrayLength option to Set and Map (Kohei Ueno) #​43576
Commits

v16.17.1

Compare Source

This is a security release.

Notable changes

The following CVEs are fixed in this release:

More detailed information on each of the vulnerabilities can be found in September 22nd 2022 Security Releases blog post.

Commits

v16.17.0

Compare Source

Notable Changes
Experimental command-line argument parser API

Adds util.parseArgs helper for higher level command-line argument parsing.

Contributed by Benjamin Coe, John Gee, Darcy Clarke, Joe Sepi, Kevin Gibbons, Aaron Casanova, Jessica Nahulan, and Jordan Harband - #​42675

Experimental ESM Loader Hooks API

Node.js ESM Loader hooks now support multiple custom loaders, and composition is achieved via "chaining": foo-loader calls bar-loader calls qux-loader (a custom loader must now signal a short circuit when intentionally not calling the next). See the ESM docs for details.

Real-world use-cases are laid out for end-users with working examples in the article Custom ESM loaders: Who, what, when, where, why, how.

Contributed by Jacob Smith, Geoffrey Booth, and Bradley Farias - #​42623

Experimental test runner

The node:test module, which was initially introduced in Node.js v18.0.0, is now available with all the changes done to it up to Node.js v18.7.0.

Improved interoperability of the Web Crypto API

To better align Node.js' experimental implementation of the Web Crypto API with other runtimes, several changes were made:

  • Support for CFRG curves was added, with the 'Ed25519', 'Ed448', 'X25519', and 'X448' algorithms.
  • The proprietary 'NODE-DSA', 'NODE-DH', 'NODE-SCRYPT', 'NODE-ED25519', 'NODE-ED448', 'NODE-X25519', and 'NODE-X448' algorithms were removed.
  • The proprietary 'node.keyObject' import/export format was removed.

Contributed by Filip Skokan - #​42507, #​43310

Dependency updates
Other notable changes
  • [5f1e9e2030] - (SEMVER-MINOR) crypto: make authTagLength optional for CC20P1305 (Tobias Nießen) #​42427
  • [934077a137] - (SEMVER-MINOR) crypto: align webcrypto RSA key import/export with other implementations (Filip Skokan) #​42816
  • [7683e9623c] - (SEMVER-MINOR) dns: export error code constants from dns/promises (Feng Yu) #​43176
  • [302a134b83] - doc: deprecate coercion to integer in process.exit (Daeyeon Jeong) #​43738
  • [4884f18ce5] - (SEMVER-MINOR) doc: deprecate diagnostics_channel object subscribe method (Stephen Belanger) #​42714
  • [90f395dda9] - (SEMVER-MINOR) errors: add support for cause in aborterror (James M Snell) #​41008
  • [7a5de2cc0c] - (SEMVER-MINOR) events: expose CustomEvent on global with CLI flag (Daeyeon Jeong) #​43885
  • [087adbb7a3] - (SEMVER-MINOR) events: add CustomEvent (Daeyeon Jeong) #​43514
  • [979c98a3cb] - (SEMVER-MINOR) events: propagate abortsignal reason in new AbortError ctor in events (James M Snell) #​41008
  • [e04c8a4921] - (SEMVER-MINOR) fs: propagate abortsignal reason in new AbortSignal constructors (James M Snell) #​41008
  • [464830993e] - (SEMVER-MINOR) fs: make params in writing methods optional (LiviaMedeiros) #​42601
  • [3d7808ec3f] - (SEMVER-MINOR) fs: add read(buffer[, options]) versions (LiviaMedeiros) #​42768
  • [082a2630fd] - (SEMVER-MINOR) http: add drop request event for http server (theanarkh) #​43806
  • [5a74939770] - (SEMVER-MINOR) http: add diagnostics channel for http client (theanarkh) #​43580
  • [f05fd1a423] - (SEMVER-MINOR) http: add perf_hooks detail for http request and client (theanarkh) #​43361
  • [9d1b4b7e29] - (SEMVER-MINOR) http: add uniqueHeaders option to request and createServer (Paolo Insogna) #​41397
  • [fa5ac5a2eb] - (SEMVER-MINOR) http2: propagate abortsignal reason in new AbortError constructor (James M Snell) #​41008
  • [94070f152e] - (SEMVER-MINOR) http2: compat support for array headers (OneNail) #​42901
  • [36dd39dec0] - (SEMVER-MINOR) lib: propagate abortsignal reason in new AbortError constructor in blob (James M Snell) #​41008
  • [8adf7d5e91] - (SEMVER-MINOR) lib: add abortSignal.throwIfAborted() (James M Snell) #​40951
  • [3c1ed86840] - (SEMVER-MINOR) lib: improved diagnostics_channel subscribe/unsubscribe (Stephen Belanger) #​42714
  • [e6186af5cc] - (SEMVER-MINOR) module: add isBuiltIn method (hemanth.hm) #​43396
  • [3d851d6d6b] - (SEMVER-MINOR) module,repl: support 'node:'-only core modules (Colin Ihrig) #​42325
  • [303bd08d88] - (SEMVER-MINOR) net: add drop event for net server (theanarkh) #​43582
  • [da03e9f484] - (SEMVER-MINOR) net: add ability to reset a tcp socket (pupilTong) #​43112
  • [73f852e1e3] - (SEMVER-MINOR) node-api: emit uncaught-exception on unhandled tsfn callbacks (Chengzhong Wu) #​36510
  • [6dcdcd7f50] - (SEMVER-MINOR) perf_hooks: add PerformanceResourceTiming (RafaelGSS) #​42725
  • [5750358872] - (SEMVER-MINOR) report: add more heap infos in process report (theanarkh) #​43116
  • [e7b99e8c8d] - (SEMVER-MINOR) src: add --openssl-legacy-provider option (Daniel Bevenius) #​40478
  • [1281a48b89] - (SEMVER-MINOR) src: define fs.constants.S_IWUSR & S_IRUSR for Win (Liviu Ionescu) #​42757
  • [9ea9797d34] - (SEMVER-MINOR) src,doc,test: add --openssl-shared-config option (Daniel Bevenius) #​43124
  • [046debaee0] - (SEMVER-MINOR) stream: use cause options in AbortError constructors (James M Snell) #​41008
  • [6641fda10a] - (SEMVER-MINOR) stream: add iterator helper find (Nitzan Uziely) #​41849
  • [edec73032c] - (SEMVER-MINOR) stream: add writableAborted (Robert Nagy) #​40802
  • [2aae868fa2] - (SEMVER-MINOR) timers: propagate signal.reason in awaitable timers (James M Snell) #​41008
  • [513f52445b] - (SEMVER-MINOR) v8: add v8.startupSnapshot utils (Joyee Cheung) #​43329
  • [a8eca74450] - (SEMVER-MINOR) v8: export more fields in getHeapStatistics (theanarkh) #​42784
  • [845279e331] - (SEMVER-MINOR) worker: add hasRef() to MessagePort (Darshan Sen) #​42849
Commits
Semver-minor commits
  • [58279d5b76] - (SEMVER-MINOR) buffer: graduate Blob from experimental (James M Snell) #​41270
  • [72a0c5c743] - (SEMVER-MINOR) crypto: remove Node.js-specific webcrypto extensions (Filip Skokan) #​43310
  • [2e3a69a2ba] - (SEMVER-MINOR) crypto: add CFRG curves to Web Crypto API (Filip Skokan) #​42507
  • [5f1e9e2030] - (SEMVER-MINOR) crypto: make authTagLength optional for CC20P1305 (Tobias Nießen) #​42427
  • [934077a137] - (SEMVER-MINOR) crypto: align webcrypto RSA key import/export with other implementations (Filip Skokan) #​42816
  • [7683e9623c] - (SEMVER-MINOR) dns: export error code constants from dns/promises (Feng Yu) #​43176
  • [4884f18ce5] - (SEMVER-MINOR) doc: deprecate diagnostics_channel object subscribe method (Stephen Belanger) #​42714
  • [90f395dda9] - (SEMVER-MINOR) errors: add support for cause in aborterror (James M Snell) #​41008
  • [247a6f6e85] - (SEMVER-MINOR) esm: add chaining to loaders (Jacob Smith) #​42623
  • [7a5de2cc0c] - (SEMVER-MINOR) events: expose CustomEvent on global with CLI flag (Daeyeon Jeong) #​43885
  • [087adbb7a3] - (SEMVER-MINOR) events: add CustomEvent (Daeyeon Jeong) #​43514
  • [979c98a3cb] - (SEMVER-MINOR) events: propagate abortsignal reason in new AbortError ctor in events (James M Snell) #​41008
  • [e04c8a4921] - (SEMVER-MINOR) fs: propagate abortsignal reason in new AbortSignal constructors (James M Snell) #​41008
  • [464830993e] - (SEMVER-MINOR) fs: make params in writing methods optional (LiviaMedeiros) #​42601
  • [3d7808ec3f] - (SEMVER-MINOR) fs: add read(buffer[, options]) versions (LiviaMedeiros) #​42768
  • [082a2630fd] - (SEMVER-MINOR) http: add drop request event for http server (theanarkh) #​43806
  • [5a74939770] - (SEMVER-MINOR) http: add diagnostics channel for http client (theanarkh) #​43580
  • [f05fd1a423] - (SEMVER-MINOR) http: add perf_hooks detail for http request and client (theanarkh) #​43361
  • [9d1b4b7e29] - (SEMVER-MINOR) http: add uniqueHeaders option to request and createServer (Paolo Insogna) #​41397
  • [fa5ac5a2eb] - (SEMVER-MINOR) http2: propagate abortsignal reason in new AbortError constructor (James M Snell) #​41008
  • [94070f152e] - (SEMVER-MINOR) http2: compat support for array headers (OneNail) #​42901
  • [36dd39dec0] - (SEMVER-MINOR) lib: propagate abortsignal reason in new AbortError constructor in blob (James M Snell) #​41008
  • [8adf7d5e91] - (SEMVER-MINOR) lib: add abortSignal.throwIfAborted() (James M Snell) #​40951
  • [3c1ed86840] - (SEMVER-MINOR) lib: improved diagnostics_channel subscribe/unsubscribe (Stephen Belanger) #​42714
  • [e6186af5cc] - (SEMVER-MINOR) module: add isBuiltIn method (hemanth.hm) #​43396
  • [3d851d6d6b] - (SEMVER-MINOR) module,repl: support 'node:'-only core modules (Colin Ihrig) #​42325
  • [303bd08d88] - (SEMVER-MINOR) net: add drop event for net server (theanarkh) #​43582
  • [da03e9f484] - (SEMVER-MINOR) net: add ability to reset a tcp socket (pupilTong) #​43112
  • [73f852e1e3] - (SEMVER-MINOR) node-api: emit uncaught-exception on unhandled tsfn callbacks (Chengzhong Wu) #​36510
  • [6dcdcd7f50] - (SEMVER-MINOR) perf_hooks: add PerformanceResourceTiming (RafaelGSS) #​42725
  • [5750358872] - (SEMVER-MINOR) report: add more heap infos in process report (theanarkh) #​43116
  • [e7b99e8c8d] - (SEMVER-MINOR) src: add --openssl-legacy-provider option (Daniel Bevenius) #​40478
  • [1281a48b89] - (SEMVER-MINOR) src: define fs.constants.S_IWUSR & S_IRUSR for Win (Liviu Ionescu) #​42757
  • [9ea9797d34] - (SEMVER-MINOR) src,doc,test: add --openssl-shared-config option (Daniel Bevenius) #​43124
  • [046debaee0] - (SEMVER-MINOR) stream: use cause options in AbortError constructors (James M Snell) #​41008
  • [6641fda10a] - (SEMVER-MINOR) stream: add iterator helper find (Nitzan Uziely) #​41849
  • [edec73032c] - (SEMVER-MINOR) stream: add writableAborted (Robert Nagy) #​40802
  • [9a530832cb] - (SEMVER-MINOR) test: add initial test module (Colin Ihrig) #​42325
  • [61a2ddc597] - (SEMVER-MINOR) test_runner: expose describe and it (Moshe Atlow) #​43420
  • [cd6f24be4c] - (SEMVER-MINOR) test_runner: add initial CLI runner (Colin Ihrig) #​42658
  • [a4b277cb4d] - (SEMVER-MINOR) test_runner: support 'only' tests (Colin Ihrig) #​42514
  • [2aae868fa2] - (SEMVER-MINOR) timers: propagate signal.reason in awaitable timers (James M Snell) #​41008
  • [432e3054be] - (SEMVER-MINOR) util: add tokens to parseArgs (John Gee) #​43459
  • [a1e122be62] - (SEMVER-MINOR) util: add parseArgs module (Benjamin Coe) #​42675
  • [513f52445b] - (SEMVER-MINOR) v8: add v8.startupSnapshot utils (Joyee Cheung) #​43329
  • [a8eca74450] - (SEMVER-MINOR) v8: export more fields in getHeapStatistics (theanarkh) #​42784
  • [845279e331] - (SEMVER-MINOR) worker: add hasRef() to MessagePort (Darshan Sen) #​42849
Semver-patch commits
Documentation commits
Other commits

v16.16.0

Compare Source

This is a security release.

Notable changes
  • deps:
    • upgrade openssl sources to OpenSSL_1_1_1q (RafaelGSS) #​43692
  • src:
    • add OpenSSL config appname (Daniel Bevenius) #​43124
Commits

v16.15.1

Compare Source

Notable Changes
Commits

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - 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.

Merge request reports

Loading