good morning!!!!

Skip to content

Update dependency node to v18.20.4

autocafe requested to merge renovate/node-18.x into master

This MR contains the following updates:

Package Update Change
node (source) minor 18.0.0 -> 18.20.4

Release Notes

nodejs/node (node)

v18.20.4: 2024-07-08, Version 18.20.4 'Hydrogen' (LTS), @​RafaelGSS

Compare Source

This is a security release.

Notable Changes
  • CVE-2024-36138 - Bypass incomplete fix of CVE-2024-27980 (High)
  • CVE-2024-22020 - Bypass network import restriction via data URL (Medium)
Commits

v18.20.3: 2024-05-21, Version 18.20.3 'Hydrogen' (LTS), @​richardlau

Compare Source

Notable Changes

This release fixes a regression introduced in Node.js 18.19.0 where http.server.close() was incorrectly closing idle connections.

A fix has also been included for compiling Node.js from source with newer versions of Clang.

The list of keys used to sign releases has been synchronized with the current list from the main branch.

Updated dependencies
  • acorn updated to 8.11.3.
  • acorn-walk updated to 8.3.2.
  • ada updated to 2.7.8.
  • c-ares updated to 1.28.1.
  • corepack updated to 0.28.0.
  • nghttp2 updated to 1.61.0.
  • ngtcp2 updated to 1.3.0.
  • npm updated to 10.7.0. Includes a fix from npm@10.5.1 to limit the number of open connections npm/cli#7324.
  • simdutf updated to 5.2.4.
  • zlib updated to 1.3.0.1-motley-7d77fb7.
Commits

v18.20.2: 2024-04-10, Version 18.20.2 'Hydrogen' (LTS), @​RafaelGSS

Compare Source

This is a security release.

Notable Changes
  • CVE-2024-27980 - Command injection via args parameter of child_process.spawn without shell option enabled on Windows
Commits

v18.20.1: 2024-04-03, Version 18.20.1 'Hydrogen' (LTS), @​RafaelGSS

Compare Source

This is a security release.

Notable Changes
  • CVE-2024-27983 - Assertion failed in node::http2::Http2Session::~Http2Session() leads to HTTP/2 server crash- (High)
  • CVE-2024-27982 - HTTP Request Smuggling via Content Length Obfuscation - (Medium)
  • llhttp version 9.2.1
  • undici version 5.28.4
Commits

v18.20.0: 2024-03-26, Version 18.20.0 'Hydrogen' (LTS), @​richardlau

Compare Source

Notable Changes
Added support for import attributes

Support has been added for import attributes, to replace the old import assertions syntax. This will aid migration by making the new syntax available across all currently supported Node.js release lines.

This adds the with keyword which should be used in place of the previous assert keyword, which will be removed in a future semver-major Node.js release.

For example,

import "foo" assert { ... }

should be replaced with

import "foo" with { ... }

For more details, see

Contributed by Nicolò Ribaudo in #​51136 and Antoine du Hamel in #​50140.

Doc deprecation for dirent.path

Please use newly added dirent.parentPath instead.

Contributed by Antoine du Hamel in #​50976 and #​51020.

Experimental node-api feature flags

Introduces an experimental feature to segregate finalizers that affect GC state. A new type called node_api_nogc_env has been introduced as the const version of napi_env and node_api_nogc_finalize as a variant of napi_finalize that accepts a node_api_nogc_env as its first argument.

This feature can be turned off by defining NODE_API_EXPERIMENTAL_NOGC_ENV_OPT_OUT.

Contributed by Gabriel Schulhof in #​50060.

Root certificates updated to NSS 3.98

Certificates added:

  • Telekom Security TLS ECC Root 2020
  • Telekom Security TLS RSA Root 2023

Certificates removed:

  • Security Communication Root CA
