GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — doc: add legacy status by jasnell · Pull Request #37784 · nodejs/node

Conversation

@jasnell

@jasnell jasnell commented Mar 17, 2021

Copy link
Copy Markdown
Member

Adds a new "Legacy" option to the stability index. The idea here is to give us another alternative to deprecating. Legacy code is still subject to semver rules but is specifically called out as legacy and to be avoided.

Marks the legacy URL parser as legacy, removing deprecated.

/cc @nodejs/tsc @addaleax @ljharb

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

voxpelli, ExE-Boss, and ariabuckles reacted with thumbs up emoji
All reactions
  • 👍 3 reactions
@nodejs-github-bot nodejs-github-bot added the doc Issues and PRs related to Node.js documentation. label Mar 17, 2021
@jasnell
jasnell force-pushed the add-legacy-status branch from 56d709d to d8da03f Compare March 17, 2021 19:49
ljharb
ljharb reviewed Mar 17, 2021
View reviewed changes

@ljharb ljharb left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

LGTM

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread doc/api/deprecations.md Resolved

Uh oh!

There was an error while loading. Please reload this page.

addaleax
addaleax approved these changes Mar 17, 2021
View reviewed changes
mcollina
mcollina approved these changes Mar 17, 2021
View reviewed changes

@mcollina mcollina left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

lgtm

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
vdeturckheim
vdeturckheim approved these changes Mar 17, 2021
View reviewed changes
aduh95
aduh95 reviewed Mar 17, 2021
View reviewed changes
Comment thread doc/api/url.md Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread doc/api/deprecations.md Resolved

Uh oh!

There was an error while loading. Please reload this page.

@jasnell jasnell added the author ready PRs with CI started, the required approvals, and no outstanding review comments. label Mar 17, 2021
@aduh95

aduh95 commented Mar 17, 2021

Copy link
Copy Markdown
Contributor

It could be worth also updating the other history sections so they are consistent:

image

It's also worth noting that the light mode version is not readable, it's probably something we want to fix before landing:

image

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@addaleax addaleax mentioned this pull request Mar 17, 2021
buffer: expose btoa and atob as globals #37786
Closed
@ljharb

ljharb commented Mar 18, 2021

Copy link
Copy Markdown
Member

What’s not readable about the light mode version?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@marsonya

marsonya commented Mar 18, 2021

Copy link
Copy Markdown
Member

What’s not readable about the light mode version?

Screenshot 2021-03-18 at 10 43 13
The Stability note below the table is not visible in the light version.

ljharb and aduh95 reacted with thumbs up emoji
All reactions
  • 👍 2 reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

marsonya
marsonya approved these changes Mar 18, 2021
View reviewed changes
@jasnell jasnell mentioned this pull request Mar 19, 2021
WhatWG URL provides no suitable replacement for url.format() #25099
Closed
@jasnell
doc: add legacy status to stability index
f4d3377
Signed-off-by: James M Snell <[email protected]>
@jasnell
jasnell force-pushed the add-legacy-status branch from 1da2fbe to 3a762c1 Compare March 19, 2021 15:01
targos
targos approved these changes Mar 19, 2021
View reviewed changes
mhdawson
mhdawson reviewed Mar 19, 2021
View reviewed changes

@mhdawson mhdawson left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

LGTM

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
BethGriggs
BethGriggs approved these changes Mar 19, 2021
View reviewed changes
@jasnell
doc: revoke deprecation of legacy url, change status to legacy
c22762c
Signed-off-by: James M Snell <[email protected]>
Fixes: nodejs#25099
@jasnell
jasnell force-pushed the add-legacy-status branch from 3a762c1 to fa508a2 Compare March 19, 2021 17:55
@jasnell
doc: apply style for legacy status
dcc2345
Signed-off-by: James M Snell <[email protected]>
@jasnell
jasnell force-pushed the add-legacy-status branch from fa508a2 to dcc2345 Compare March 19, 2021 17:57
@jasnell

