Skip to content

stream: unify stream utils - #39294

Closed
ronag wants to merge 4 commits into
nodejs:masterfrom
nxtedition:stream-util
Closed

stream: unify stream utils#39294
ronag wants to merge 4 commits into
nodejs:masterfrom
nxtedition:stream-util

Conversation

@ronag

@ronagronag commented Jul 7, 2021

Copy link
Copy Markdown
Member

Unify stream helpers into utils.

@ronagronag added the semver-major PRs that contain breaking changes and should be released in the next major version. label Jul 7, 2021
@ronag
ronag requested a review from mcollinaJuly 7, 2021 09:34
@ronag

ronag commented Jul 7, 2021

Copy link
Copy Markdown
MemberAuthor

@nodejs/streams

@github-actionsgithub-actionsBot added the needs-ci PRs that need a full CI run. label Jul 7, 2021
@ronag
ronagforce-pushed the stream-util branch 2 times, most recently from da3e9ce to 0fd4a82CompareJuly 7, 2021 09:37
@ronag

ronag commented Jul 7, 2021

Copy link
Copy Markdown
MemberAuthor

Defensively labelled as semver-major as 2 test needed to be updated. I believe these are actually bug fixes. Need a second opinion on whether or not this needs to be semver-major.

@ronagronag added the stream Issues and PRs related to the stream subsystem. label Jul 7, 2021
@ronag
ronagforce-pushed the stream-util branch 3 times, most recently from e4583a3 to ec33cefCompareJuly 7, 2021 09:55
Comment threadlib/internal/streams/utils.js Outdated
Comment threadlib/internal/streams/utils.js Outdated
Comment threadlib/internal/streams/utils.js Outdated
@ronag
ronagforce-pushed the stream-util branch 3 times, most recently from cda7ec9 to f4c1935CompareJuly 7, 2021 10:12

@mcollinamcollina left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@ronag

ronag commented Jul 7, 2021

Copy link
Copy Markdown
MemberAuthor

@mcollina should we add these to the public API?

isClosed,isDestroyed,isFinished,isIterable,isReadable,isReadableStream,isReadableEnded,isReadableFinished,isStream,isWritable,isWritableStream,isWritableEnded,isWritableFinished,

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@ronag

ronag commented Jul 7, 2021

Copy link
Copy Markdown
MemberAuthor

Needs another TSC @jasnell. Who else is a good streams TSC ping now that @addaleax is no longer in TSC 😢 .

Comment threadlib/internal/streams/end-of-stream.js Outdated
Comment threadlib/internal/streams/end-of-stream.js Outdated
@ronagronag added request-ci Add this label to start a Jenkins CI on a PR. and removed needs-ci PRs that need a full CI run. labels Jul 7, 2021
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 7, 2021
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@ronag

ronag commented Jul 8, 2021

Copy link
Copy Markdown
MemberAuthor

@jasnell are you blocking i regards to your comments?

@ronagronag added the request-ci Add this label to start a Jenkins CI on a PR. label Jul 9, 2021
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 9, 2021
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@ronag

ronag commented Jul 9, 2021

Copy link
Copy Markdown
MemberAuthor

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@ronag

ronag commented Jul 10, 2021