Updated dependencies
  • ada updated to 2.7.6.
  • base64 updated to 0.5.2.
  • c-ares updated to 1.27.0.
  • corepack updated to 0.25.2.
  • ICU updated to 74.2. Includes CLDR 44.1 and Unicode 15.1.
  • npm updated to 10.5.0. Fixes a regression in signals not being passed onto child processes.
  • simdutf8 updated to 4.0.8.
  • Timezone updated to 2024a.
  • zlib updated to 1.3.0.1-motley-40e35a7.
vm: fix V8 compilation cache support for vm.Script

Previously repeated compilation of the same source code using vm.Script stopped hitting the V8 compilation cache after v16.x when support for importModuleDynamically was added to vm.Script, resulting in a performance regression that blocked users (in particular Jest users) from upgrading from v16.x.

The recent fixes allow the compilation cache to be hit again for vm.Script when --experimental-vm-modules is not used even in the presence of the importModuleDynamically option, so that users affected by the performance regression can now upgrade. Ongoing work is also being done to enable compilation cache support for vm.CompileFunction.

Contributed by Joyee Cheung in #​49950 and #​50137.

Commits

v18.19.1: 2024-02-14, Version 18.19.1 'Hydrogen' (LTS), @​RafaelGSS prepared by @​marco-ippolito

Compare Source

Notable changes

This is a security release.