jasnell commented Mar 19, 2021

Copy link
Copy Markdown
Member Author

Landed in 971e009...d3417bb

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jasnell jasnell closed this Mar 19, 2021
jasnell added a commit that referenced this pull request Mar 19, 2021
@jasnell
doc: add legacy status to stability index
a8d05ba
Signed-off-by: James M Snell <[email protected]>

PR-URL: #37784
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Vladimir de Turckheim <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
Reviewed-By: Beth Griggs <[email protected]>
jasnell added a commit that referenced this pull request Mar 19, 2021
@jasnell
doc: revoke deprecation of legacy url, change status to legacy
64ba27c
Signed-off-by: James M Snell <[email protected]>
Fixes: #25099

PR-URL: #37784
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Vladimir de Turckheim <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
Reviewed-By: Beth Griggs <[email protected]>
jasnell added a commit that referenced this pull request Mar 19, 2021
@jasnell
doc: apply style for legacy status
d3417bb
Signed-off-by: James M Snell <[email protected]>

PR-URL: #37784
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Vladimir de Turckheim <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
Reviewed-By: Beth Griggs <[email protected]>
@ruyadorno ruyadorno added the notable-change PRs with changes that should be highlighted in changelogs. label Mar 24, 2021
ruyadorno pushed a commit that referenced this pull request Mar 24, 2021
@jasnell @ruyadorno
doc: add legacy status to stability index
9d160da
Signed-off-by: James M Snell <[email protected]>

PR-URL: #37784
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Vladimir de Turckheim <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
Reviewed-By: Beth Griggs <[email protected]>
ruyadorno pushed a commit that referenced this pull request Mar 24, 2021
@jasnell @ruyadorno
doc: revoke deprecation of legacy url, change status to legacy
185d4cd
Signed-off-by: James M Snell <[email protected]>
Fixes: #25099

PR-URL: #37784
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Vladimir de Turckheim <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
Reviewed-By: Beth Griggs <[email protected]>
ruyadorno pushed a commit that referenced this pull request Mar 24, 2021
@jasnell @ruyadorno
doc: apply style for legacy status
6da0a0e
Signed-off-by: James M Snell <[email protected]>

PR-URL: #37784
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Vladimir de Turckheim <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
Reviewed-By: Beth Griggs <[email protected]>
@ruyadorno ruyadorno mentioned this pull request Mar 30, 2021
v15.13.0 proposal #37977
Merged
ruyadorno added a commit that referenced this pull request Mar 30, 2021
@ruyadorno
2021-03-31, Version 15.13.0 (Current)
045dc91
PR-URL: #37977

Notable changes:

* buffer:
  * implement btoa and atob (James M Snell) #37529
* deps:
  * upgrade npm to 7.7.6 (Ruy Adorno) #37968
* doc:
  * add legacy status to stability index (James M Snell) #37784
  * add @Linkgoron to collaborators (Nitzan Uziely) #37817
* http:
  * add http.ClientRequest.getRawHeaderNames() (simov) #37660
ruyadorno added a commit that referenced this pull request Mar 31, 2021
@ruyadorno
2021-03-31, Version 15.13.0 (Current)
71a7722
PR-URL: #37977

Notable changes:

* buffer:
  * implement btoa and atob (James M Snell) #37529
* deps:
  * upgrade npm to 7.7.6 (Ruy Adorno) #37968
* doc:
  * add legacy status to stability index (James M Snell) #37784
  * add @Linkgoron to collaborators (Nitzan Uziely) #37817
* http:
  * add http.ClientRequest.getRawHeaderNames() (simov) #37660
ruyadorno added a commit that referenced this pull request Mar 31, 2021
@ruyadorno
2021-03-31, Version 15.13.0 (Current)
82bc5c3
PR-URL: #37977

Notable changes:

* buffer:
  * implement btoa and atob (James M Snell) #37529
