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 (https://github.com/nodejs/node/pull/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 (https://github.com/nodejs/node/pull/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) (https://github.com/nodejs/node/pull/37784)
* add legacy status to stability index (James M Snell) (https://github.com/nodejs/node/pull/37784)
* upgrade stability status of report API (Gireesh Punathil) (https://github.com/nodejs/node/pull/35654)
* deps:
* V8: Backport various patches for Apple Silicon support (BoHong Li) (https://github.com/nodejs/node/pull/38051)
* update ICU to 68.1 (Michaël Zasso) (https://github.com/nodejs/node/pull/36187)
* upgrade to libuv 1.41.0 (Colin Ihrig) (https://github.com/nodejs/node/pull/37360)
* http:
* add http.ClientRequest.getRawHeaderNames() (simov) (https://github.com/nodejs/node/pull/37660)
* report request start and end with diagnostics\_channel (Stephen Belanger) (https://github.com/nodejs/node/pull/34895)
* util:
* add getSystemErrorMap() impl (eladkeyshawn) (https://github.com/nodejs/node/pull/38101)
PR-URL: https://github.com/nodejs/node/pull/38507
## 2021-05-11, Version 14.17.0 'Fermium' (LTS), @danielleadams
### 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](https://github.com/nodejs/node/pull/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](https://github.com/nodejs/node/pull/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](https://github.com/nodejs/node/pull/37784)
* add legacy status to stability index (James M Snell) [#37784](https://github.com/nodejs/node/pull/37784)
* upgrade stability status of report API (Gireesh Punathil) [#35654](https://github.com/nodejs/node/pull/35654)
* **deps**:
* V8: Backport various patches for Apple Silicon support (BoHong Li) [#38051](https://github.com/nodejs/node/pull/38051)
* update ICU to 68.1 (Michaël Zasso) [#36187](https://github.com/nodejs/node/pull/36187)
* upgrade to libuv 1.41.0 (Colin Ihrig) [#37360](https://github.com/nodejs/node/pull/37360)
* [[`bf2d9f25d4`](https://github.com/nodejs/node/commit/bf2d9f25d4)] - **(SEMVER-MINOR)** **buffer**: implement btoa and atob (James M Snell) [#37529](https://github.com/nodejs/node/pull/37529)
* [[`0544410328`](https://github.com/nodejs/node/commit/0544410328)] - **buffer,errors**: add missing n literal in range error string (Cactysman) [#37750](https://github.com/nodejs/node/pull/37750)
* [[`5667d0a540`](https://github.com/nodejs/node/commit/5667d0a540)] - **build**: don't run test workflow on doc dir on macOS (ycjcl868) [#37999](https://github.com/nodejs/node/pull/37999)
* [[`38921b3805`](https://github.com/nodejs/node/commit/38921b3805)] - **build**: do not "exit" a script meant to be "source"d (François-Denis Gonthier) [#35520](https://github.com/nodejs/node/pull/35520)
* [[`dcbcd9e045`](https://github.com/nodejs/node/commit/dcbcd9e045)] - **build**: run some workflows only on nodejs/node (Michaël Zasso) [#36507](https://github.com/nodejs/node/pull/36507)
* [[`cda0a80713`](https://github.com/nodejs/node/commit/cda0a80713)] - **build**: fix typo in Makefile (raisinten) [#36176](https://github.com/nodejs/node/pull/36176)
* [[`d8f8719415`](https://github.com/nodejs/node/commit/d8f8719415)] - **build**: do not pass mode option to test-v8 command (Michaël Zasso) [#38275](https://github.com/nodejs/node/pull/38275)
* [[`385e8e8d7b`](https://github.com/nodejs/node/commit/385e8e8d7b)] - **(SEMVER-MINOR)** **child_process**: support AbortSignal in fork (Benjamin Gruenbaum) [#36603](https://github.com/nodejs/node/pull/36603)
* [[`0b691ce57e`](https://github.com/nodejs/node/commit/0b691ce57e)] - **(SEMVER-MINOR)** **child_process**: add signal support to spawn (Benjamin Gruenbaum) [#36432](https://github.com/nodejs/node/pull/36432)
* [[`723977feaa`](https://github.com/nodejs/node/commit/723977feaa)] - **crypto**: reduce range of size to int max (Qingyu Deng) [#38096](https://github.com/nodejs/node/pull/38096)
* [[`d56079ab9b`](https://github.com/nodejs/node/commit/d56079ab9b)] - **deps**: update to cjs-module-lexer@1.1.1 (Guy Bedford) [#38002](https://github.com/nodejs/node/pull/38002)
* [[`866e3244da`](https://github.com/nodejs/node/commit/866e3244da)] - **deps**: V8: Backport various patches for Apple Silicon support (BoHong Li) [#38051](https://github.com/nodejs/node/pull/38051)
* [[`16b59c62ff`](https://github.com/nodejs/node/commit/16b59c62ff)] - **deps**: cherry-pick 8957d4677aa794c230577f234071af0 from V8 upstream (Antoine du Hamel) [#37471](https://github.com/nodejs/node/pull/37471)
* [[`4350bf5a0b`](https://github.com/nodejs/node/commit/4350bf5a0b)] - **doc**: mention cryptographic prng in description of randomUUID (Serkan Özel) [#38074](https://github.com/nodejs/node/pull/38074)
* [[`424c8e1eb9`](https://github.com/nodejs/node/commit/424c8e1eb9)] - **doc**: add link to V8 (Voltrex) [#38144](https://github.com/nodejs/node/pull/38144)
* [[`ecc85516cf`](https://github.com/nodejs/node/commit/ecc85516cf)] - **doc**: improve security text in collaborators guide (Rich Trott) [#38107](https://github.com/nodejs/node/pull/38107)
* [[`aff0cd3ea6`](https://github.com/nodejs/node/commit/aff0cd3ea6)] - **doc**: sending http request to localhost to avoid https redirect (Hassaan Pasha) [#38036](https://github.com/nodejs/node/pull/38036)
* [[`56aaf7010c`](https://github.com/nodejs/node/commit/56aaf7010c)] - **doc**: apply sentence case to backporting-to-release-lines.md headers (marsonya) [#37617](https://github.com/nodejs/node/pull/37617)
* [[`8615fa1983`](https://github.com/nodejs/node/commit/8615fa1983)] - **doc**: add parentheses to function and move reference (Rich Trott) [#38066](https://github.com/nodejs/node/pull/38066)
* [[`df54edc668`](https://github.com/nodejs/node/commit/df54edc668)] - **doc**: document how to unref stdin when using readline.Interface (Anu Pasumarthy) [#38019](https://github.com/nodejs/node/pull/38019)
* [[`69c4bfd750`](https://github.com/nodejs/node/commit/69c4bfd750)] - **doc**: add distinctive color for code elements inside links (Antoine du Hamel) [#37950](https://github.com/nodejs/node/pull/37950)
* [[`35a382e814`](https://github.com/nodejs/node/commit/35a382e814)] - **doc**: add Windows-specific info to subprocess.kill() (João Lucas Lucchetta) [#34867](https://github.com/nodejs/node/pull/34867)
* [[`2a5f21f9cd`](https://github.com/nodejs/node/commit/2a5f21f9cd)] - **doc**: fix typos in lib/internal/bootstrap/pre\_execution.js (marsonya) [#37658](https://github.com/nodejs/node/pull/37658)
* [[`9f1f2153e9`](https://github.com/nodejs/node/commit/9f1f2153e9)] - **doc**: add more commands for cherry-picking and changelog to release docs (Danielle Adams) [#37785](https://github.com/nodejs/node/pull/37785)
* [[`dd1c47bbf3`](https://github.com/nodejs/node/commit/dd1c47bbf3)] - **doc**: spell out ICU acronym on first occurrence (Rich Trott) [#37942](https://github.com/nodejs/node/pull/37942)
* [[`585f1119a3`](https://github.com/nodejs/node/commit/585f1119a3)] - **doc**: update GOVERNANCE.md for TSC Charter changes (Rich Trott) [#37888](https://github.com/nodejs/node/pull/37888)
* [[`7789159009`](https://github.com/nodejs/node/commit/7789159009)] - **doc**: add examples for WHATWG URL objects (James M Snell) [#37822](https://github.com/nodejs/node/pull/37822)
* [[`b31bb72c10`](https://github.com/nodejs/node/commit/b31bb72c10)] - **doc**: clarify when child process 'spawn' event is \*not\* emitted (Matthew Francis Brunetti) [#37833](https://github.com/nodejs/node/pull/37833)
* [[`89418e8758`](https://github.com/nodejs/node/commit/89418e8758)] - **doc**: use sentence case in issues.md headers (marsonya) [#37537](https://github.com/nodejs/node/pull/37537)
* [[`66502fc186`](https://github.com/nodejs/node/commit/66502fc186)] - **doc**: move Derek Lewis back to collaborators (Derek Lewis) [#37726](https://github.com/nodejs/node/pull/37726)
* [[`0d720a4a5c`](https://github.com/nodejs/node/commit/0d720a4a5c)] - **doc**: apply style for legacy status (James M Snell) [#37784](https://github.com/nodejs/node/pull/37784)
* [[`c8383dd99f`](https://github.com/nodejs/node/commit/c8383dd99f)] - **doc**: revoke deprecation of legacy url, change status to legacy (James M Snell) [#37784](https://github.com/nodejs/node/pull/37784)
* [[`e34aace62b`](https://github.com/nodejs/node/commit/e34aace62b)] - **doc**: add legacy status to stability index (James M Snell) [#37784](https://github.com/nodejs/node/pull/37784)
* [[`02cd4044da`](https://github.com/nodejs/node/commit/02cd4044da)] - **doc**: fix link to googletest fixtures (Tobias Nießen) [#37698](https://github.com/nodejs/node/pull/37698)
* [[`85a293bdfc`](https://github.com/nodejs/node/commit/85a293bdfc)] - **doc**: fix typo in description of close event (Tobias Nießen) [#37662](https://github.com/nodejs/node/pull/37662)
* [[`3a6e40530c`](https://github.com/nodejs/node/commit/3a6e40530c)] - **doc**: use sentence case in README.md headers (marsonya) [#37645](https://github.com/nodejs/node/pull/37645)
* [[`b0840ac680`](https://github.com/nodejs/node/commit/b0840ac680)] - **doc**: fix typo in doc/guides/collaborator-guide.md (marsonya) [#37643](https://github.com/nodejs/node/pull/37643)
* [[`5ef2a8de25`](https://github.com/nodejs/node/commit/5ef2a8de25)] - **doc**: document that module.evaluate fulfills as undefined (James M Snell) [#37663](https://github.com/nodejs/node/pull/37663)
* [[`b192227a95`](https://github.com/nodejs/node/commit/b192227a95)] - **doc**: add return type of readline.createInterface (Darshan Sen) [#37600](https://github.com/nodejs/node/pull/37600)
* [[`68d5cb80de`](https://github.com/nodejs/node/commit/68d5cb80de)] - **doc**: apply sentence case to headers in pull-requests.md (marsonya) [#37602](https://github.com/nodejs/node/pull/37602)
* [[`183dba0dd8`](https://github.com/nodejs/node/commit/183dba0dd8)] - **doc**: add top-level await syntax in vm.md (Antoine du Hamel) [#37077](https://github.com/nodejs/node/pull/37077)
* [[`1dc7f426aa`](https://github.com/nodejs/node/commit/1dc7f426aa)] - **doc**: clarify that columnOffset applies only to the first line (James M Snell) [#37563](https://github.com/nodejs/node/pull/37563)
* [[`c21731b39f`](https://github.com/nodejs/node/commit/c21731b39f)] - **doc**: document that NODE\_EXTRA\_CA\_CERTS is read only once (James M Snell) [#37562](https://github.com/nodejs/node/pull/37562)
* [[`0255ed7e8e`](https://github.com/nodejs/node/commit/0255ed7e8e)] - **doc**: fix typo in doc/api/packages.md (marsonya) [#37536](https://github.com/nodejs/node/pull/37536)
* [[`52c0f0bf0f`](https://github.com/nodejs/node/commit/52c0f0bf0f)] - **doc**: revise LTS text in collaborator guide (Rich Trott) [#37527](https://github.com/nodejs/node/pull/37527)
* [[`fdc6a96d49`](https://github.com/nodejs/node/commit/fdc6a96d49)] - **doc**: revise CI text in collaborator guide (Rich Trott) [#37526](https://github.com/nodejs/node/pull/37526)
* [[`adc75368ba`](https://github.com/nodejs/node/commit/adc75368ba)] - **doc**: revise premature disclosure text in collaborator guide (Rich Trott) [#37524](https://github.com/nodejs/node/pull/37524)
* [[`1b851461b1`](https://github.com/nodejs/node/commit/1b851461b1)] - **doc**: change links to use HEAD in top level docs (Michael Dawson) [#37494](https://github.com/nodejs/node/pull/37494)
* [[`64ed65ecc4`](https://github.com/nodejs/node/commit/64ed65ecc4)] - **doc**: apply sentence case to headers in doc/guides (marsonya) [#37506](https://github.com/nodejs/node/pull/37506)
* [[`ff1990c409`](https://github.com/nodejs/node/commit/ff1990c409)] - **doc**: add url.resolve replacement example (Antoine du Hamel) [#37501](https://github.com/nodejs/node/pull/37501)
* [[`52b3b54c14`](https://github.com/nodejs/node/commit/52b3b54c14)] - **doc**: apply sentence case to guides headers (marsonya) [#37497](https://github.com/nodejs/node/pull/37497)
* [[`da2cd4a48a`](https://github.com/nodejs/node/commit/da2cd4a48a)] - **doc**: update CI requirements for landing pull requests (Antoine du Hamel) [#37308](https://github.com/nodejs/node/pull/37308)
* [[`2082f5bd68`](https://github.com/nodejs/node/commit/2082f5bd68)] - **doc**: recommend queueMicrotask over process.nextTick (James M Snell) [#37484](https://github.com/nodejs/node/pull/37484)
* [[`099eef6a84`](https://github.com/nodejs/node/commit/099eef6a84)] - **doc**: apply sentence case to headers in doc/guides (marsonya) [#37478](https://github.com/nodejs/node/pull/37478)
* [[`a0bab6915e`](https://github.com/nodejs/node/commit/a0bab6915e)] - **doc**: fix typo in doc/api/http2/md (marsonya) [#37479](https://github.com/nodejs/node/pull/37479)
* [[`3e82263877`](https://github.com/nodejs/node/commit/3e82263877)] - **doc**: alphabetize vm Module class properties (Rich Trott) [#37451](https://github.com/nodejs/node/pull/37451)
* [[`bb434a983c`](https://github.com/nodejs/node/commit/bb434a983c)] - **doc**: use HEAD for links in api docs (Michael Dawson) [#37437](https://github.com/nodejs/node/pull/37437)
* [[`74f0760a9b`](https://github.com/nodejs/node/commit/74f0760a9b)] - **doc**: use HEAD in links where possible (Michael Dawson) [#37421](https://github.com/nodejs/node/pull/37421)
* [[`4785755014`](https://github.com/nodejs/node/commit/4785755014)] - **doc**: clarify that async\_hook callbacks cannot be async (James M Snell) [#37384](https://github.com/nodejs/node/pull/37384)
* [[`d426143f54`](https://github.com/nodejs/node/commit/d426143f54)] - **doc**: link PACKAGE\_EXPORTS\_RESOLVE to ESM section (Utku Gultopu) [#37135](https://github.com/nodejs/node/pull/37135)
* [[`debffd9b41`](https://github.com/nodejs/node/commit/debffd9b41)] - **doc**: use sentence case in benchmark doc (Rich Trott) [#37351](https://github.com/nodejs/node/pull/37351)
* [[`f28a5c6e1e`](https://github.com/nodejs/node/commit/f28a5c6e1e)] - **doc**: apply sentence-consistently in C++ style guide (Rich Trott) [#37350](https://github.com/nodejs/node/pull/37350)
* [[`569ad98b9a`](https://github.com/nodejs/node/commit/569ad98b9a)] - **doc**: apply sentence case to release doc headers (Rich Trott) [#37349](https://github.com/nodejs/node/pull/37349)
* [[`5ade2fd207`](https://github.com/nodejs/node/commit/5ade2fd207)] - **doc**: fix typo in deprecations.md (marsonya) [#37282](https://github.com/nodejs/node/pull/37282)
* [[`5bc0a0d9f7`](https://github.com/nodejs/node/commit/5bc0a0d9f7)] - **doc**: add version metadata for packages features (Antoine du Hamel) [#37289](https://github.com/nodejs/node/pull/37289)
* [[`b485a3e2d2`](https://github.com/nodejs/node/commit/b485a3e2d2)] - **doc**: fix typo in /api/dns.md (marsonya) [#37312](https://github.com/nodejs/node/pull/37312)
* [[`8c41bc953e`](https://github.com/nodejs/node/commit/8c41bc953e)] - **doc**: fix misnamed SHASUMS256.txt name in README.md (marsonya) [#37260](https://github.com/nodejs/node/pull/37260)
* [[`b2ee1afb2e`](https://github.com/nodejs/node/commit/b2ee1afb2e)] - **doc**: fix typo in console.md (marsonya) [#37279](https://github.com/nodejs/node/pull/37279)
* [[`281d75cebb`](https://github.com/nodejs/node/commit/281d75cebb)] - **doc**: use sentence case in README headers (Rich Trott) [#37251](https://github.com/nodejs/node/pull/37251)
* [[`8cffab6571`](https://github.com/nodejs/node/commit/8cffab6571)] - **doc**: use sentence case for headers in BUILDING.md (Rich Trott) [#37250](https://github.com/nodejs/node/pull/37250)
* [[`cb632e4040`](https://github.com/nodejs/node/commit/cb632e4040)] - **doc**: fix version number for DEP006 (Antoine du Hamel) [#37231](https://github.com/nodejs/node/pull/37231)
* [[`e7415c374b`](https://github.com/nodejs/node/commit/e7415c374b)] - **doc**: fix CHANGELOG\_ARCHIVE table of contents (Antoine du Hamel) [#37232](https://github.com/nodejs/node/pull/37232)
* [[`ad80e3de1e`](https://github.com/nodejs/node/commit/ad80e3de1e)] - **doc**: fix 404 links in module.md (Antoine du Hamel) [#37202](https://github.com/nodejs/node/pull/37202)
* [[`e7ca9b6d71`](https://github.com/nodejs/node/commit/e7ca9b6d71)] - **doc**: fix color contrast on \<kbd\> elements (Antoine du Hamel) [#37185](https://github.com/nodejs/node/pull/37185)
* [[`35cf86c83b`](https://github.com/nodejs/node/commit/35cf86c83b)] - **doc**: fix list format in Developer's Certificate of Origin (Akash Negi) [#37138](https://github.com/nodejs/node/pull/37138)
* [[`26ec20a9b6`](https://github.com/nodejs/node/commit/26ec20a9b6)] - **doc**: add example for test structure (Turner Jabbour) [#35046](https://github.com/nodejs/node/pull/35046)
* [[`8099bfb35c`](https://github.com/nodejs/node/commit/8099bfb35c)] - **doc**: remove TOC summary for pages with no TOC (Rich Trott) [#37043](https://github.com/nodejs/node/pull/37043)
* [[`b8080134a2`](https://github.com/nodejs/node/commit/b8080134a2)] - **doc**: add missing comma in tty (Matthew Mario Di Pasquale) [#37039](https://github.com/nodejs/node/pull/37039)
* [[`308d361a79`](https://github.com/nodejs/node/commit/308d361a79)] - **doc**: use ESM syntax for WASI example (Antoine du Hamel) [#36848](https://github.com/nodejs/node/pull/36848)
* [[`28c80b514f`](https://github.com/nodejs/node/commit/28c80b514f)] - **doc**: add alternative version links to the packages page (Filip Skokan) [#36915](https://github.com/nodejs/node/pull/36915)
* [[`580b647ee4`](https://github.com/nodejs/node/commit/580b647ee4)] - **doc**: update tls test to use better terminology (Michael Dawson) [#36851](https://github.com/nodejs/node/pull/36851)
* [[`583b2192d9`](https://github.com/nodejs/node/commit/583b2192d9)] - **doc**: wrap TOC in a \<details\> tag (Mattia Pontonio) [#36896](https://github.com/nodejs/node/pull/36896)
* [[`19e61206f2`](https://github.com/nodejs/node/commit/19e61206f2)] - **doc**: add dark mode (Ajay Poshak) [#36313](https://github.com/nodejs/node/pull/36313)
* [[`8620458966`](https://github.com/nodejs/node/commit/8620458966)] - **doc**: revise method text in async\_hooks.md (Rich Trott) [#36736](https://github.com/nodejs/node/pull/36736)
* [[`a800b5b698`](https://github.com/nodejs/node/commit/a800b5b698)] - **doc**: clarify when messageerror is emitted (James M Snell) [#36780](https://github.com/nodejs/node/pull/36780)
* [[`e973bdc14e`](https://github.com/nodejs/node/commit/e973bdc14e)] - **doc**: avoid memory leak warning in async\_hooks example (James M Snell) [#36783](https://github.com/nodejs/node/pull/36783)
* [[`1521a59002`](https://github.com/nodejs/node/commit/1521a59002)] - **doc**: clarify that --require only supports cjs (James M Snell) [#36806](https://github.com/nodejs/node/pull/36806)
* [[`dc15608661`](https://github.com/nodejs/node/commit/dc15608661)] - **doc**: clarify Buffer.from when using ArrayBuffer (James M Snell) [#36785](https://github.com/nodejs/node/pull/36785)
* [[`67a6e9c516`](https://github.com/nodejs/node/commit/67a6e9c516)] - **doc**: fix broken link for ChildProcess (James M Snell) [#36788](https://github.com/nodejs/node/pull/36788)
* [[`31039dbf63`](https://github.com/nodejs/node/commit/31039dbf63)] - **doc**: revise exit() and run() text in async\_hooks.md (Rich Trott) [#36738](https://github.com/nodejs/node/pull/36738)
* [[`844a15622f`](https://github.com/nodejs/node/commit/844a15622f)] - **doc**: clarify that N-API addons are context-aware (Alba Mendez) [#36640](https://github.com/nodejs/node/pull/36640)
* [[`afb9534d65`](https://github.com/nodejs/node/commit/afb9534d65)] - **doc**: correct callback parameter type for createPushResponse() (Rich Trott) [#36631](https://github.com/nodejs/node/pull/36631)
* [[`f65b842ee1`](https://github.com/nodejs/node/commit/f65b842ee1)] - **doc**: use \_code name\_ rather than \_codename\_ (Rich Trott) [#36611](https://github.com/nodejs/node/pull/36611)
* [[`12dc0e6a28`](https://github.com/nodejs/node/commit/12dc0e6a28)] - **doc**: document return value of https.request (Michael Chen) [#36370](https://github.com/nodejs/node/pull/36370)
* [[`b57785d89b`](https://github.com/nodejs/node/commit/b57785d89b)] - **doc**: update and run license-builder for Babel (Michaël Zasso) [#36504](https://github.com/nodejs/node/pull/36504)
* [[`8b349187b8`](https://github.com/nodejs/node/commit/8b349187b8)] - **doc**: add two tips for speeding the dev builds (Momtchil Momtchev) [#36452](https://github.com/nodejs/node/pull/36452)
* [[`6198d74cd3`](https://github.com/nodejs/node/commit/6198d74cd3)] - **doc**: add note about timingSafeEqual for TypedArray (Tobias Nießen) [#36323](https://github.com/nodejs/node/pull/36323)
* [[`d27028040e`](https://github.com/nodejs/node/commit/d27028040e)] - **doc**: move Derek Lewis to emeritus (Rich Trott) [#36514](https://github.com/nodejs/node/pull/36514)
* [[`647ec70419`](https://github.com/nodejs/node/commit/647ec70419)] - **doc**: add license info to the README (FrankQiu) [#36278](https://github.com/nodejs/node/pull/36278)
* [[`615a0aaf86`](https://github.com/nodejs/node/commit/615a0aaf86)] - **doc**: reword POSIX threads text in addons.md (Rich Trott) [#36436](https://github.com/nodejs/node/pull/36436)
* [[`94d41f22f0`](https://github.com/nodejs/node/commit/94d41f22f0)] - **doc**: add RaisinTen as a triager (raisinten) [#36404](https://github.com/nodejs/node/pull/36404)
* [[`cd065210a5`](https://github.com/nodejs/node/commit/cd065210a5)] - **doc**: provide more context on techinical values (Michael Dawson) [#36201](https://github.com/nodejs/node/pull/36201)
* [[`f515156fab`](https://github.com/nodejs/node/commit/f515156fab)] - **doc**: add Powershell oneliner to get Windows version (Michael Bashurov) [#30289](https://github.com/nodejs/node/pull/30289)
* [[`280d1b09be`](https://github.com/nodejs/node/commit/280d1b09be)] - **doc**: add process for handling premature disclosure (Michael Dawson) [#36155](https://github.com/nodejs/node/pull/36155)
* [[`cf4fa79f17`](https://github.com/nodejs/node/commit/cf4fa79f17)] - **doc**: recommend checking abortSignal.aborted first (James M Snell) [#37714](https://github.com/nodejs/node/pull/37714)
* [[`e93615c5e3`](https://github.com/nodejs/node/commit/e93615c5e3)] - **doc**: make AbortSignal text consistent in events.md (Rich Trott) [#35005](https://github.com/nodejs/node/pull/35005)
* [[`1a362d8d4b`](https://github.com/nodejs/node/commit/1a362d8d4b)] - **doc**: revise AbortSignal text and example using events.once() (Rich Trott) [#35005](https://github.com/nodejs/node/pull/35005)
* [[`a7da993cff`](https://github.com/nodejs/node/commit/a7da993cff)] - **doc**: stabilize packages features (Myles Borins) [#35742](https://github.com/nodejs/node/pull/35742)
* [[`b133034735`](https://github.com/nodejs/node/commit/b133034735)] - **doc**: stabilize subpath patterns (Guy Bedford) [#36177](https://github.com/nodejs/node/pull/36177)
* [[`5a3e12b1ee`](https://github.com/nodejs/node/commit/5a3e12b1ee)] - **doc**: update fs.l/statSync API history for throwIfNoEntry (Andrew Casey) [#36882](https://github.com/nodejs/node/pull/36882)
* [[`4a768bc13b`](https://github.com/nodejs/node/commit/4a768bc13b)] - **doc**: upgrade stability status of report API (Gireesh Punathil) [#35654](https://github.com/nodejs/node/pull/35654)
* [[`a3c564bead`](https://github.com/nodejs/node/commit/a3c564bead)] - **doc,child_process**: `pid` can be `undefined` when `ENOENT` (dr-js) [#37014](https://github.com/nodejs/node/pull/37014)
* [[`404327563a`](https://github.com/nodejs/node/commit/404327563a)] - **doc,tools**: allow stability table to be updated (Richard Lau) [#38048](https://github.com/nodejs/node/pull/38048)
* [[`eb6ea8501b`](https://github.com/nodejs/node/commit/eb6ea8501b)] - **doc,tools**: use only one level 1 header per page (Rich Trott) [#37839](https://github.com/nodejs/node/pull/37839)
* [[`bd38dfbfcc`](https://github.com/nodejs/node/commit/bd38dfbfcc)] - **domain**: add name to monkey-patched emit function (Colin Ihrig) [#37550](https://github.com/nodejs/node/pull/37550)
* [[`13d972dd86`](https://github.com/nodejs/node/commit/13d972dd86)] - **domain**: show falsy names as anonymous for DEP0097 (Colin Ihrig) [#37550](https://github.com/nodejs/node/pull/37550)
* [[`3f43743c9d`](https://github.com/nodejs/node/commit/3f43743c9d)] - **domain**: make node resilient to Array prototype tempering (Antoine du Hamel) [#36676](https://github.com/nodejs/node/pull/36676)
* [[`4807499d21`](https://github.com/nodejs/node/commit/4807499d21)] - **domain**: improve deprecation warning text for DEP0097 (Anna Henningsen) [#36136](https://github.com/nodejs/node/pull/36136)
* [[`b01c496e34`](https://github.com/nodejs/node/commit/b01c496e34)] - **errors**: do not call resolve on URLs with schemes (Benjamin Coe) [#35903](https://github.com/nodejs/node/pull/35903)
* [[`3006302372`](https://github.com/nodejs/node/commit/3006302372)] - **(SEMVER-MINOR)** **events**: add max listener warning for EventTarget (James M Snell) [#36001](https://github.com/nodejs/node/pull/36001)
* [[`64cd54be57`](https://github.com/nodejs/node/commit/64cd54be57)] - **events**: disabled manual construction AbortSignal (raisinten) [#36094](https://github.com/nodejs/node/pull/36094)
* [[`daad5214c4`](https://github.com/nodejs/node/commit/daad5214c4)] - **events**: fire handlers in correct oder (Benjamin Gruenbaum) [#35931](https://github.com/nodejs/node/pull/35931)
* [[`3f33b5a89e`](https://github.com/nodejs/node/commit/3f33b5a89e)] - **(SEMVER-MINOR)** **events**: allow use of AbortController with on (James M Snell) [#34912](https://github.com/nodejs/node/pull/34912)
* [[`1fefb5cb75`](https://github.com/nodejs/node/commit/1fefb5cb75)] - **(SEMVER-MINOR)** **events**: allow use of AbortController with once (James M Snell) [#34911](https://github.com/nodejs/node/pull/34911)
* [[`f2279f856e`](https://github.com/nodejs/node/commit/f2279f856e)] - **fs**: fix writeFile signal does not close file (Nitzan Uziely) [#37402](https://github.com/nodejs/node/pull/37402)
* [[`92348a9216`](https://github.com/nodejs/node/commit/92348a9216)] - **(SEMVER-MINOR)** **fs**: use a default callback for fs.close() (James M Snell) [#37174](https://github.com/nodejs/node/pull/37174)
* [[`e582832643`](https://github.com/nodejs/node/commit/e582832643)] - **fs**: only use Buffer.concat in promises.readFile when necessary (Anna Henningsen) [#37127](https://github.com/nodejs/node/pull/37127)
* [[`a1ee9b3680`](https://github.com/nodejs/node/commit/a1ee9b3680)] - **fs**: add explicit note about undefined path when recursive (Sebastian Silbermann) [#37010](https://github.com/nodejs/node/pull/37010)
* [[`9b8596a67f`](https://github.com/nodejs/node/commit/9b8596a67f)] - **fs**: fix when path is buffer on fs.symlinkSync (himself65) [#34540](https://github.com/nodejs/node/pull/34540)
* [[`7aa2e5d8dc`](https://github.com/nodejs/node/commit/7aa2e5d8dc)] - **(SEMVER-MINOR)** **fs**: add AbortSignal support to watch (Benjamin Gruenbaum) [#37190](https://github.com/nodejs/node/pull/37190)
* [[`219cd000c0`](https://github.com/nodejs/node/commit/219cd000c0)] - **(SEMVER-MINOR)** **fs**: support abortsignal in writeFile (Benjamin Gruenbaum) [#35993](https://github.com/nodejs/node/pull/35993)
* [[`5f88b644f8`](https://github.com/nodejs/node/commit/5f88b644f8)] - **(SEMVER-MINOR)** **fs**: add support for AbortSignal in readFile (Benjamin Gruenbaum) [#35911](https://github.com/nodejs/node/pull/35911)
* [[`443cacee5f`](https://github.com/nodejs/node/commit/443cacee5f)] - **fs**: remove custom Buffer pool for streams (Robert Nagy) [#33981](https://github.com/nodejs/node/pull/33981)
* [[`5064822f24`](https://github.com/nodejs/node/commit/5064822f24)] - **http**: make HEAD method to work with keep-alive (Joseph Hackman) [#34231](https://github.com/nodejs/node/pull/34231)
* [[`8163f3179b`](https://github.com/nodejs/node/commit/8163f3179b)] - **http**: remove dead code from internal/http.js (ZiJian Liu) [#36630](https://github.com/nodejs/node/pull/36630)
* [[`623099db4b`](https://github.com/nodejs/node/commit/623099db4b)] - **(SEMVER-MINOR)** **http**: report request start and end with diagnostics\_channel (Stephen Belanger) [#34895](https://github.com/nodejs/node/pull/34895)
* [[`524b7134e8`](https://github.com/nodejs/node/commit/524b7134e8)] - **(SEMVER-MINOR)** **http**: add support for abortsignal to http.request (Benjamin Gruenbaum) [#36048](https://github.com/nodejs/node/pull/36048)
* [[`f70aee03ab`](https://github.com/nodejs/node/commit/f70aee03ab)] - **(SEMVER-MINOR)** **http**: set lifo as the default scheduling strategy in Agent (Matteo Collina) [#36685](https://github.com/nodejs/node/pull/36685)
* [[`2e259220cb`](https://github.com/nodejs/node/commit/2e259220cb)] - **(SEMVER-MINOR)** **http2**: add updateSettings to both http2 servers (Vincent Boivin) [#35383](https://github.com/nodejs/node/pull/35383)
* [[`336fb18b44`](https://github.com/nodejs/node/commit/336fb18b44)] - **http2**: add support for AbortSignal to http2Session.request (Madara Uchiha) [#36070](https://github.com/nodejs/node/pull/36070)
* [[`f44b3c12e5`](https://github.com/nodejs/node/commit/f44b3c12e5)] - **https**: add abortcontroller test (Benjamin Gruenbaum) [#36307](https://github.com/nodejs/node/pull/36307)
* [[`b5ad655c6b`](https://github.com/nodejs/node/commit/b5ad655c6b)] - **lib**: properly process JavaScript exceptions on async\_hooks fatal error (legendecas) [#38106](https://github.com/nodejs/node/pull/38106)
* [[`d78e2ed82c`](https://github.com/nodejs/node/commit/d78e2ed82c)] - **lib**: remove non used getter in `lib/perf\_hooks.js` (Juan José Arboleda) [#36907](https://github.com/nodejs/node/pull/36907)
* [[`e0df3bc751`](https://github.com/nodejs/node/commit/e0df3bc751)] - **meta**: notify slack when someone force pushes (Mary Marchini) [#35131](https://github.com/nodejs/node/pull/35131)
* [[`079671d3c1`](https://github.com/nodejs/node/commit/079671d3c1)] - **module**: improve error message for invalid data URL (Antoine du Hamel) [#37701](https://github.com/nodejs/node/pull/37701)
* [[`4cdd9b63b4`](https://github.com/nodejs/node/commit/4cdd9b63b4)] - **module**: make synthetic module evaluation steps return a Promise to support top level await (Daniel Clark) [#37300](https://github.com/nodejs/node/pull/37300)
* [[`fd08c37d98`](https://github.com/nodejs/node/commit/fd08c37d98)] - **(SEMVER-MINOR)** **net**: add support for resolving DNS CAA records (Danny Sonnenschein) [#35466](https://github.com/nodejs/node/pull/35466)
* [[`e9110d56d2`](https://github.com/nodejs/node/commit/e9110d56d2)] - **process**: do not lazily load AsyncResource (Michaël Zasso) [#38041](https://github.com/nodejs/node/pull/38041)
* [[`43057595e2`](https://github.com/nodejs/node/commit/43057595e2)] - **process**: passing -1 to setuid/setgid should not abort (James M Snell) [#36786](https://github.com/nodejs/node/pull/36786)
* [[`70cbe4a565`](https://github.com/nodejs/node/commit/70cbe4a565)] - **readline**: fix behaviour of Interface plugged to a non-terminal output (Antoine du Hamel) [#36774](https://github.com/nodejs/node/pull/36774)
* [[`ffaa1149e1`](https://github.com/nodejs/node/commit/ffaa1149e1)] - **(SEMVER-MINOR)** **readline**: add getPrompt to get the current prompt (Mattias Runge-Broberg) [#33675](https://github.com/nodejs/node/pull/33675)
* [[`bf16d288e2`](https://github.com/nodejs/node/commit/bf16d288e2)] - **src**: fix return type of method in string\_search.h (Darshan Sen) [#37167](https://github.com/nodejs/node/pull/37167)
* [[`26e9c39cea`](https://github.com/nodejs/node/commit/26e9c39cea)] - **stream**: remove isPromise utility function (Antoine du Hamel) [#35925](https://github.com/nodejs/node/pull/35925)
* [[`7858de4f63`](https://github.com/nodejs/node/commit/7858de4f63)] - **stream,util**: fix "the the" typo in comments (Luigi Pinca) [#37674](https://github.com/nodejs/node/pull/37674)
* [[`93c917c1ce`](https://github.com/nodejs/node/commit/93c917c1ce)] - **test**: move buffer-as-path symlink test to its own test file (Rich Trott) [#34569](https://github.com/nodejs/node/pull/34569)
* [[`ce70ea8a85`](https://github.com/nodejs/node/commit/ce70ea8a85)] - **test**: skip fs.watch() test on IBMi (Rich Trott) [#38192](https://github.com/nodejs/node/pull/38192)
* [[`058abbece1`](https://github.com/nodejs/node/commit/058abbece1)] - **test**: skip test-vm-memleak in ASAN (Rich Trott) [#34289](https://github.com/nodejs/node/pull/34289)
* [[`c7981daf09`](https://github.com/nodejs/node/commit/c7981daf09)] - **test**: skip test-hash-seed on armv6 and armv7 (Rich Trott) [#34289](https://github.com/nodejs/node/pull/34289)
* [[`552c945c7c`](https://github.com/nodejs/node/commit/552c945c7c)] - **test**: remove unneeded m flag on regular expressions (Rich Trott) [#38124](https://github.com/nodejs/node/pull/38124)
* [[`8590720489`](https://github.com/nodejs/node/commit/8590720489)] - **test**: add extra space in test failure output (Qingyu Deng) [#37957](https://github.com/nodejs/node/pull/37957)
* [[`abec939c58`](https://github.com/nodejs/node/commit/abec939c58)] - **test**: improve clarity of ALS-enable-disable.js (Darkripper214) [#38008](https://github.com/nodejs/node/pull/38008)
* [[`2e3305d1b3`](https://github.com/nodejs/node/commit/2e3305d1b3)] - **test**: add DataView test case for v8 serdes (Rich Trott) [#37955](https://github.com/nodejs/node/pull/37955)
* [[`376fcc75c6`](https://github.com/nodejs/node/commit/376fcc75c6)] - **test**: remove FLAKY status for test-async-hooks-http-parser-destroy (Rich Trott) [#37636](https://github.com/nodejs/node/pull/37636)
* [[`a91a200be0`](https://github.com/nodejs/node/commit/a91a200be0)] - **test**: remove FLAKY status for fixed test (Rich Trott) [#37633](https://github.com/nodejs/node/pull/37633)
* [[`d168cdea50`](https://github.com/nodejs/node/commit/d168cdea50)] - **test**: validate no debug info for http2 (Michael Dawson) [#37447](https://github.com/nodejs/node/pull/37447)
* [[`456fd758f3`](https://github.com/nodejs/node/commit/456fd758f3)] - **test**: process.nextTick for before exit (ttzztztz) [#37012](https://github.com/nodejs/node/pull/37012)
* [[`0e1963c486`](https://github.com/nodejs/node/commit/0e1963c486)] - **test**: test mode passed as an options object in mkdir/mkdirSync (Darshan Sen) [#37008](https://github.com/nodejs/node/pull/37008)
* [[`5408f51684`](https://github.com/nodejs/node/commit/5408f51684)] - **test**: mark flaky tests on IBM i (Richard Lau) [#36986](https://github.com/nodejs/node/pull/36986)
* [[`dabbd6d8ad`](https://github.com/nodejs/node/commit/dabbd6d8ad)] - **test**: make executable name more general (Shelley Vohr) [#36489](https://github.com/nodejs/node/pull/36489)
* [[`94a877b0a4`](https://github.com/nodejs/node/commit/94a877b0a4)] - **test**: improve test coverage SourceMap API (Juan José Arboleda) [#36089](https://github.com/nodejs/node/pull/36089)
* [[`00b9d955e9`](https://github.com/nodejs/node/commit/00b9d955e9)] - **test**: run test-benchmark-napi on arm (Rich Trott) [#34502](https://github.com/nodejs/node/pull/34502)
* [[`51ef745975`](https://github.com/nodejs/node/commit/51ef745975)] - **test,child_process**: add check for `subProcess.pid` (dr-js) [#37014](https://github.com/nodejs/node/pull/37014)
* [[`8476537aa4`](https://github.com/nodejs/node/commit/8476537aa4)] - **test,http**: check that http server is robust from handler abuse (Rich Trott) [#37958](https://github.com/nodejs/node/pull/37958)
* [[`84b2863f00`](https://github.com/nodejs/node/commit/84b2863f00)] - **(SEMVER-MINOR)** **timers**: allow promisified timeouts/immediates to be canceled (James M Snell) [#33833](https://github.com/nodejs/node/pull/33833)
* [[`ef1aab1239`](https://github.com/nodejs/node/commit/ef1aab1239)] - **tools**: add support for top-level await syntax in linter (Antoine du Hamel) [#36911](https://github.com/nodejs/node/pull/36911)
* [[`26d5965c77`](https://github.com/nodejs/node/commit/26d5965c77)] - **tools**: use `is None` consistently in Python (Rich Trott) [#36606](https://github.com/nodejs/node/pull/36606)
* [[`bb07a767c0`](https://github.com/nodejs/node/commit/bb07a767c0)] - **tools**: revise line in configure.py for clarity (Rich Trott) [#36551](https://github.com/nodejs/node/pull/36551)
* [[`571afd3c30`](https://github.com/nodejs/node/commit/571afd3c30)] - **tools,doc**: add "legacy" badge in the TOC (Antoine du Hamel) [#37949](https://github.com/nodejs/node/pull/37949)
* [[`15d66fbc0c`](https://github.com/nodejs/node/commit/15d66fbc0c)] - **tools,doc**: list the stability status of each API (Zijian Liu) [#36223](https://github.com/nodejs/node/pull/36223)
* [[`d89d55ab36`](https://github.com/nodejs/node/commit/d89d55ab36)] - **tty**: validate file descriptor to avoid int32 overflow (Antoine du Hamel) [#37809](https://github.com/nodejs/node/pull/37809)
* [[`face4b86dd`](https://github.com/nodejs/node/commit/face4b86dd)] - **typings**: add JSDoc to os module functions (David Brownman) [#38197](https://github.com/nodejs/node/pull/38197)
* [[`b5c5bd1f51`](https://github.com/nodejs/node/commit/b5c5bd1f51)] - **util**: inspect \_\_proto\_\_ key as written in object literal (Anna Henningsen) [#37713](https://github.com/nodejs/node/pull/37713)
* [[`2bfe185c3f`](https://github.com/nodejs/node/commit/2bfe185c3f)] - **util**: use assert for unreachable code (Rich Trott) [#37249](https://github.com/nodejs/node/pull/37249)
* [[`78ad8b4c44`](https://github.com/nodejs/node/commit/78ad8b4c44)] - **workers**: fix spawning from preload scripts (James M Snell) [#37481](https://github.com/nodejs/node/pull/37481)
<a id="14.16.1"></a>
## 2021-04-06, Version 14.16.1 'Fermium' (LTS), @mylesborins
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.