Notable changes
  • CVE-2024-21892 - Code injection and privilege escalation through Linux capabilities- (High)
  • CVE-2024-22019 - http: Reading unprocessed HTTP request with unbounded chunk extension allows DoS attacks- (High)
  • CVE-2023-46809 - Node.js is vulnerable to the Marvin Attack (timing variant of the Bleichenbacher attack against PKCS#1 v1.5 padding) - (Medium)
  • CVE-2024-22025 - Denial of Service by resource exhaustion in fetch() brotli decoding - (Medium)
  • undici version 5.28.3
  • npm version 10.2.4
Commits

v18.19.0: 2023-11-29, Version 18.19.0 'Hydrogen' (LTS), @​targos

Compare Source

Notable Changes
npm updated to v10

After two months of baking time in Node.js 20, npm 10 is backported, so that all release lines include a supported version of npm. This release includes npm v10.2.3.

Refer to nodejs/Release#884 for the plan to land npm 10.

ESM and customization hook changes
Leverage loaders when resolving subsequent loaders

Loaders now apply to subsequent loaders, for example: --experimental-loader ts-node --experimental-loader loader-written-in-typescript.

Contributed by Maël Nison in #​43772.

New node:module API register for module customization hooks; new initialize hook

There is a new API register available on node:module to specify a file that exports module customization hooks, and pass data to the hooks, and establish communication channels with them. The “define the file with the hooks” part was previously handled by a flag --experimental-loader, but when the hooks moved into a dedicated thread in 20.0.0 there was a need to provide a way to communicate between the main (application) thread and the hooks thread. This can now be done by calling register from the main thread and passing data, including MessageChannel instances.

We encourage users to migrate to an approach that uses --import with register, such as:

node --import ./file-that-calls-register.js ./app.js

Using --import ensures that the customization hooks are registered before any application code runs, even the entry point.

Contributed by João Lenon and Jacob Smith in #​46826, Izaak Schroeder and Jacob Smith in #​48842 and #​48559.

import.meta.resolve unflagged

In ES modules, import.meta.resolve(specifier) can be used to get an absolute URL string to which specifier resolves, similar to require.resolve in CommonJS. This aligns Node.js with browsers and other server-side runtimes.

Contributed by Guy Bedford in #​49028.

--experimental-default-type flag to flip module defaults

The new flag --experimental-default-type can be used to flip the default module system used by Node.js. Input that is already explicitly defined as ES modules or CommonJS, such as by a package.json "type" field or .mjs/.cjs file extension or the --input-type flag, is unaffected. What is currently implicitly CommonJS would instead be interpreted as ES modules under --experimental-default-type=module:

  • String input provided via --eval or STDIN, if --input-type is unspecified.

  • Files ending in .js or with no extension, if there is no package.json file present in the same folder or any parent folder.

  • Files ending in .js or with no extension, if the nearest parent package.json field lacks a type field; unless the folder is inside a node_modules folder.

In addition, extensionless files are interpreted as Wasm if --experimental-wasm-modules is passed and the file contains the "magic bytes" Wasm header.

Contributed by Geoffrey Booth in #​49869.

Other ESM-related changes
  • [ed2d46f4cc] - doc: move and rename loaders section (Geoffrey Booth) #​49261
  • [92734d4480] - esm: use import attributes instead of import assertions (Antoine du Hamel) #​50140
  • [e96f7ef881] - (SEMVER-MINOR) vm: use import attributes instead of import assertions (Antoine du Hamel) #​50141
Test runner changes

Many changes to the built-in test runner have been backported. This includes the following additions:

Other notable changes
  • [0c4a84e8e9] - (SEMVER-MINOR) deps: update uvwasi to 0.0.19 (Node.js GitHub Bot) #​49908
  • [fae60c5841] - stream: use bitmap in readable state (Benjamin Gruenbaum) #​49745
  • [17246be158] - (SEMVER-MINOR) lib: add api to detect whether source-maps are enabled (翠 / green) #​46391
  • [2e9f7284a1] - (SEMVER-MINOR) lib: add tracing channel to diagnostics_channel (Stephen Belanger) #​44943
  • [cc7bf1f641] - (SEMVER-MINOR) src: add cjs_module_lexer_version base64_version (Jithil P Ponnan) #​45629
  • [b5d16cd8f0] - (SEMVER-MINOR) tls: add ALPNCallback server option for dynamic ALPN negotiation (Tim Perry) #​45190
Commits

v18.18.2: 2023-10-13, Version 18.18.2 'Hydrogen' (LTS), @​RafaelGSS

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 October 2023 Security Releases blog post.

Commits

v18.18.1: 2023-10-10, Version 18.18.1 'Hydrogen' (LTS), @​richardlau

Compare Source

Notable Changes

This release addresses some regressions that appeared in Node.js 18.18.0:

  • (Windows) FS can not handle certain characters in file name #​48673
  • 18 and 20 node images give error - Text file busy (after re-build images) nodejs/docker-node#1968
  • libuv update in 18.18.0 breaks webpack's thread-loader #​49911

The libuv 1.45.0 and 1.46.0 updates that were released in Node.js 18.18.0 have been temporarily reverted.

Commits

v18.18.0: 2023-09-18, Version 18.18.0 'Hydrogen' (LTS), @​ruyadorno

Compare Source

Notable Changes
Commits

v18.17.1: 2023-08-09, Version 18.17.1 'Hydrogen' (LTS), @​RafaelGSS

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 August 2023 Security Releases blog post.

Commits

v18.17.0: 2023-07-18, Version 18.17.0 'Hydrogen' (LTS), @​danielleadams

Compare Source

Notable Changes
Ada 2.0

Node.js v18.17.0 comes with the latest version of the URL parser, Ada. This update brings significant performance improvements to URL parsing, including enhancements to the url.domainToASCII and url.domainToUnicode functions in node:url.

Ada 2.0 has been integrated into the Node.js codebase, ensuring that all parts of the application can benefit from the improved performance. Additionally, Ada 2.0 features a significant performance boost over its predecessor, Ada 1.0.4, while also eliminating the need for the ICU requirement for URL hostname parsing.

Contributed by Yagiz Nizipli and Daniel Lemire in #​47339

Web Crypto API

Web Crypto API functions' arguments are now coerced and validated as per their WebIDL definitions like in other Web Crypto API implementations. This further improves interoperability with other implementations of Web Crypto API.

Contributed by Filip Skokan in #​46067

  • crypto:
    • update root certificates to NSS 3.89 (Node.js GitHub Bot) #​47659
  • dns:
    • (SEMVER-MINOR) expose getDefaultResultOrder (btea) #​46973
  • doc:
    • add ovflowd to collaborators (Claudio Wunder) #​47844
    • add KhafraDev to collaborators (Matthew Aitken) #​47510
  • events:
    • (SEMVER-MINOR) add getMaxListeners method (Matthew Aitken) #​47039
  • fs:
    • (SEMVER-MINOR) add support for mode flag to specify the copy behavior (Tetsuharu Ohzeki) #​47084
    • (SEMVER-MINOR) add recursive option to readdir and opendir (Ethan Arrowood) #​41439
    • (SEMVER-MINOR) add support for mode flag to specify the copy behavior (Tetsuharu Ohzeki) #​47084
    • (SEMVER-MINOR) implement byob mode for readableWebStream() (Debadree Chatterjee) #​46933
  • http:
    • (SEMVER-MINOR) prevent writing to the body when not allowed by HTTP spec (Gerrard Lindsay) #​47732
    • (SEMVER-MINOR) remove internal error in assignSocket (Matteo Collina) #​47723
    • (SEMVER-MINOR) add highWaterMark opt in http.createServer (HinataKah0) #​47405
  • lib:
    • (SEMVER-MINOR) add webstreams to Duplex.from() (Debadree Chatterjee) #​46190
    • (SEMVER-MINOR) implement AbortSignal.any() (Chemi Atlow) #​47821
  • module:
    • change default resolver to not throw on unknown scheme (Gil Tayar) #​47824
  • node-api:
    • (SEMVER-MINOR) define version 9 (Chengzhong Wu) #​48151
    • (SEMVER-MINOR) deprecate napi_module_register (Vladimir Morozov) #​46319
  • stream:
    • (SEMVER-MINOR) preserve object mode in compose (Raz Luvaton) #​47413
    • (SEMVER-MINOR) add setter & getter for default highWaterMark (#​46929) (Robert Nagy) #​46929
  • test:
    • unflake test-vm-timeout-escape-nexttick (Santiago Gimeno) #​48078
  • test_runner:
    • (SEMVER-MINOR) add shorthands to test (Chemi Atlow) #​47909
    • (SEMVER-MINOR) support combining coverage reports (Colin Ihrig) #​47686
    • (SEMVER-MINOR) execute before hook on test (Chemi Atlow) #​47586
    • (SEMVER-MINOR) expose reporter for use in run api (Chemi Atlow) #​47238
  • tools:
    • update LICENSE and license-builder.sh (Santiago Gimeno) #​48078
  • url:
    • (SEMVER-MINOR) implement URL.canParse (Matthew Aitken) #​47179
  • wasi:
    • (SEMVER-MINOR) no longer require flag to enable wasi (Michael Dawson) #​47286
Commits

v18.16.1: 2023-06-20, Version 18.16.1 'Hydrogen' (LTS), @​RafaelGSS

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 June 2023 Security Releases blog post.

Commits

v18.16.0: 2023-04-12, Version 18.16.0 'Hydrogen' (LTS), @​danielleadams

Compare Source

Notable changes
Add initial support for single executable applications

Compile a JavaScript file into a single executable application:

$ echo 'console.log(`Hello, ${process.argv[2]}!`);' > hello.js

$ cp $(command -v node) hello

### On systems other than macOS:
$ npx postject hello NODE_JS_CODE hello.js \
    --sentinel-fuse NODE_JS_FUSE_fce680ab2cc467b6e072b8b5df1996b2

### On macOS:
$ npx postject hello NODE_JS_CODE hello.js \
    --sentinel-fuse NODE_JS_FUSE_fce680ab2cc467b6e072b8b5df1996b2 \
    --macho-segment-name NODE_JS

$ ./hello world
Hello, world!

Contributed by Darshan Sen in #​45038

Replace url parser with Ada

Node.js gets a new URL parser called Ada that is compliant with the WHATWG URL Specification and provides more than 100% performance improvement to the existing implementation.

Contributed by Yagiz Nizipli in #​46410

Other notable changes
  • buffer:
    • (SEMVER-MINOR) add Buffer.copyBytesFrom(...) (James M Snell) #​46500
  • doc:
    • add marco-ippolito to collaborators (Marco Ippolito) #​46816
    • add debadree25 to collaborators (Debadree Chatterjee) #​46716
    • add deokjinkim to collaborators (Deokjin Kim) #​46444
  • events:
    • (SEMVER-MINOR) add listener argument to listenerCount (Paolo Insogna) #​46523
  • lib:
    • (SEMVER-MINOR) add AsyncLocalStorage.bind() and .snapshot() (flakey5) #​46387
    • (SEMVER-MINOR) add aborted() utility function (Debadree Chatterjee) #​46494
  • src:
    • (SEMVER-MINOR) allow optional Isolate termination in node::Stop() (Shelley Vohr) #​46583
    • (SEMVER-MINOR) allow embedder control of code generation policy (Shelley Vohr) #​46368
  • stream:
    • (SEMVER-MINOR) add abort signal for ReadableStream and WritableStream (Debadree Chatterjee) #​46273
  • tls:
    • (SEMVER-MINOR) support automatic DHE (Tobias Nießen) #​46978
  • url:
    • (SEMVER-MINOR) implement URLSearchParams size getter (James M Snell) #​46308
  • worker:
    • (SEMVER-MINOR) add support for worker name in inspector and trace_events (Debadree Chatterjee) #​46832
Commits

v18.15.0: 2023-03-07, Version 18.15.0 'Hydrogen' (LTS), @​BethGriggs prepared by @​juanarbol

Compare Source

Notable Changes
Commits

v18.14.2: 2023-02-21, Version 18.14.2 'Hydrogen' (LTS), @​MylesBorins

Compare Source

Notable Changes
Commits

v18.14.1: 2023-02-16, Version 18.14.1 'Hydrogen' (LTS), @​RafaelGSS prepared by @​juanarbol

Compare Source

This is a security release.

Notable Changes

The following CVEs are fixed in this release:

  • CVE-2023-23918: Node.js Permissions policies can be bypassed via process.mainModule (High)
  • CVE-2023-23919: Node.js OpenSSL error handling issues in nodejs crypto library (Medium)
  • CVE-2023-23936: Fetch API in Node.js did not protect against CRLF injection in host headers (Medium)
  • CVE-2023-24807: Regular Expression Denial of Service in Headers in Node.js fetch API (Low)
  • CVE-2023-23920: Node.js insecure loading of ICU data through ICU_DATA environment variable (Low)

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

This security release includes OpenSSL security updates as outlined in the recent OpenSSL security advisory.

Commits

v18.14.0: 2023-02-02, Version 18.14.0 'Hydrogen' (LTS), @​BethGriggs prepared by @​juanarbol

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: 2023-01-05, Version 18.13.0 'Hydrogen' (LTS), @​danielleadams

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: 2022-11-04, Version 18.12.1 'Hydrogen' (LTS), @​juanarbol

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: 2022-10-25, Version 18.12.0 'Hydrogen' (LTS), @​ruyadorno and @​RafaelGSS

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: 2022-10-13, Version 18.11.0 (Current), @​danielleadams

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: 2022-09-28, Version 18.10.0 (Current), @​RafaelGSS

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: 2022-09-23, Version 18.9.1 (Current), @​RafaelGSS

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: 2022-09-08, Version 18.9.0 (Current), @​RafaelGSS

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: 2022-08-24, Version 18.8.0 (Current), @​ruyadorno

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: 2022-07-26, Version 18.7.0 (Current), @​danielleadams

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: 2022-07-13, Version 18.6.0 (Current), @​targos

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: 2022-07-07, Version 18.5.0 (Current), @​RafaelGSS

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: 2022-06-16, Version 18.4.0 (Current), @​danielleadams

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: 2022-06-01, Version 18.3.0 (Current), @​bengl

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: 2022-05-17, Version 18.2.0 (Current), @​BethGriggs prepared by @​RafaelGSS

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: 2022-05-03, Version 18.1.0 (Current), @​targos

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 this update again.


  • [ ] If you want to rebase/retry this MR, check this box

This MR has been generated by Renovate Bot.

Merge request reports