Update Node.js to v18 #211
Loading…
Reference in New Issue
No description provided.
Delete Branch "renovate/node-18.x"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
16.19.1-bullseye-slim
->18.15.0-bullseye-slim
Release Notes
nodejs/node
v18.15.0
: 2023-03-07, Version 18.15.0 'Hydrogen' (LTS), @BethGriggs prepared by @juanarbolCompare Source
Notable Changes
Commits
v18.14.2
: 2023-02-21, Version 18.14.2 'Hydrogen' (LTS), @MylesBorinsCompare Source
Notable Changes
Commits
v18.14.1
: 2023-02-16, Version 18.14.1 'Hydrogen' (LTS), @RafaelGSS prepared by @juanarbolCompare 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 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 @juanarbolCompare Source
Notable changes
Updated npm to 9.3.1
Based on the list of guidelines we've established on integrating
npm
andnode
,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 anybreaking changes.
Engines
npm
is now compatible with the following semver range for node:^14.17.0 || ^16.13.0 || >=18.0.0
Filesystem
npm
will no longer attempt to modify ownership of files it creates.Auth
registry found in a config file is no longer supported and will throw errors.
Login
sso
,saml
&legacy
have been consolidated into"legacy"
.auth-type
defaults to"web"
login
andadduser
are now separate commands that send different data to the registry.auth-type
config valuesweb
andlegacy
only try their respective methods,npm no longer tries them all and waits to see which one doesn't fail.
Tarball Packing
npm pack
now follows a strict order of operations when applying ignore rules.If a
files
array is present in thepackage.json
, then rules in.gitignore
and
.npmignore
files from the root will be ignored.Display/Debug/Timing Info
HEAD
instead ofmaster
as the default ref.timing
has been removed as a value for--loglevel
.--timing
will show timing information regardless of--loglevel
, except when--silent
.--timing
flag,npm
now writes timing data to a filealongside the debug log data, respecting the
logs-dir
option and fallingback to
<CACHE>/_logs/
dir, instead of directly inside the cache directory.will create a uniquely named
<ID>-timing.json
file, with the<ID>
portionbeing the same as the debug log.
npm
now outputs some json errors on stdout. Previouslynpm
would outputall 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
--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 (usenpx
ornpm exec
to execute binaries).Other notable changes
Commits
v18.13.0
: 2023-01-05, Version 18.13.0 'Hydrogen' (LTS), @danielleadamsCompare 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
andFormData
. It contains two properties that Blobs do not have:lastModified
, the last time the file was modified in ms, andname
, 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-levelmock
object.
Contributed by Colin Ihrig in #45326
Other notable changes
url.parse
(Antoine du Hamel) #45576Commits
v18.12.1
: 2022-11-04, Version 18.12.1 'Hydrogen' (LTS), @juanarbolCompare 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 November 2022 Security Releases blog post.
Commits
v18.12.0
: 2022-10-25, Version 18.12.0 'Hydrogen' (LTS), @ruyadorno and @RafaelGSSCompare 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), @danielleadamsCompare 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
FileHandle.prototype.readLines
(Antoine du Hamel) #42590Commits
v18.10.0
: 2022-09-28, Version 18.10.0 (Current), @RafaelGSSCompare Source
Notable changes
policy
docs to thepermissions
scope (Rafael Gonzaga) #44222ReadableByteStream.tee()
(Daeyeon Jeong) #44505Commits
v18.9.1
: 2022-09-23, Version 18.9.1 (Current), @RafaelGSSCompare 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.
llhttp updated to 6.0.10
llhttp
is updated to 6.0.10 which includes fixes for the following vulnerabilities.llhttp
parser in thehttp
module does not correctly parse and validate Transfer-Encoding headers. This can lead to HTTP Request Smuggling (HRS).llhttp
parser in thehttp
module does not correctly handle multi-line Transfer-Encoding headers. This can lead to HTTP Request Smuggling (HRS).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), @RafaelGSSCompare Source
Notable changes
Commits
v18.8.0
: 2022-08-24, Version 18.8.0 (Current), @ruyadornoCompare 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:
To restore application state from snapshot.blob, with index.js as the entry point script for the deserialized application:
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:Contributed by Joyee Cheung in #38905
Other notable changes
npm query
command--trace-atomics-wait
(Keyhan Vakil) #44093tlsClientError
(Daeyeon Jeong) #44021Commits
v18.7.0
: 2022-07-26, Version 18.7.0 (Current), @danielleadamsCompare Source
Notable changes
CustomEvent
(Daeyeon Jeong) #43514Commits
v18.6.0
: 2022-07-13, Version 18.6.0 (Current), @targosCompare 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
callsbar-loader
callsqux-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), @RafaelGSSCompare Source
This is a security release.
Notable Changes
Commits
v18.4.0
: 2022-06-16, Version 18.4.0 (Current), @danielleadamsCompare Source
Notable Changes
'IPv4'
and'IPv6'
forfamily
(Antoine du Hamel) #43054Commits
v18.3.0
: 2022-06-01, Version 18.3.0 (Current), @benglCompare Source
Notable Changes
Commits
v18.2.0
: 2022-05-17, Version 18.2.0 (Current), @BethGriggs prepared by @RafaelGSSCompare 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), @targosCompare Source
Notable Changes
Commits
v18.0.0
: 2022-04-19, Version 18.0.0 (Current), @BethGriggsCompare 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
fs.write
,fs.writeFileSync
(Livia Medeiros) #42607dns.lookup
anddnsPromises.lookup
options type coercion (Antoine du Hamel) #41431fetch (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.
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 to60000
(60 seconds) by default.server.requestTimeout
which sets the timeout value in milliseconds for receiving the entire request from the client is now set to300000
(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:
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 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:
findLast
andfindLastIndex
array methods.Intl.Locale
API.Intl.supportedValuesOf
function.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
server.address()
return an integer forfamily
(Antoine du Hamel) #41431Semver-Major Commits
Semver-Minor Commits
Semver-Patch Commits
v17.9.1
: 2022-06-01, Version 17.9.1 (Current), @ruyadornoCompare Source
Notable Changes
Update to 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 17.
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.
Commits
v17.9.0
: 2022-04-07, Version 17.9.0 (Current), @BethGriggs prepared by @juanarbolCompare Source
Notable Changes
Commits
v17.8.0
: 2022-03-22, Version 17.8.0 (Current), @benglCompare Source
Notable Changes
Commits
v17.7.2
: 2022-03-17, Version 17.7.2 (Current), @richardlauCompare Source
This is a security release.
Notable Changes
Update to OpenSSL 3.0.2, which addresses the following vulnerability:
BN_mod_sqrt()
reachable when parsing certificates (High)(CVE-2022-0778)More details are available at https://www.openssl.org/news/secadv/20220315.txt
Commits
v17.7.1
: 2022-03-10, Version 17.7.1 (Current), @BethGriggs prepared by @sxaCompare Source
Notable Changes
Fixed regression in url.resolve()
This release fixes an issue introduced in Node.js v17.7.0 with some URLs
that contain
@
. This issue affected yarn 1. This version reverts thechange that introduced the regression.
Commits
v17.6.0
: 2022-02-22, Version 17.6.0 (Current), @BethGriggs prepared by @benglCompare Source
Notable Changes
Dependency Updates
New Collaborators
Commits
v17.5.0
: 2022-02-10, Version 17.5.0 (Current), @ruyadornoCompare Source
Notable Changes
Add fetch API
Adds experimental support to the fetch API. This adds a
--experimental-fetch
flag that installs the
fetch
,Request
,Reponse
andHeaders
globals.Add stream methods
Other Notable Changes
Commits
v17.4.0
: 2022-01-18, Version 17.4.0 (Current), @targosCompare Source
Notable Changes
Commits
v17.3.1
: 2022-01-10, Version 17.3.1 (Current), @BethGriggsCompare Source
This is a security release.
Notable changes
Improper handling of URI Subject Alternative Names (Medium)(CVE-2021-44531)
Accepting arbitrary Subject Alternative Name (SAN) types, unless a PKI is specifically defined to use a particular SAN type, can result in bypassing name-constrained intermediates. Node.js was accepting URI SAN types, which PKIs are often not defined to use. Additionally, when a protocol allows URI SANs, Node.js did not match the URI correctly.
Versions of Node.js with the fix for this disable the URI SAN type when checking a certificate against a hostname. This behavior can be reverted through the
--security-revert
command-line option.More details will be available at CVE-2021-44531 after publication.
Certificate Verification Bypass via String Injection (Medium)(CVE-2021-44532)
Node.js converts SANs (Subject Alternative Names) to a string format. It uses this string to check peer certificates against hostnames when validating connections. The string format was subject to an injection vulnerability when name constraints were used within a certificate chain, allowing the bypass of these name constraints.
Versions of Node.js with the fix for this escape SANs containing the problematic characters in order to prevent the injection. This behavior can be reverted through the
--security-revert
command-line option.More details will be available at CVE-2021-44532 after publication.
Incorrect handling of certificate subject and issuer fields (Medium)(CVE-2021-44533)
Node.js did not handle multi-value Relative Distinguished Names correctly. Attackers could craft certificate subjects containing a single-value Relative Distinguished Name that would be interpreted as a multi-value Relative Distinguished Name, for example, in order to inject a Common Name that would allow bypassing the certificate subject verification.
Affected versions of Node.js do not accept multi-value Relative Distinguished Names and are thus not vulnerable to such attacks themselves. However, third-party code that uses node's ambiguous presentation of certificate subjects may be vulnerable.
More details will be available at CVE-2021-44533 after publication.
Prototype pollution via
console.table
properties (Low)(CVE-2022-21824)Due to the formatting logic of the
console.table()
function it was not safe to allow user controlled input to be passed to theproperties
parameter while simultaneously passing a plain object with at least one property as the first parameter, which could be__proto__
. The prototype pollution has very limited control, in that it only allows an empty string to be assigned numerical keys of the object prototype.Versions of Node.js with the fix for this use a null protoype for the object these properties are being assigned to.
More details will be available at CVE-2022-21824 after publication.
Thanks to Patrik Oldsberg (rugvip) for reporting this vulnerability.
Commits
v17.3.0
: 2021-12-17, Version 17.3.0 (Current), @danielleadamsCompare 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
getActiveResourcesInfo()
(Darshan Sen) #40813Commits
v17.2.0
: 2021-11-30, Version 17.2.0 (Current), @targosCompare Source
Notable Changes
Commits
v17.1.0
: 2021-11-09, Version 17.1.0 (Current), @targosCompare Source
Notable Changes
Commits
v17.0.1
: 2021-10-20, Version 17.0.1 (Current), @targosCompare 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
stream.promises.pipeline
, which was introduced in version16.10.0, is fixed. It is now possible again to pass an array of streams to the
function. #40193
stream.Duplex.from
, which didn't work properly when an asyncgenerator function was passed to it. #40499
Commits
v17.0.0
: 2021-10-19, Version 17.0.0 (Current), @BethGriggsCompare Source
Notable Changes
Deprecations and Removals
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 ExtendedtimeZoneName
options in theIntl.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 Readablestream (such as
process.stdin
) one line at a time.The following simple example illustrates the basic use of the
readline
module:Contributed by Antoine du Hamel - https://github.com/nodejs/node/pull/37947
Other Notable Changes
Semver-Major Commits
Semver-Minor Commits
Semver-Patch 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 PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.
94e28e7654
to4f54d3a9cb
4f54d3a9cb
toccd5ab17e8
ccd5ab17e8
tod731af7bf6
d731af7bf6
to35566479d4
35566479d4
tob74b9fead1
b74b9fead1
to57fe5604f8
57fe5604f8
to0c4cd3d3a4
0c4cd3d3a4
to4b98065328
4b98065328
to22761b0a08
22761b0a08
toedb5d9102a
edb5d9102a
to6223911af3
6223911af3
tofedeecb73d
fedeecb73d
to9b20808a42
9b20808a42
to660cc65082
660cc65082
toe941e92ecf
e941e92ecf
to260d365fa2
260d365fa2
to3357e6cbf3
3357e6cbf3
to19fcf126c9
19fcf126c9
toe706144e6d
e706144e6d
to3c37c773aa
3c37c773aa
toc6d8ccad5b
c6d8ccad5b
to24ceda6e3c
24ceda6e3c
tocfea5de367
cfea5de367
tobccf158045
bccf158045
tob67511fce9
b67511fce9
to9d47a74c50
9d47a74c50
tofa49bea500
fa49bea500
tob7c41ae2cd
b7c41ae2cd
to9a09d7cf74
9a09d7cf74
to7f1236101d
7f1236101d
to07588d19e5
07588d19e5
toc64026688b
c64026688b
tob6e6ed24ce
b6e6ed24ce
to77d37dcde5
77d37dcde5
to805d21d1a1
805d21d1a1
tofb05d18db8
fb05d18db8
to57dc4212d4
57dc4212d4
to4b2933a473
4b2933a473
to27ee702ccc
27ee702ccc
to7709ecc5e7
7709ecc5e7
tob7255ecda1
b7255ecda1
to65bf01dcaf
65bf01dcaf
toa5a9755679
a5a9755679
to4a98c6b30d
4a98c6b30d
to92ca62e0c6
92ca62e0c6
tod27eea58b8
d27eea58b8
to0d4ef09919
0d4ef09919
toc3945f5f0b
c3945f5f0b
to2189dabb21
2189dabb21
to2b024c5bb3
2b024c5bb3
to74fab4daa3
74fab4daa3
to3901cf4d4b
3901cf4d4b
to56fb6c6420
56fb6c6420
to07af80f233
07af80f233
to7e50a9f4dc
7e50a9f4dc
to310b543c8c
310b543c8c
to76a664b632
76a664b632
to6926970b67
6926970b67
toabb370129a
abb370129a
to22146e0cda
Renovate Ignore Notification
Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future
18.x
releases. But if you manually upgrade to18.x
then Renovate will re-enableminor
andpatch
updates automatically.If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.
Pull request closed