Copy link
Copy Markdown
MemberAuthor

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@ronagronag added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Jul 10, 2021
if (typeof stream[kDestroy] === 'function') {
stream[kDestroy](err);
if (isServerRequest(stream)) {
stream.socket = null;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need to prevent the socket from destroying in this case? Is there any chance to move this logic into IncomingMessage.prototype._destroy to decouple destroy logic a bit?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So that the response is not destroyed. No it’s not possible to decouple to due breaking reasons. Unfortunately this is the only way.

ronag added a commit that referenced this pull request Jul 11, 2021
Unify stream helps into utils.
PR-URL: #39294
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
@ronag

Copy link
Copy Markdown
MemberAuthor

Landed in bb275ef

@ronagronag closed this Jul 11, 2021
@targostargos mentioned this pull request Jul 21, 2021
@ronag

Copy link
Copy Markdown
MemberAuthor

@mcollina @nodejs/streams it would maybe be a good idea to include this on node 16... wdyt? Think in particular about the end-of-stream fixes. I kind of encountered those here #39563.

@BethGriggsBethGriggs mentioned this pull request Sep 15, 2021
2 tasks
BethGriggs added a commit that referenced this pull request Oct 15, 2021
Notable Changes:
Deprecations and Removals:
- (SEMVER-MAJOR) dns: runtime deprecate type coercion of `dns.lookup`
options
(Antoine du Hamel) [#39793]
- doc: deprecate (doc-only) http abort related
(dr-js) [#36670]
- (SEMVER-MAJOR) module: subpath folder mappings EOL
(Guy Bedford) [#40121]
- (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns
(Guy Bedford) [#40117]
- v8: remove --harmony-top-level-await
(Geoffrey Booth) [#40226]
OpenSSL 3.0:
Node.js now includes OpenSSL 3.0, specifically https://github.com/quictls/openssl
which provides QUIC support. For details about all the features in
OpenSSL 3.0 please see https://www.openssl.org/blog/blog/2021/09/07/OpenSSL3.Final.
(Daniel Bevenius) [#38512]
V8 9.5:
The V8 JavaScript engine is updated to V8 9.5. This release comes with
additional supported types for th `Intl.DisplayNames` API and Extended
`timeZoneName` options in the `Intl.DateTimeFormat` API. You can read
more details in the V8 9.5 release post https://v8.dev/blog/v8-release-95.
(Michaël Zasso) [#40178]
Readline Promise API:
The `readline` module provides an interface for reading data from a
Readable stream (such as `process.stdin`) one line at a time.
(Antoine du Hamel) [#37947]
Other Notable Changes:
- (SEMVER-MAJOR) dns: default to verbatim=true in dns.lookup()
(treysis) [#39987]
- (SEMVER-MINOR) fs: add FileHandle.prototype.readableWebStream()
(James M Snell) [#39331]
- (SEMVER-MAJOR) lib: add structuredClone() global
(Ethan Arrowood) [#39759]
- (SEMVER-MAJOR) lib: expose `DOMException` as global
(Khaidi Chu) [#39176]
- (SEMVER-MAJOR) stream: finished should error on errored stream
(Robert Nagy) [#39235]
Semver-Major Commits:
- (SEMVER-MAJOR) build: compile with C++17 (MSVC)
(Richard Lau) [#38807]
- (SEMVER-MAJOR) build: compile with --gnu++17
(Richard Lau) [#38807]
- (SEMVER-MAJOR) deps: update V8 to 9.5.172.19
(Michaël Zasso) [#40178]
- (SEMVER-MAJOR) deps,test,src,doc,tools: update to OpenSSL 3.0
(Daniel Bevenius) [#38512]
- (SEMVER-MAJOR) dgram: tighten `address` validation in `socket.send`
(Voltrex) [#39190]
- (SEMVER-MAJOR) dns: runtime deprecate type coercion of `dns.lookup` options
(Antoine du Hamel) [#39793]
- (SEMVER-MAJOR) dns: default to verbatim=true in dns.lookup()
(treysis) [#39987]
- (SEMVER-MAJOR) doc: update minimum supported FreeBSD to 12.2
(Michaël Zasso) [#40179]
- (SEMVER-MAJOR) errors: disp ver on fatal except that causes exit
(Divlo) [#38332]
- (SEMVER-MAJOR) fs: fix rmsync error swallowing
(Nitzan Uziely) [#38684]
- (SEMVER-MAJOR) fs: aggregate errors in fsPromises to avoid error swallowing
(Nitzan Uziely) [#38259]
- (SEMVER-MAJOR) lib: add structuredClone() global
(Ethan Arrowood) [#39759]
- (SEMVER-MAJOR) lib: expose `DOMException` as global
(Khaidi Chu) [#39176]
- (SEMVER-MAJOR) module: subpath folder mappings EOL
(Guy Bedford) [#40121]
- (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns
(Guy Bedford) [#40117]
- (SEMVER-MAJOR) readline: validate `AbortSignal`s and remove unused event listeners
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) readline: introduce promise-based API
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) readline: refactor `Interface` to ES2015 class
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) src: allow CAP\_NET\_BIND\_SERVICE in SafeGetenv
(Daniel Bevenius) [#37727]
- (SEMVER-MAJOR) src: return Maybe from a couple of functions
(Darshan Sen) [#39603]
- (SEMVER-MAJOR) src: allow custom PageAllocator in NodePlatform
(Shelley Vohr) [#38362]
- (SEMVER-MAJOR) stream: fix highwatermark threshold and add the missing error
(Rongjian Zhang) [#38700]
- (SEMVER-MAJOR) stream: don't emit 'data' after 'error' or 'close'
(Robert Nagy) [#39639]
- (SEMVER-MAJOR) stream: do not emit `end` on readable error
(Szymon Marczak) [#39607]
- (SEMVER-MAJOR) stream: forward errored to callback
(Robert Nagy) [#39364]
- (SEMVER-MAJOR) stream: destroy readable on read error
(Robert Nagy) [#39342]
- (SEMVER-MAJOR) stream: validate abort signal
(Robert Nagy) [#39346]
- (SEMVER-MAJOR) stream: unify stream utils
(Robert Nagy) [#39294]
- (SEMVER-MAJOR) stream: throw on premature close in Readable\
(Darshan Sen) [#39117]
- (SEMVER-MAJOR) stream: finished should error on errored stream
(Robert Nagy) [#39235]
- (SEMVER-MAJOR) stream: error Duplex write/read if not writable/readable
(Robert Nagy) [#34385]
- (SEMVER-MAJOR) stream: bypass legacy destroy for pipeline and async iteration
(Robert Nagy) [#38505]
- (SEMVER-MAJOR) url: throw invalid this on detached accessors
(James M Snell) [#39752]
- (SEMVER-MAJOR) url: forbid certain confusable changes from being introduced by toASCII
(Timothy Gu) [#38631]
PR-URL: #40119
BethGriggs added a commit that referenced this pull request Oct 15, 2021
Notable Changes:
Deprecations and Removals:
- (SEMVER-MAJOR) dns: runtime deprecate type coercion of `dns.lookup`
options
(Antoine du Hamel) [#39793]
- doc: deprecate (doc-only) http abort related
(dr-js) [#36670]
- (SEMVER-MAJOR) module: subpath folder mappings EOL
(Guy Bedford) [#40121]
- (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns
(Guy Bedford) [#40117]
- v8: remove --harmony-top-level-await
(Geoffrey Booth) [#40226]
OpenSSL 3.0:
Node.js now includes OpenSSL 3.0, specifically https://github.com/quictls/openssl
which provides QUIC support. For details about all the features in
OpenSSL 3.0 please see https://www.openssl.org/blog/blog/2021/09/07/OpenSSL3.Final.
(Daniel Bevenius) [#38512]
V8 9.5:
The V8 JavaScript engine is updated to V8 9.5. This release comes with
additional supported types for the `Intl.DisplayNames` API and Extended
`timeZoneName` options in the `Intl.DateTimeFormat` API. You can read
more details in the V8 9.5 release post https://v8.dev/blog/v8-release-95.
(Michaël Zasso) [#40178]
Readline Promise API:
The `readline` module provides an interface for reading data from a
Readable stream (such as `process.stdin`) one line at a time.
(Antoine du Hamel) [#37947]
Other Notable Changes:
- (SEMVER-MAJOR) dns: default to verbatim=true in dns.lookup()
(treysis) [#39987]
- (SEMVER-MAJOR) errors: print Node.js version on fatal exceptions that
cause exit
(Divlo) [#38332]
- (SEMVER-MINOR) fs: add FileHandle.prototype.readableWebStream()
(James M Snell) [#39331]
- (SEMVER-MAJOR) lib: add structuredClone() global
(Ethan Arrowood) [#39759]
- (SEMVER-MAJOR) lib: expose `DOMException` as global
(Khaidi Chu) [#39176]
- (SEMVER-MAJOR) stream: finished should error on errored stream
(Robert Nagy) [#39235]
Semver-Major Commits:
- (SEMVER-MAJOR) build: compile with C++17 (MSVC)
(Richard Lau) [#38807]
- (SEMVER-MAJOR) build: compile with --gnu++17
(Richard Lau) [#38807]
- (SEMVER-MAJOR) deps: update V8 to 9.5.172.19
(Michaël Zasso) [#40178]
- (SEMVER-MAJOR) deps,test,src,doc,tools: update to OpenSSL 3.0
(Daniel Bevenius) [#38512]
- (SEMVER-MAJOR) dgram: tighten `address` validation in `socket.send`
(Voltrex) [#39190]
- (SEMVER-MAJOR) dns: runtime deprecate type coercion of `dns.lookup` options
(Antoine du Hamel) [#39793]
- (SEMVER-MAJOR) dns: default to verbatim=true in dns.lookup()
(treysis) [#39987]
- (SEMVER-MAJOR) doc: update minimum supported FreeBSD to 12.2
(Michaël Zasso) [#40179]
- (SEMVER-MAJOR) errors: disp ver on fatal except that causes exit
(Divlo) [#38332]
- (SEMVER-MAJOR) fs: fix rmsync error swallowing
(Nitzan Uziely) [#38684]
- (SEMVER-MAJOR) fs: aggregate errors in fsPromises to avoid error swallowing
(Nitzan Uziely) [#38259]
- (SEMVER-MAJOR) lib: add structuredClone() global
(Ethan Arrowood) [#39759]
- (SEMVER-MAJOR) lib: expose `DOMException` as global
(Khaidi Chu) [#39176]
- (SEMVER-MAJOR) module: subpath folder mappings EOL
(Guy Bedford) [#40121]
- (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns
(Guy Bedford) [#40117]
- (SEMVER-MAJOR) readline: validate `AbortSignal`s and remove unused event listeners
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) readline: introduce promise-based API
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) readline: refactor `Interface` to ES2015 class
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) src: allow CAP\_NET\_BIND\_SERVICE in SafeGetenv
(Daniel Bevenius) [#37727]
- (SEMVER-MAJOR) src: return Maybe from a couple of functions
(Darshan Sen) [#39603]
- (SEMVER-MAJOR) src: allow custom PageAllocator in NodePlatform
(Shelley Vohr) [#38362]
- (SEMVER-MAJOR) stream: fix highwatermark threshold and add the missing error
(Rongjian Zhang) [#38700]
- (SEMVER-MAJOR) stream: don't emit 'data' after 'error' or 'close'
(Robert Nagy) [#39639]
- (SEMVER-MAJOR) stream: do not emit `end` on readable error
(Szymon Marczak) [#39607]
- (SEMVER-MAJOR) stream: forward errored to callback
(Robert Nagy) [#39364]
- (SEMVER-MAJOR) stream: destroy readable on read error
(Robert Nagy) [#39342]
- (SEMVER-MAJOR) stream: validate abort signal
(Robert Nagy) [#39346]
- (SEMVER-MAJOR) stream: unify stream utils
(Robert Nagy) [#39294]
- (SEMVER-MAJOR) stream: throw on premature close in Readable\
(Darshan Sen) [#39117]
- (SEMVER-MAJOR) stream: finished should error on errored stream
(Robert Nagy) [#39235]
- (SEMVER-MAJOR) stream: error Duplex write/read if not writable/readable
(Robert Nagy) [#34385]
- (SEMVER-MAJOR) stream: bypass legacy destroy for pipeline and async iteration
(Robert Nagy) [#38505]
- (SEMVER-MAJOR) url: throw invalid this on detached accessors
(James M Snell) [#39752]
- (SEMVER-MAJOR) url: forbid certain confusable changes from being introduced by toASCII
(Timothy Gu) [#38631]
PR-URL: #40119
BethGriggs added a commit that referenced this pull request Oct 16, 2021
Notable Changes:
Deprecations and Removals:
- (SEMVER-MAJOR) dns: runtime deprecate type coercion of `dns.lookup`
options
(Antoine du Hamel) [#39793]
- doc: deprecate (doc-only) http abort related
(dr-js) [#36670]
- (SEMVER-MAJOR) module: subpath folder mappings EOL
(Guy Bedford) [#40121]
- (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns
(Guy Bedford) [#40117]
OpenSSL 3.0:
Node.js now includes OpenSSL 3.0, specifically https://github.com/quictls/openssl
which provides QUIC support. For details about all the features in
OpenSSL 3.0 please see https://www.openssl.org/blog/blog/2021/09/07/OpenSSL3.Final.
(Daniel Bevenius) [#38512]
V8 9.5:
The V8 JavaScript engine is updated to V8 9.5. This release comes with
additional supported types for the `Intl.DisplayNames` API and Extended
`timeZoneName` options in the `Intl.DateTimeFormat` API. You can read
more details in the V8 9.5 release post https://v8.dev/blog/v8-release-95.
(Michaël Zasso) [#40178]
Readline Promise API:
The `readline` module provides an interface for reading data from a
Readable stream (such as `process.stdin`) one line at a time.
(Antoine du Hamel) [#37947]
Other Notable Changes:
- (SEMVER-MAJOR) dns: default to verbatim=true in dns.lookup()
(treysis) [#39987]
- (SEMVER-MAJOR) errors: print Node.js version on fatal exceptions that
cause exit
(Divlo) [#38332]
- (SEMVER-MINOR) fs: add FileHandle.prototype.readableWebStream()
(James M Snell) [#39331]
- (SEMVER-MAJOR) lib: add structuredClone() global
(Ethan Arrowood) [#39759]
- (SEMVER-MAJOR) lib: expose `DOMException` as global
(Khaidi Chu) [#39176]
- (SEMVER-MAJOR) stream: finished should error on errored stream
(Robert Nagy) [#39235]
Semver-Major Commits:
- (SEMVER-MAJOR) build: compile with C++17 (MSVC)
(Richard Lau) [#38807]
- (SEMVER-MAJOR) build: compile with --gnu++17
(Richard Lau) [#38807]
- (SEMVER-MAJOR) deps: update V8 to 9.5.172.19
(Michaël Zasso) [#40178]
- (SEMVER-MAJOR) deps,test,src,doc,tools: update to OpenSSL 3.0
(Daniel Bevenius) [#38512]
- (SEMVER-MAJOR) dgram: tighten `address` validation in `socket.send`
(Voltrex) [#39190]
- (SEMVER-MAJOR) dns: runtime deprecate type coercion of `dns.lookup` options
(Antoine du Hamel) [#39793]
- (SEMVER-MAJOR) dns: default to verbatim=true in dns.lookup()
(treysis) [#39987]
- (SEMVER-MAJOR) doc: update minimum supported FreeBSD to 12.2
(Michaël Zasso) [#40179]
- (SEMVER-MAJOR) errors: disp ver on fatal except that causes exit
(Divlo) [#38332]
- (SEMVER-MAJOR) fs: fix rmsync error swallowing
(Nitzan Uziely) [#38684]
- (SEMVER-MAJOR) fs: aggregate errors in fsPromises to avoid error swallowing
(Nitzan Uziely) [#38259]
- (SEMVER-MAJOR) lib: add structuredClone() global
(Ethan Arrowood) [#39759]
- (SEMVER-MAJOR) lib: expose `DOMException` as global
(Khaidi Chu) [#39176]
- (SEMVER-MAJOR) module: subpath folder mappings EOL
(Guy Bedford) [#40121]
- (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns
(Guy Bedford) [#40117]
- (SEMVER-MAJOR) readline: validate `AbortSignal`s and remove unused event listeners
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) readline: introduce promise-based API
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) readline: refactor `Interface` to ES2015 class
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) src: allow CAP\_NET\_BIND\_SERVICE in SafeGetenv
(Daniel Bevenius) [#37727]
- (SEMVER-MAJOR) src: return Maybe from a couple of functions
(Darshan Sen) [#39603]
- (SEMVER-MAJOR) src: allow custom PageAllocator in NodePlatform
(Shelley Vohr) [#38362]
- (SEMVER-MAJOR) stream: fix highwatermark threshold and add the missing error
(Rongjian Zhang) [#38700]
- (SEMVER-MAJOR) stream: don't emit 'data' after 'error' or 'close'
(Robert Nagy) [#39639]
- (SEMVER-MAJOR) stream: do not emit `end` on readable error
(Szymon Marczak) [#39607]
- (SEMVER-MAJOR) stream: forward errored to callback
(Robert Nagy) [#39364]
- (SEMVER-MAJOR) stream: destroy readable on read error
(Robert Nagy) [#39342]
- (SEMVER-MAJOR) stream: validate abort signal
(Robert Nagy) [#39346]
- (SEMVER-MAJOR) stream: unify stream utils
(Robert Nagy) [#39294]
- (SEMVER-MAJOR) stream: throw on premature close in Readable\
(Darshan Sen) [#39117]
- (SEMVER-MAJOR) stream: finished should error on errored stream
(Robert Nagy) [#39235]
- (SEMVER-MAJOR) stream: error Duplex write/read if not writable/readable
(Robert Nagy) [#34385]
- (SEMVER-MAJOR) stream: bypass legacy destroy for pipeline and async iteration
(Robert Nagy) [#38505]
- (SEMVER-MAJOR) url: throw invalid this on detached accessors
(James M Snell) [#39752]
- (SEMVER-MAJOR) url: forbid certain confusable changes from being introduced by toASCII
(Timothy Gu) [#38631]
PR-URL: #40119
BethGriggs added a commit that referenced this pull request Oct 18, 2021
Notable Changes:
Deprecations and Removals:
- (SEMVER-MAJOR) dns: runtime deprecate type coercion of `dns.lookup`
options
(Antoine du Hamel) [#39793]
- doc: deprecate (doc-only) http abort related
(dr-js) [#36670]
- (SEMVER-MAJOR) module: subpath folder mappings EOL
(Guy Bedford) [#40121]
- (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns
(Guy Bedford) [#40117]
OpenSSL 3.0:
Node.js now includes OpenSSL 3.0, specifically https://github.com/quictls/openssl
which provides QUIC support.
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 https://www.openssl.org/blog/blog/2021/09/07/OpenSSL3.Final.
(Daniel Bevenius) [#38512]
Contributed in #38512, #40478
V8 9.5:
The V8 JavaScript engine is updated to V8 9.5. This release comes with
additional supported types for the `Intl.DisplayNames` API and Extended
`timeZoneName` options in the `Intl.DateTimeFormat` API. You can read
more details in the V8 9.5 release post https://v8.dev/blog/v8-release-95.
(Michaël Zasso) [#40178]
Readline Promise API:
The `readline` module provides an interface for reading data from a
Readable stream (such as `process.stdin`) one line at a time.
(Antoine du Hamel) [#37947]
Other Notable Changes:
- (SEMVER-MAJOR) dns: default to verbatim=true in dns.lookup()
(treysis) [#39987]
- (SEMVER-MAJOR) errors: print Node.js version on fatal exceptions that
cause exit
(Divlo) [#38332]
- deps: upgrade npm to 8.1.0
(npm team) [#40463]
- (SEMVER-MINOR) fs: add FileHandle.prototype.readableWebStream()
(James M Snell) [#39331]
- (SEMVER-MAJOR) lib: add structuredClone() global
(Ethan Arrowood) [#39759]
- (SEMVER-MAJOR) lib: expose `DOMException` as global
(Khaidi Chu) [#39176]
- (SEMVER-MAJOR) stream: finished should error on errored stream
(Robert Nagy) [#39235]
Semver-Major Commits:
- (SEMVER-MAJOR) build: compile with C++17 (MSVC)
(Richard Lau) [#38807]
- (SEMVER-MAJOR) build: compile with --gnu++17
(Richard Lau) [#38807]
- (SEMVER-MAJOR) deps: update V8 to 9.5.172.19
(Michaël Zasso) [#40178]
- (SEMVER-MAJOR) deps,test,src,doc,tools: update to OpenSSL 3.0
(Daniel Bevenius) [#38512]
- (SEMVER-MAJOR) dgram: tighten `address` validation in `socket.send`
(Voltrex) [#39190]
- (SEMVER-MAJOR) dns: runtime deprecate type coercion of `dns.lookup` options
(Antoine du Hamel) [#39793]
- (SEMVER-MAJOR) dns: default to verbatim=true in dns.lookup()
(treysis) [#39987]
- (SEMVER-MAJOR) doc: update minimum supported FreeBSD to 12.2
(Michaël Zasso) [#40179]
- (SEMVER-MAJOR) errors: disp ver on fatal except that causes exit
(Divlo) [#38332]
- (SEMVER-MAJOR) fs: fix rmsync error swallowing
(Nitzan Uziely) [#38684]
- (SEMVER-MAJOR) fs: aggregate errors in fsPromises to avoid error swallowing
(Nitzan Uziely) [#38259]
- (SEMVER-MAJOR) lib: add structuredClone() global
(Ethan Arrowood) [#39759]
- (SEMVER-MAJOR) lib: expose `DOMException` as global
(Khaidi Chu) [#39176]
- (SEMVER-MAJOR) module: subpath folder mappings EOL
(Guy Bedford) [#40121]
- (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns
(Guy Bedford) [#40117]
- (SEMVER-MAJOR) readline: validate `AbortSignal`s and remove unused event listeners
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) readline: introduce promise-based API
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) readline: refactor `Interface` to ES2015 class
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) src: allow CAP\_NET\_BIND\_SERVICE in SafeGetenv
(Daniel Bevenius) [#37727]
- (SEMVER-MAJOR) src: return Maybe from a couple of functions
(Darshan Sen) [#39603]
- (SEMVER-MAJOR) src: allow custom PageAllocator in NodePlatform
(Shelley Vohr) [#38362]
- (SEMVER-MAJOR) stream: fix highwatermark threshold and add the missing error
(Rongjian Zhang) [#38700]
- (SEMVER-MAJOR) stream: don't emit 'data' after 'error' or 'close'
(Robert Nagy) [#39639]
- (SEMVER-MAJOR) stream: do not emit `end` on readable error
(Szymon Marczak) [#39607]
- (SEMVER-MAJOR) stream: forward errored to callback
(Robert Nagy) [#39364]
- (SEMVER-MAJOR) stream: destroy readable on read error
(Robert Nagy) [#39342]
- (SEMVER-MAJOR) stream: validate abort signal
(Robert Nagy) [#39346]
- (SEMVER-MAJOR) stream: unify stream utils
(Robert Nagy) [#39294]
- (SEMVER-MAJOR) stream: throw on premature close in Readable\
(Darshan Sen) [#39117]
- (SEMVER-MAJOR) stream: finished should error on errored stream
(Robert Nagy) [#39235]
- (SEMVER-MAJOR) stream: error Duplex write/read if not writable/readable
(Robert Nagy) [#34385]
- (SEMVER-MAJOR) stream: bypass legacy destroy for pipeline and async iteration
(Robert Nagy) [#38505]
- (SEMVER-MAJOR) url: throw invalid this on detached accessors
(James M Snell) [#39752]
- (SEMVER-MAJOR) url: forbid certain confusable changes from being introduced by toASCII
(Timothy Gu) [#38631]
PR-URL: #40119
BethGriggs added a commit that referenced this pull request Oct 18, 2021
Notable Changes:
Deprecations and Removals:
- (SEMVER-MAJOR) dns: runtime deprecate type coercion of `dns.lookup`
options
(Antoine du Hamel) [#39793]
- doc: deprecate (doc-only) http abort related
(dr-js) [#36670]
- (SEMVER-MAJOR) module: subpath folder mappings EOL
(Guy Bedford) [#40121]
- (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns
(Guy Bedford) [#40117]
OpenSSL 3.0:
Node.js now includes OpenSSL 3.0, specifically https://github.com/quictls/openssl
which provides QUIC support.
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 https://www.openssl.org/blog/blog/2021/09/07/OpenSSL3.Final.
(Daniel Bevenius) [#38512]
Contributed in #38512, #40478
V8 9.5:
The V8 JavaScript engine is updated to V8 9.5. This release comes with
additional supported types for the `Intl.DisplayNames` API and Extended
`timeZoneName` options in the `Intl.DateTimeFormat` API. You can read
more details in the V8 9.5 release post https://v8.dev/blog/v8-release-95.
(Michaël Zasso) [#40178]
Readline Promise API:
The `readline` module provides an interface for reading data from a
Readable stream (such as `process.stdin`) one line at a time.
(Antoine du Hamel) [#37947]
Other Notable Changes:
- (SEMVER-MAJOR) dns: default to verbatim=true in dns.lookup()
(treysis) [#39987]
- (SEMVER-MAJOR) errors: print Node.js version on fatal exceptions that
cause exit
(Divlo) [#38332]
- deps: upgrade npm to 8.1.0
(npm team) [#40463]
- (SEMVER-MINOR) fs: add FileHandle.prototype.readableWebStream()
(James M Snell) [#39331]
- (SEMVER-MAJOR) lib: add structuredClone() global
(Ethan Arrowood) [#39759]
- (SEMVER-MAJOR) lib: expose `DOMException` as global
(Khaidi Chu) [#39176]
- (SEMVER-MAJOR) stream: finished should error on errored stream
(Robert Nagy) [#39235]
Semver-Major Commits:
- (SEMVER-MAJOR) build: compile with C++17 (MSVC)
(Richard Lau) [#38807]
- (SEMVER-MAJOR) build: compile with --gnu++17
(Richard Lau) [#38807]
- (SEMVER-MAJOR) deps: update V8 to 9.5.172.19
(Michaël Zasso) [#40178]
- (SEMVER-MAJOR) deps,test,src,doc,tools: update to OpenSSL 3.0
(Daniel Bevenius) [#38512]
- (SEMVER-MAJOR) dgram: tighten `address` validation in `socket.send`
(Voltrex) [#39190]
- (SEMVER-MAJOR) dns: runtime deprecate type coercion of `dns.lookup` options
(Antoine du Hamel) [#39793]
- (SEMVER-MAJOR) dns: default to verbatim=true in dns.lookup()
(treysis) [#39987]
- (SEMVER-MAJOR) doc: update minimum supported FreeBSD to 12.2
(Michaël Zasso) [#40179]
- (SEMVER-MAJOR) errors: disp ver on fatal except that causes exit
(Divlo) [#38332]
- (SEMVER-MAJOR) fs: fix rmsync error swallowing
(Nitzan Uziely) [#38684]
- (SEMVER-MAJOR) fs: aggregate errors in fsPromises to avoid error swallowing
(Nitzan Uziely) [#38259]
- (SEMVER-MAJOR) lib: add structuredClone() global
(Ethan Arrowood) [#39759]
- (SEMVER-MAJOR) lib: expose `DOMException` as global
(Khaidi Chu) [#39176]
- (SEMVER-MAJOR) module: subpath folder mappings EOL
(Guy Bedford) [#40121]
- (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns
(Guy Bedford) [#40117]
- (SEMVER-MAJOR) readline: validate `AbortSignal`s and remove unused event listeners
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) readline: introduce promise-based API
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) readline: refactor `Interface` to ES2015 class
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) src: allow CAP\_NET\_BIND\_SERVICE in SafeGetenv
(Daniel Bevenius) [#37727]
- (SEMVER-MAJOR) src: return Maybe from a couple of functions
(Darshan Sen) [#39603]
- (SEMVER-MAJOR) src: allow custom PageAllocator in NodePlatform
(Shelley Vohr) [#38362]
- (SEMVER-MAJOR) stream: fix highwatermark threshold and add the missing error
(Rongjian Zhang) [#38700]
- (SEMVER-MAJOR) stream: don't emit 'data' after 'error' or 'close'
(Robert Nagy) [#39639]
- (SEMVER-MAJOR) stream: do not emit `end` on readable error
(Szymon Marczak) [#39607]
- (SEMVER-MAJOR) stream: forward errored to callback
(Robert Nagy) [#39364]
- (SEMVER-MAJOR) stream: destroy readable on read error
(Robert Nagy) [#39342]
- (SEMVER-MAJOR) stream: validate abort signal
(Robert Nagy) [#39346]
- (SEMVER-MAJOR) stream: unify stream utils
(Robert Nagy) [#39294]
- (SEMVER-MAJOR) stream: throw on premature close in Readable\
(Darshan Sen) [#39117]
- (SEMVER-MAJOR) stream: finished should error on errored stream
(Robert Nagy) [#39235]
- (SEMVER-MAJOR) stream: error Duplex write/read if not writable/readable
(Robert Nagy) [#34385]
- (SEMVER-MAJOR) stream: bypass legacy destroy for pipeline and async iteration
(Robert Nagy) [#38505]
- (SEMVER-MAJOR) url: throw invalid this on detached accessors
(James M Snell) [#39752]
- (SEMVER-MAJOR) url: forbid certain confusable changes from being introduced by toASCII
(Timothy Gu) [#38631]
PR-URL: #40119
BethGriggs added a commit that referenced this pull request Oct 19, 2021
Notable Changes:
Deprecations and Removals:
- (SEMVER-MAJOR) dns: runtime deprecate type coercion of `dns.lookup`
options
(Antoine du Hamel) [#39793]
- doc: deprecate (doc-only) http abort related
(dr-js) [#36670]
- (SEMVER-MAJOR) module: subpath folder mappings EOL
(Guy Bedford) [#40121]
- (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns
(Guy Bedford) [#40117]
OpenSSL 3.0:
Node.js now includes OpenSSL 3.0, specifically https://github.com/quictls/openssl
which provides QUIC support.
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 https://www.openssl.org/blog/blog/2021/09/07/OpenSSL3.Final.
(Daniel Bevenius) [#38512]
Contributed in #38512, #40478
V8 9.5:
The V8 JavaScript engine is updated to V8 9.5. This release comes with
additional supported types for the `Intl.DisplayNames` API and Extended
`timeZoneName` options in the `Intl.DateTimeFormat` API. You can read
more details in the V8 9.5 release post https://v8.dev/blog/v8-release-95.
(Michaël Zasso) [#40178]
Readline Promise API:
The `readline` module provides an interface for reading data from a
Readable stream (such as `process.stdin`) one line at a time.
(Antoine du Hamel) [#37947]
Other Notable Changes:
- (SEMVER-MAJOR) dns: default to verbatim=true in dns.lookup()
(treysis) [#39987]
- (SEMVER-MAJOR) errors: print Node.js version on fatal exceptions that
cause exit
(Divlo) [#38332]
- deps: upgrade npm to 8.1.0
(npm team) [#40463]
- (SEMVER-MINOR) fs: add FileHandle.prototype.readableWebStream()
(James M Snell) [#39331]
- (SEMVER-MAJOR) lib: add structuredClone() global
(Ethan Arrowood) [#39759]
- (SEMVER-MAJOR) lib: expose `DOMException` as global
(Khaidi Chu) [#39176]
- (SEMVER-MAJOR) stream: finished should error on errored stream
(Robert Nagy) [#39235]
Semver-Major Commits:
- (SEMVER-MAJOR) build: compile with C++17 (MSVC)
(Richard Lau) [#38807]
- (SEMVER-MAJOR) build: compile with --gnu++17
(Richard Lau) [#38807]
- (SEMVER-MAJOR) deps: update V8 to 9.5.172.19
(Michaël Zasso) [#40178]
- (SEMVER-MAJOR) deps,test,src,doc,tools: update to OpenSSL 3.0
(Daniel Bevenius) [#38512]
- (SEMVER-MAJOR) dgram: tighten `address` validation in `socket.send`
(Voltrex) [#39190]
- (SEMVER-MAJOR) dns: runtime deprecate type coercion of `dns.lookup` options
(Antoine du Hamel) [#39793]
- (SEMVER-MAJOR) dns: default to verbatim=true in dns.lookup()
(treysis) [#39987]
- (SEMVER-MAJOR) doc: update minimum supported FreeBSD to 12.2
(Michaël Zasso) [#40179]
- (SEMVER-MAJOR) errors: disp ver on fatal except that causes exit
(Divlo) [#38332]
- (SEMVER-MAJOR) fs: fix rmsync error swallowing
(Nitzan Uziely) [#38684]
- (SEMVER-MAJOR) fs: aggregate errors in fsPromises to avoid error swallowing
(Nitzan Uziely) [#38259]
- (SEMVER-MAJOR) lib: add structuredClone() global
(Ethan Arrowood) [#39759]
- (SEMVER-MAJOR) lib: expose `DOMException` as global
(Khaidi Chu) [#39176]
- (SEMVER-MAJOR) module: subpath folder mappings EOL
(Guy Bedford) [#40121]
- (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns
(Guy Bedford) [#40117]
- (SEMVER-MAJOR) readline: validate `AbortSignal`s and remove unused event listeners
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) readline: introduce promise-based API
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) readline: refactor `Interface` to ES2015 class
(Antoine du Hamel) [#37947]
- (SEMVER-MAJOR) src: allow CAP\_NET\_BIND\_SERVICE in SafeGetenv
(Daniel Bevenius) [#37727]
- (SEMVER-MAJOR) src: return Maybe from a couple of functions
(Darshan Sen) [#39603]
- (SEMVER-MAJOR) src: allow custom PageAllocator in NodePlatform
(Shelley Vohr) [#38362]
- (SEMVER-MAJOR) stream: fix highwatermark threshold and add the missing error
(Rongjian Zhang) [#38700]
- (SEMVER-MAJOR) stream: don't emit 'data' after 'error' or 'close'
(Robert Nagy) [#39639]
- (SEMVER-MAJOR) stream: do not emit `end` on readable error
(Szymon Marczak) [#39607]
- (SEMVER-MAJOR) stream: forward errored to callback
(Robert Nagy) [#39364]
- (SEMVER-MAJOR) stream: destroy readable on read error
(Robert Nagy) [#39342]
- (SEMVER-MAJOR) stream: validate abort signal
(Robert Nagy) [#39346]
- (SEMVER-MAJOR) stream: unify stream utils
(Robert Nagy) [#39294]
- (SEMVER-MAJOR) stream: throw on premature close in Readable\
(Darshan Sen) [#39117]
- (SEMVER-MAJOR) stream: finished should error on errored stream
(Robert Nagy) [#39235]
- (SEMVER-MAJOR) stream: error Duplex write/read if not writable/readable
(Robert Nagy) [#34385]
- (SEMVER-MAJOR) stream: bypass legacy destroy for pipeline and async iteration
(Robert Nagy) [#38505]
- (SEMVER-MAJOR) url: throw invalid this on detached accessors
(James M Snell) [#39752]
- (SEMVER-MAJOR) url: forbid certain confusable changes from being introduced by toASCII
(Timothy Gu) [#38631]
PR-URL: #40119
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author readyPRs that have at least one approval, no pending requests for changes, and a CI started.semver-majorPRs that contain breaking changes and should be released in the next major version.streamIssues and PRs related to the stream subsystem.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@ronag@nodejs-github-bot@jasnell@mcollina@wa-Nadoo@benjamingr@aduh95