* deps:
  * upgrade npm to 7.7.6 (Ruy Adorno) #37968
* doc:
  * add legacy status to stability index (James M Snell) #37784
  * add @Linkgoron to collaborators (Nitzan Uziely) #37817
* http:
  * add http.ClientRequest.getRawHeaderNames() (simov) #37660
targos pushed a commit that referenced this pull request May 1, 2021
@jasnell @targos
doc: add legacy status to stability index
e34aace
Signed-off-by: James M Snell <[email protected]>

PR-URL: #37784
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Vladimir de Turckheim <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
Reviewed-By: Beth Griggs <[email protected]>
targos pushed a commit that referenced this pull request May 1, 2021
@jasnell @targos
doc: revoke deprecation of legacy url, change status to legacy
c8383dd
Signed-off-by: James M Snell <[email protected]>
Fixes: #25099

PR-URL: #37784
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Vladimir de Turckheim <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
Reviewed-By: Beth Griggs <[email protected]>
targos pushed a commit that referenced this pull request May 1, 2021
@jasnell @targos
doc: apply style for legacy status
0d720a4
Signed-off-by: James M Snell <[email protected]>

PR-URL: #37784
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Vladimir de Turckheim <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
Reviewed-By: Beth Griggs <[email protected]>
@danielleadams danielleadams mentioned this pull request May 3, 2021
v14.17.0 proposal #38507
Merged
danielleadams added a commit that referenced this pull request May 3, 2021
@danielleadams
2021-05-04, Version 14.17.0 Fermium (LTS)
6fa8cae
PR-URL: #38507

Notable changes:

* assert:
  * change status of legacy asserts (James M Snell) (#38113)
* doc:
  * apply style for legacy status (James M Snell) (#37784)
  * revoke deprecation of legacy url, change status to legacy (James M Snell) (#37784)
  * add legacy status to stability index (James M Snell) (#37784)
  * upgrade stability status of report API (Gireesh Punathil) (#35654)
* deps:
  * V8: cherry-pick cf71540c684c (BoHong Li) (#38051)
  * update ICU to 68.1 (Michaël Zasso) (#36187)
  * upgrade to libuv 1.41.0 (Colin Ihrig) (#37360)
* fs:
  * add promisified readFile benchmark (Nitzan Uziely) (#37608)
* http:
  * add http.ClientRequest.getRawHeaderNames() (simov) (#37660)
  * report request start and end with diagnostics\_channel (Stephen Belanger) (#34895)
* lib:
  * create diagnostics\_channel module (Stephen Belanger) (#34895)
  * implement AbortSignal.abort() (James M Snell) (#37693)
* test:
  * update dom/abort tests (James M Snell) (#37693)
* util:
  * add getSystemErrorMap() impl (eladkeyshawn) (#38101)
danielleadams added a commit that referenced this pull request May 4, 2021
@danielleadams
2021-05-11, Version 14.17.0 Fermium (LTS)
13973b0
PR-URL: #38507

Notable changes:

* assert:
  * change status of legacy asserts (James M Snell) (#38113)
* doc:
  * apply style for legacy status (James M Snell) (#37784)
  * revoke deprecation of legacy url, change status to legacy (James M Snell) (#37784)
  * add legacy status to stability index (James M Snell) (#37784)
  * upgrade stability status of report API (Gireesh Punathil) (#35654)
* deps:
  * V8: cherry-pick cf71540c684c (BoHong Li) (#38051)
  * update ICU to 68.1 (Michaël Zasso) (#36187)
  * upgrade to libuv 1.41.0 (Colin Ihrig) (#37360)
* fs:
  * add promisified readFile benchmark (Nitzan Uziely) (#37608)
* http:
  * add http.ClientRequest.getRawHeaderNames() (simov) (#37660)
  * report request start and end with diagnostics\_channel (Stephen Belanger) (#34895)
* lib:
  * create diagnostics\_channel module (Stephen Belanger) (#34895)
  * implement AbortSignal.abort() (James M Snell) (#37693)
* test:
  * update dom/abort tests (James M Snell) (#37693)
* util:
  * add getSystemErrorMap() impl (eladkeyshawn) (#38101)
danielleadams added a commit that referenced this pull request May 7, 2021
@danielleadams
2021-05-11, Version 14.17.0 Fermium (LTS)
8798145
PR-URL: #38507

Notable changes:

* assert:
  * change status of legacy asserts (James M Snell) (#38113)
* crypto:
  * implement randomuuid (James M Snell) (#36729)
* doc:
  * apply style for legacy status (James M Snell) (#37784)
  * revoke deprecation of legacy url, change status to legacy (James M Snell) (#37784)
  * add legacy status to stability index (James M Snell) (#37784)
  * upgrade stability status of report API (Gireesh Punathil) (#35654)
* deps:
  * V8: Backport various patches for Apple Silicon support (BoHong Li) (#38051)
  * update ICU to 68.1 (Michaël Zasso) (#36187)
  * upgrade to libuv 1.41.0 (Colin Ihrig) (#37360)
* http:
  * add http.ClientRequest.getRawHeaderNames() (simov) (#37660)
  * report request start and end with diagnostics\_channel (Stephen Belanger) (#34895)
* lib:
  * create diagnostics\_channel module (Stephen Belanger) (#34895)
  * implement AbortSignal.abort() (James M Snell) (#37693)
* test:
  * update dom/abort tests (James M Snell) (#37693)
* util:
  * add getSystemErrorMap() impl (eladkeyshawn) (#38101)
danielleadams added a commit that referenced this pull request May 8, 2021
@danielleadams
2021-05-11, Version 14.17.0 Fermium (LTS)
523b431
PR-URL: #38507

Notable changes:

* crypto:
  * implement randomuuid (James M Snell) (#36729)
* doc:
  * apply style for legacy status (James M Snell) (#37784)
  * revoke deprecation of legacy url, change status to legacy (James M Snell) (#37784)
  * add legacy status to stability index (James M Snell) (#37784)
  * upgrade stability status of report API (Gireesh Punathil) (#35654)
* deps:
  * V8: Backport various patches for Apple Silicon support (BoHong Li) (#38051)
  * update ICU to 68.1 (Michaël Zasso) (#36187)
  * upgrade to libuv 1.41.0 (Colin Ihrig) (#37360)
* http:
  * add http.ClientRequest.getRawHeaderNames() (simov) (#37660)
  * report request start and end with diagnostics\_channel (Stephen Belanger) (#34895)
* lib:
  * create diagnostics\_channel module (Stephen Belanger) (#34895)
  * implement AbortSignal.abort() (James M Snell) (#37693)
* test:
  * update dom/abort tests (James M Snell) (#37693)
* util:
  * add getSystemErrorMap() impl (eladkeyshawn) (#38101)
danielleadams added a commit that referenced this pull request May 10, 2021
@danielleadams
2021-05-11, Version 14.17.0 Fermium (LTS)
bd2b27f
Notable changes:

Diagnostics channel (experimental module):

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

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

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

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

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

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

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

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

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

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

Contributed by Stephen Belanger (#34895).

UUID support in the crypto module:

The new `crypto.randomUUID()` method now allows to generate random
[RFC 4122](https://www.rfc-editor.org/rfc/rfc4122.txt) Version 4 UUID strings:

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

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

Contributed by James M Snell (#36729.

Experimental support for `AbortController` and `AbortSignal`:

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

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

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

`AbortSignal` support was added to the following methods:

* `child_process.exec`
* `child_process.execFile`
* `child_process.fork`
* `child_process.spawn`
* `dgram.createSocket`
* `events.on`
* `events.once`
* `fs.readFile`
* `fs.watch`
* `fs.writeFile`
* `http.request`
* `https.request`
* `http2Session.request`
* The promisified variants of `setImmediate` and `setTimeout`

Other notable changes:

* doc:
  * revoke deprecation of legacy url, change status to legacy (James M Snell) (#37784)
  * add legacy status to stability index (James M Snell) (#37784)
  * upgrade stability status of report API (Gireesh Punathil) (#35654)
* deps:
  * V8: Backport various patches for Apple Silicon support (BoHong Li) (#38051)
  * update ICU to 68.1 (Michaël Zasso) (#36187)
  * upgrade to libuv 1.41.0 (Colin Ihrig) (#37360)
* http:
  * add http.ClientRequest.getRawHeaderNames() (simov) (#37660)
  * report request start and end with diagnostics\_channel (Stephen Belanger) (#34895)
* util:
  * add getSystemErrorMap() impl (eladkeyshawn) (#38101)

PR-URL: #38507
danielleadams added a commit that referenced this pull request May 11, 2021
@danielleadams
2021-05-11, Version 14.17.0 'Fermium' (LTS), @danielleadams
d132e9d
Notable Changes:

Diagnostics channel (experimental module):

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

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

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

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

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

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

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

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

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

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

Contributed by Stephen Belanger (#34895).

UUID support in the crypto module:

The new `crypto.randomUUID()` method now allows to generate random
[RFC 4122](https://www.rfc-editor.org/rfc/rfc4122.txt) Version 4
UUID strings:

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

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

Contributed by James M Snell (#36729).

Experimental support for `AbortController` and `AbortSignal`:

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

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

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

`AbortSignal` support was added to the following methods:

* `child_process.exec`
* `child_process.execFile`
* `child_process.fork`
* `child_process.spawn`
* `dgram.createSocket`
* `events.on`
* `events.once`
* `fs.readFile`
* `fs.watch`
* `fs.writeFile`
* `http.request`
* `https.request`
* `http2Session.request`
* The promisified variants of `setImmediate` and `setTimeout`

Other notable changes:

* doc:
  * revoke deprecation of legacy url, change status to legacy (James M Snell) (#37784)
  * add legacy status to stability index (James M Snell) (#37784)
  * upgrade stability status of report API (Gireesh Punathil) (#35654)
* deps:
  * V8: Backport various patches for Apple Silicon support (BoHong Li) (#38051)
  * update ICU to 68.1 (Michaël Zasso) (#36187)
  * upgrade to libuv 1.41.0 (Colin Ihrig) (#37360)
* http:
  * add http.ClientRequest.getRawHeaderNames() (simov) (#37660)
  * report request start and end with diagnostics\_channel (Stephen Belanger) (#34895)
* util:
  * add getSystemErrorMap() impl (eladkeyshawn) (#38101)

PR-URL: #38507
danielleadams added a commit that referenced this pull request May 11, 2021
@danielleadams
2021-05-11, Version 14.17.0 'Fermium' (LTS)
aa15690
Notable Changes:

Diagnostics channel (experimental module):

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

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

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

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

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

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

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

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

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

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

Contributed by Stephen Belanger (#34895).

UUID support in the crypto module:

The new `crypto.randomUUID()` method now allows to generate random
[RFC 4122](https://www.rfc-editor.org/rfc/rfc4122.txt) Version 4
UUID strings:

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

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

Contributed by James M Snell (#36729).

Experimental support for `AbortController` and `AbortSignal`:

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

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

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

`AbortSignal` support was added to the following methods:

* `child_process.exec`
* `child_process.execFile`
* `child_process.fork`
* `child_process.spawn`
* `dgram.createSocket`
* `events.on`
* `events.once`
* `fs.readFile`
* `fs.watch`
* `fs.writeFile`
* `http.request`
* `https.request`
* `http2Session.request`
* The promisified variants of `setImmediate` and `setTimeout`

Other notable changes:

* doc:
  * revoke deprecation of legacy url, change status to legacy (James M Snell) (#37784)
  * add legacy status to stability index (James M Snell) (#37784)
  * upgrade stability status of report API (Gireesh Punathil) (#35654)
* deps:
  * V8: Backport various patches for Apple Silicon support (BoHong Li) (#38051)
  * update ICU to 68.1 (Michaël Zasso) (#36187)
  * upgrade to libuv 1.41.0 (Colin Ihrig) (#37360)
* http:
  * add http.ClientRequest.getRawHeaderNames() (simov) (#37660)
  * report request start and end with diagnostics\_channel (Stephen Belanger) (#34895)
* util:
  * add getSystemErrorMap() impl (eladkeyshawn) (#38101)

PR-URL: #38507
danielleadams added a commit that referenced this pull request May 11, 2021
@danielleadams
2021-05-11, Version 14.17.0 'Fermium' (LTS)
16e00a1
Notable Changes:

Diagnostics channel (experimental module):

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

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

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

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

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

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

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

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

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

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

Contributed by Stephen Belanger (#34895).

UUID support in the crypto module:

The new `crypto.randomUUID()` method now allows to generate random
[RFC 4122](https://www.rfc-editor.org/rfc/rfc4122.txt) Version 4
UUID strings:

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

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

Contributed by James M Snell (#36729).

Experimental support for `AbortController` and `AbortSignal`:

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

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

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

`AbortSignal` support was added to the following methods:

* `child_process.exec`
* `child_process.execFile`
* `child_process.fork`
* `child_process.spawn`
* `dgram.createSocket`
* `events.on`
* `events.once`
* `fs.readFile`
* `fs.watch`
* `fs.writeFile`
* `http.request`
* `https.request`
* `http2Session.request`
* The promisified variants of `setImmediate` and `setTimeout`

Other notable changes:

* doc:
  * revoke deprecation of legacy url, change status to legacy (James M Snell) (#37784)
  * add legacy status to stability index (James M Snell) (#37784)
  * upgrade stability status of report API (Gireesh Punathil) (#35654)
* deps:
  * V8: Backport various patches for Apple Silicon support (BoHong Li) (#38051)
  * update ICU to 68.1 (Michaël Zasso) (#36187)
  * upgrade to libuv 1.41.0 (Colin Ihrig) (#37360)
* http:
  * add http.ClientRequest.getRawHeaderNames() (simov) (#37660)
  * report request start and end with diagnostics\_channel (Stephen Belanger) (#34895)
* util:
  * add getSystemErrorMap() impl (eladkeyshawn) (#38101)

PR-URL: #38507
@kt3k kt3k mentioned this pull request Nov 8, 2021
docs(node/querystring): Add docs denoland/std#1531
Merged
@RaisinTen RaisinTen mentioned this pull request Mar 6, 2022
Are we ready to deprecate url.parse() now? #42232
Closed
2 of 3 tasks
@RANIAJN

This comment was marked as off-topic.

Sign in to view
This was referenced Feb 11, 2026
url: doc deprecate url.resolve #61780
Closed
url: only emit DEP0169 on url.parse #61776
Closed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@ljharb ljharb ljharb left review comments
@aduh95 aduh95 aduh95 left review comments
@mcollina mcollina mcollina approved these changes
@addaleax addaleax addaleax approved these changes
@BethGriggs BethGriggs BethGriggs approved these changes
@marsonya marsonya marsonya approved these changes
+3 more reviewers
@mhdawson mhdawson mhdawson left review comments
@targos targos targos approved these changes
@vdeturckheim vdeturckheim vdeturckheim approved these changes
Reviewers whose approvals may not affect merge requirements

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

author ready PRs with CI started, the required approvals, and no outstanding review comments. doc Issues and PRs related to Node.js documentation. notable-change PRs with changes that should be highlighted in changelogs.

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

13 participants

@jasnell @aduh95 @ljharb @marsonya @RANIAJN @mcollina @addaleax @targos @vdeturckheim @BethGriggs @mhdawson @ruyadorno @nodejs-github-bot
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.