Node.js v23.1.0 (Current)
Antoine du Hamel
2024-10-24, Version 23.1.0 (Current), @aduh95
Notable Changes
Buffer
now work with resizable ArrayBuffer
When a Buffer
is created using a resizable ArrayBuffer
, the Buffer
length
will now correctly change as the underlying ArrayBuffer
size is changed.
const const ab: ArrayBuffer
ab = new var ArrayBuffer: ArrayBufferConstructor
new (byteLength: number, options?: {
maxByteLength?: number;
}) => ArrayBuffer (+2 overloads)
ArrayBuffer(10, { maxByteLength?: number | undefined
maxByteLength: 20 });
const const buffer: Buffer<ArrayBuffer>
buffer = var Buffer: BufferConstructor
Buffer.BufferConstructor.from<ArrayBuffer>(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer<ArrayBuffer> (+3 overloads)
This creates a view of the `ArrayBuffer` without copying the underlying
memory. For example, when passed a reference to the `.buffer` property of a
`TypedArray` instance, the newly created `Buffer` will share the same
allocated memory as the `TypedArray`'s underlying `ArrayBuffer`.
```js
import { Buffer } from 'node:buffer';
const arr = new Uint16Array(2);
arr[0] = 5000;
arr[1] = 4000;
// Shares memory with `arr`.
const buf = Buffer.from(arr.buffer);
console.log(buf);
// Prints: <Buffer 88 13 a0 0f>
// Changing the original Uint16Array changes the Buffer also.
arr[1] = 6000;
console.log(buf);
// Prints: <Buffer 88 13 70 17>
```
The optional `byteOffset` and `length` arguments specify a memory range within
the `arrayBuffer` that will be shared by the `Buffer`.
```js
import { Buffer } from 'node:buffer';
const ab = new ArrayBuffer(10);
const buf = Buffer.from(ab, 0, 2);
console.log(buf.length);
// Prints: 2
```
A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer` or a
`SharedArrayBuffer` or another type appropriate for `Buffer.from()`
variants.
It is important to remember that a backing `ArrayBuffer` can cover a range
of memory that extends beyond the bounds of a `TypedArray` view. A new
`Buffer` created using the `buffer` property of a `TypedArray` may extend
beyond the range of the `TypedArray`:
```js
import { Buffer } from 'node:buffer';
const arrA = Uint8Array.from([0x63, 0x64, 0x65, 0x66]); // 4 elements
const arrB = new Uint8Array(arrA.buffer, 1, 2); // 2 elements
console.log(arrA.buffer === arrB.buffer); // true
const buf = Buffer.from(arrB.buffer);
console.log(buf);
// Prints: <Buffer 63 64 65 66>
```from(const ab: ArrayBuffer
ab);
var console: Console
The `console` module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
* A `Console` class with methods such as `console.log()`, `console.error()` and `console.warn()` that can be used to write to any Node.js stream.
* A global `console` instance configured to write to [`process.stdout`](https://nodejs.org/docs/latest-v22.x/api/process.html#processstdout) and
[`process.stderr`](https://nodejs.org/docs/latest-v22.x/api/process.html#processstderr). The global `console` can be used without importing the `node:console` module.
_**Warning**_: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the [`note on process I/O`](https://nodejs.org/docs/latest-v22.x/api/process.html#a-note-on-process-io) for
more information.
Example using the global `console`:
```js
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s', 'world');
// Prints: hello world, to stdout
console.error(new Error('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
const name = 'Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
```
Example using the `Console` class:
```js
const out = getStreamSomehow();
const err = getStreamSomehow();
const myConsole = new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s', 'world');
// Prints: hello world, to out
myConsole.error(new Error('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
const name = 'Will Robinson';
myConsole.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to err
```console.Console.log(message?: any, ...optionalParams: any[]): void (+1 overload)
Prints to `stdout` with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html)
(the arguments are all passed to [`util.format()`](https://nodejs.org/docs/latest-v22.x/api/util.html#utilformatformat-args)).
```js
const count = 5;
console.log('count: %d', count);
// Prints: count: 5, to stdout
console.log('count:', count);
// Prints: count: 5, to stdout
```
See [`util.format()`](https://nodejs.org/docs/latest-v22.x/api/util.html#utilformatformat-args) for more information.log(const buffer: Buffer<ArrayBuffer>
buffer.Uint8Array<ArrayBuffer>.byteLength: number
The length in bytes of the array.byteLength);
10;
const ab: ArrayBuffer
ab.ArrayBuffer.resize(newByteLength?: number): void
Resizes the ArrayBuffer to the specified size (in bytes).
[MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/resize)resize(15);
var console: Console
The `console` module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
* A `Console` class with methods such as `console.log()`, `console.error()` and `console.warn()` that can be used to write to any Node.js stream.
* A global `console` instance configured to write to [`process.stdout`](https://nodejs.org/docs/latest-v22.x/api/process.html#processstdout) and
[`process.stderr`](https://nodejs.org/docs/latest-v22.x/api/process.html#processstderr). The global `console` can be used without importing the `node:console` module.
_**Warning**_: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the [`note on process I/O`](https://nodejs.org/docs/latest-v22.x/api/process.html#a-note-on-process-io) for
more information.
Example using the global `console`:
```js
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s', 'world');
// Prints: hello world, to stdout
console.error(new Error('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
const name = 'Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
```
Example using the `Console` class:
```js
const out = getStreamSomehow();
const err = getStreamSomehow();
const myConsole = new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s', 'world');
// Prints: hello world, to out
myConsole.error(new Error('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
const name = 'Will Robinson';
myConsole.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to err
```console.Console.log(message?: any, ...optionalParams: any[]): void (+1 overload)
Prints to `stdout` with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html)
(the arguments are all passed to [`util.format()`](https://nodejs.org/docs/latest-v22.x/api/util.html#utilformatformat-args)).
```js
const count = 5;
console.log('count: %d', count);
// Prints: count: 5, to stdout
console.log('count:', count);
// Prints: count: 5, to stdout
```
See [`util.format()`](https://nodejs.org/docs/latest-v22.x/api/util.html#utilformatformat-args) for more information.log(const buffer: Buffer<ArrayBuffer>
buffer.Uint8Array<ArrayBuffer>.byteLength: number
The length in bytes of the array.byteLength);
15;
const ab: ArrayBuffer
ab.ArrayBuffer.resize(newByteLength?: number): void
Resizes the ArrayBuffer to the specified size (in bytes).
[MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/resize)resize(5);
var console: Console
The `console` module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
* A `Console` class with methods such as `console.log()`, `console.error()` and `console.warn()` that can be used to write to any Node.js stream.
* A global `console` instance configured to write to [`process.stdout`](https://nodejs.org/docs/latest-v22.x/api/process.html#processstdout) and
[`process.stderr`](https://nodejs.org/docs/latest-v22.x/api/process.html#processstderr). The global `console` can be used without importing the `node:console` module.
_**Warning**_: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the [`note on process I/O`](https://nodejs.org/docs/latest-v22.x/api/process.html#a-note-on-process-io) for
more information.
Example using the global `console`:
```js
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s', 'world');
// Prints: hello world, to stdout
console.error(new Error('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
const name = 'Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
```
Example using the `Console` class:
```js
const out = getStreamSomehow();
const err = getStreamSomehow();
const myConsole = new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s', 'world');
// Prints: hello world, to out
myConsole.error(new Error('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
const name = 'Will Robinson';
myConsole.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to err
```console.Console.log(message?: any, ...optionalParams: any[]): void (+1 overload)
Prints to `stdout` with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html)
(the arguments are all passed to [`util.format()`](https://nodejs.org/docs/latest-v22.x/api/util.html#utilformatformat-args)).
```js
const count = 5;
console.log('count: %d', count);
// Prints: count: 5, to stdout
console.log('count:', count);
// Prints: count: 5, to stdout
```
See [`util.format()`](https://nodejs.org/docs/latest-v22.x/api/util.html#utilformatformat-args) for more information.log(const buffer: Buffer<ArrayBuffer>
buffer.Uint8Array<ArrayBuffer>.byteLength: number
The length in bytes of the array.byteLength);
5;
Contributed by James M Snell in #55377.
MockTimers
test runner API is now stable
MockTimers
, introduced in April 2023, has just reached stable status. This
API provides comprehensive support for mocking Date
and all major timers in
Node.js, including setTimeout
, setInterval
, and setImmediate
, both from
the node:timers
, node:timers/promises
modules and global objects. After
months of refinement, developers can now fully rely on MockTimers
for testing
time-based operations with confidence, ensuring better control over asynchronous
behavior in their Node.js applications.
Example usage with initial Date
object as time set:
import { const mock: test.MockTracker
mock } from 'node:test';
const mock: test.MockTracker
mock.test.MockTracker.timers: test.MockTimers
timers.test.MockTimers.enable(options?: test.MockTimersOptions): void
Enables timer mocking for the specified timers.
**Note:** When you enable mocking for a specific timer, its associated
clear function will also be implicitly mocked.
**Note:** Mocking `Date` will affect the behavior of the mocked timers
as they use the same internal clock.
Example usage without setting initial time:
```js
import { mock } from 'node:test';
mock.timers.enable({ apis: ['setInterval', 'Date'], now: 1234 });
```
The above example enables mocking for the `Date` constructor, `setInterval` timer and
implicitly mocks the `clearInterval` function. Only the `Date` constructor from `globalThis`,
`setInterval` and `clearInterval` functions from `node:timers`, `node:timers/promises`, and `globalThis` will be mocked.
Example usage with initial time set
```js
import { mock } from 'node:test';
mock.timers.enable({ apis: ['Date'], now: 1000 });
```
Example usage with initial Date object as time set
```js
import { mock } from 'node:test';
mock.timers.enable({ apis: ['Date'], now: new Date() });
```
Alternatively, if you call `mock.timers.enable()` without any parameters:
All timers (`'setInterval'`, `'clearInterval'`, `'Date'`, `'setImmediate'`, `'clearImmediate'`, `'setTimeout'`, and `'clearTimeout'`)
will be mocked.
The `setInterval`, `clearInterval`, `setTimeout`, and `clearTimeout` functions from `node:timers`, `node:timers/promises`,
and `globalThis` will be mocked.
The `Date` constructor from `globalThis` will be mocked.
If there is no initial epoch set, the initial date will be based on 0 in the Unix epoch. This is `January 1st, 1970, 00:00:00 UTC`. You can
set an initial date by passing a now property to the `.enable()` method. This value will be used as the initial date for the mocked Date
object. It can either be a positive integer, or another Date object.enable({ test.MockTimersOptions.apis: readonly ("setInterval" | "setTimeout" | "setImmediate" | "Date")[]
apis: ['Date'], test.MockTimersOptions.now?: number | Date | undefined
now: new var Date: DateConstructor
new (value: number | string | Date) => Date (+4 overloads)
Date('1970-01-01') });
Contributed by Erick Wendel in #55398.
JSON modules and import attributes are now stable
The two proposals reached stage 4 of the TC39 process, at the October 2024 meeting. The Node.js implementation already matches exactly the semantics required by the proposals.
Contributed by Nicolò Ribaudo by #55333.
Other Notable Changes
- [
4ba31b7f20
] - (SEMVER-MINOR) assert: makeassertion_error
use Myers diff algorithm (Giovanni Bucci) #54862 - [
dcbc5fbe65
] - (SEMVER-MINOR) lib: addUV_UDP_REUSEPORT
for udp (theanarkh) #55403 - [
ec867ac7ce
] - (SEMVER-MINOR) net: addUV_TCP_REUSEPORT
for tcp (theanarkh) #55408
Commits
- [
4ba31b7f20
] - (SEMVER-MINOR) assert: make assertion_error use Myers diff algorithm (Giovanni Bucci) #54862 - [
fe667bea28
] - assert: fix deepEqual always return true on URL (Xuguang Mei) #50853 - [
aca03d9083
] - benchmark: add --runs support to run.js (Rafael Gonzaga) #55158 - [
c5abf50692
] - benchmark: adjust byte size for buffer-copy (Rafael Gonzaga) #55295 - [
d3618b2334
] - benchmark: adjust config for deepEqual object (Rafael Gonzaga) #55254 - [
c05582da3d
] - (SEMVER-MINOR) buffer: make Buffer work with resizable ArrayBuffer (James M Snell) #55377 - [
194bb0fca5
] - build: fix GN build for cares/uv deps (Cheng) #55477 - [
8eb5359592
] - build: fix uninstall script for AIX 7.1 (Cloorc) #55438 - [
32f7d5ad1c
] - build: conditionally compile bundled sqlite (Richard Lau) #55409 - [
2147e496e7
] - build: tidy up cares.gyp (Richard Lau) #55445 - [
2beae50c77
] - build: synchronize list of c-ares source files (Richard Lau) #55445 - [
f48d30eb9f
] - build: fix path concatenation (Mohammed Keyvanzadeh) #55387 - [
d42522eec5
] - build: fix make errors that occur in Makefile (minkyu_kim) #55287 - [
52da293471
] - cli: add--heap-prof
flag available toNODE_OPTIONS
(Juan José) #54259 - [
adead26815
] - crypto: include openssl/rand.h explicitly (Shelley Vohr) #55425 - [
df2f1adf9e
] - deps: V8: cherry-pick f915fa4c9f41 (Chengzhong Wu) #55484 - [
bfc10a975f
] - deps: update googletest to df1544b (Node.js GitHub Bot) #55465 - [
45ef1809bd
] - deps: update c-ares to v1.34.2 (Node.js GitHub Bot) #55463 - [
c2b5ebfeca
] - deps: update ada to 2.9.1 (Node.js GitHub Bot) #54679 - [
903863cafa
] - deps: update simdutf to 5.6.0 (Node.js GitHub Bot) #55379 - [
008fb5f7f4
] - deps: patch V8 to 12.9.202.28 (Node.js GitHub Bot) #55371 - [
8b282228ae
] - deps: update c-ares to v1.34.1 (Node.js GitHub Bot) #55369 - [
54d55f2337
] - Revert "deps: disable io_uring support in libuv by default" (Santiago Gimeno) #55114 - [
bfb3c621c4
] - deps: update libuv to 1.49.1 (Santiago Gimeno) #55114 - [
055d2b8919
] - deps: update amaro to 0.1.9 (Node.js GitHub Bot) #55348 - [
c028d21b44
] - diagnostics_channel: fix unsubscribe during publish (simon-id) #55116 - [
b4b6ddb777
] - dns: honor the order option (Luigi Pinca) #55392 - [
37352cef7f
] - doc: changed the command used to verify SHASUMS256 (adriancuadrado) #55420 - [
66bcf4c065
] - doc: move dual package shipping docs to separate repo (Joyee Cheung) #55444 - [
04b41bda03
] - doc: add note about stdio streams in child_process (Ederin (Ed) Igharoro) #55322 - [
689d3a3e41
] - doc: addisBigIntObject
to documentation (leviscar) #55450 - [
784c825a27
] - doc: remove outdated remarks abouthighWaterMark
in fs (Ian Kerins) #55462 - [
1ec25e8573
] - doc: move Danielle Adams key to old gpg keys (RafaelGSS) #55399 - [
7d5bb097eb
] - doc: move Bryan English key to old gpg keys (RafaelGSS) #55399 - [
2967471f67
] - doc: move Beth Griggs keys to old gpg keys (RafaelGSS) #55399 - [
0be3a7505f
] - doc: add changelog for mocktimers (Erick Wendel) #55398 - [
e15f779794
] - doc: spell out condition restrictions (Jan Martin) #55187 - [
c3f2216a7d
] - doc: add instructions for WinGet build (Hüseyin Açacak) #55356 - [
bdc2c3bb94
] - doc: add missing return values in buffer docs (Karl Horky) #55273 - [
41f68f59af
] - doc: fix ambasador markdown list (Rafael Gonzaga) #55361 - [
bbd5318729
] - esm: add a fallback when importer in not a file (Antoine du Hamel) #55471 - [
22d77773fd
] - esm: fix inconsistency withimportAssertion
inresolve
hook (Wei Zhu) #55365 - [
48bb87b059
] - esm: mark import attributes and JSON module as stable (Nicolò Ribaudo) #55333 - [
8ceefebaf2
] - events: optimize EventTarget.addEventListener (Robert Nagy) #55312 - [
45f960cab6
] - fs: pass correct path toDirentFromStats
duringglob
(Aviv Keller) #55071 - [
d9494a7641
] - fs: usewstring
on Windows paths (jazelly) #55171 - [
0f1d13e359
] - lib: ensure FORCE_COLOR forces color output in non-TTY environments (Pietro Marchini) #55404 - [
dcbc5fbe65
] - (SEMVER-MINOR) lib: add UV_UDP_REUSEPORT for udp (theanarkh) #55403 - [
714f272423
] - lib: remove startsWith/endsWith primordials for char checks (Gürgün Dayıoğlu) #55407 - [
4e5c90bb41
] - lib: replacecreateDeferredPromise
util withPromise.withResolvers
(Yagiz Nizipli) #54836 - [
db18aca47a
] - lib: add flag to drop connection when running in cluster mode (theanarkh) #54927 - [
dd848f2d1e
] - lib: test_runner#mock:timers respeced timeout_max behaviour (BadKey) #55375 - [
a9473bb8e3
] - lib: remove settled dependant signals when they are GCed (Edigleysson Silva (Edy)) #55354 - [
07ad987aa1
] - lib: convert transfer sequence to array in js (Jason Zhang) #55317 - [
d54d3b24c3
] - meta: move one or more collaborators to emeritus (Node.js GitHub Bot) #55381 - [
12d709bd27
] - meta: assign CODEOWNERS for /deps/ncrypto/* (Filip Skokan) #55426 - [
0130780eec
] - meta: change color to blue notify review-wanted (Rafael Gonzaga) #55423 - [
335a507027
] - meta: bump codecov/codecov-action from 4.5.0 to 4.6.0 (dependabot[bot]) #55222 - [
5ffc721d09
] - meta: bump github/codeql-action from 3.26.6 to 3.26.10 (dependabot[bot]) #55221 - [
d9fde2c45b
] - meta: bump step-security/harden-runner from 2.9.1 to 2.10.1 (dependabot[bot]) #55220 - [
2c960a212e
] - module: include module information in require(esm) warning (Joyee Cheung) #55397 - [
a12dbf03d9
] - module: simplify ts under node_modules check (Marco Ippolito) #55440 - [
ec867ac7ce
] - (SEMVER-MINOR) net: add UV_TCP_REUSEPORT for tcp (theanarkh) #55408 - [
9e320279a2
] - Revert "path: fix bugs and inconsistencies" (Aviv Keller) #55414 - [
1ce8928db3
] - sqlite: cache column names in stmt.all() (Fedor Indutny) #55373 - [
cc775d314a
] - src: switch fromGet/SetPrototype
toGet/SetPrototypeV2
(Aviv Keller) #55453 - [
89c96ade53
] - src: remove icu basedToASCII
andToUnicode
(Yagiz Nizipli) #55156 - [
57dbbf8402
] - src: fix winapi_strerror error string (Hüseyin Açacak) #55207 - [
a490bb8745
] - src: remove uv__node_patch_is_using_io_uring (Santiago Gimeno) #55114 - [
0da1632937
] - src,lib: introduceutil.getSystemErrorMessage(err)
(Juan José) #54075 - [
6764273127
] - stream: propagate AbortSignal reason (Marvin ROGER) #55473 - [
4dc2791cdd
] - test: add repl preview timeout test (Chengzhong Wu) #55484 - [
8634e054d4
] - test: make test-node-output-v8-warning more flexible (Shelley Vohr) #55401 - [
6c8564b55d
] - test: fix addons and node-api test assumptions (Antoine du Hamel) #55441 - [
94e863cdb7
] - test: update wpt test for webmessaging/broadcastchannel (devstone) #55205 - [
c10c6715cd
] - test: deflaketest-cluster-shared-handle-bind-privileged-port
(Aviv Keller) #55378 - [
6f7379a048
] - test: fix invalidfile:
URL intest-fs-path-dir
(Antoine du Hamel) #55454 - [
dd5a08d022
] - test: updateconsole
wpt (Aviv Keller) #55192 - [
9b7b4a6b25
] - test: remove duplicate tests (Luigi Pinca) #55393 - [
eb2fab3da1
] - test: update test_util.cc for coverage (minkyu_kim) #55291 - [
59923d137e
] - test: updatecompression
wpt (Aviv Keller) #55191 - [
1b63a822ac
] - test,crypto: update WebCryptoAPI WPT (Filip Skokan) #55427 - [
97c6448f63
] - test_runner: mark mockTimers as stable (Erick Wendel) #55398 - [
69ee56aacd
] - test_runner: add support for scheduler.wait on mock timers (Erick Wendel) #55244 - [
d9f0407cf6
] - test_runner: require--enable-source-maps
for sourcemap coverage (Aviv Keller) #55359 - [
2ac2c5a7e7
] - tools: update lint-md-dependencies (Node.js GitHub Bot) #55470 - [
10f6b90f7d
] - tools: update gyp-next to 0.18.3 (Node.js GitHub Bot) #55464 - [
65936a8bb6
] - tools: add script to synch c-ares source lists (Richard Lau) #55445 - [
1da4168486
] - tools: addpolyfilled
option toprefer-primordials
rule (Antoine du Hamel) #55318 - [
3b2b3a8df2
] - tools: fix typos (Nathan Baulch) #55061 - [
736c085a5d
] - typings: add missing type ofArrayBufferPrototypeGetByteLength
(Wuli Zuo) #55439 - [
7b3e38b855
] - url: handle "unsafe" characters properly inpathToFileURL
(Antoine du Hamel) #54545
Windows 64-bit Installer: https://nodejs.org/dist/v23.1.0/node-v23.1.0-x64.msi
Windows ARM 64-bit Installer: https://nodejs.org/dist/v23.1.0/node-v23.1.0-arm64.msi
Windows 64-bit Binary: https://nodejs.org/dist/v23.1.0/win-x64/node.exe
Windows ARM 64-bit Binary: https://nodejs.org/dist/v23.1.0/win-arm64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v23.1.0/node-v23.1.0.pkg
macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-darwin-arm64.tar.gz
macOS Intel 64-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-darwin-x64.tar.gz
Linux 64-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-linux-ppc64le.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-aix-ppc64.tar.gz
ARMv7 32-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-linux-armv7l.tar.xz
ARMv8 64-bit Binary: https://nodejs.org/dist/v23.1.0/node-v23.1.0-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v23.1.0/node-v23.1.0.tar.gz
Other release files: https://nodejs.org/dist/v23.1.0/
Documentation: https://nodejs.org/docs/v23.1.0/api/
SHASUMS
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
e153fef6a3e71d92b2314d2f56c4a9ca0699e8614493c246cf6be6a09f6197b1 node-v23.1.0-aix-ppc64.tar.gz
468a5d028cf09ab7dbf72e35acf892f801efca8f5aa0d8e4ca9c6b01b4b2b2b4 node-v23.1.0-arm64.msi
414d4b68299be0cbccfabfac59e53d0726151320e9ff71457ab0bb507fc0592d node-v23.1.0-darwin-arm64.tar.gz
16e6ed0cdf81d4f93e05b8287f89799be87033ff2eca7956daa1d3d1ea2ae680 node-v23.1.0-darwin-arm64.tar.xz
cb84bd83064ff75f63dd95f1a53b6f7f2d2d36c67e03e9e9c87cfa2b977511b6 node-v23.1.0-darwin-x64.tar.gz
2d4e9c12ed17c3fffff601cd042804636bddbc90f5455ca92576bf9760dbe52d node-v23.1.0-darwin-x64.tar.xz
53ac3b2d5375e5daa089176d5eeacfb0f842c7003cccdf4dcfc01b5ce795fcaa node-v23.1.0-headers.tar.gz
42df72bd7391d404887581e6d96ea18b6f328a42e502c0f3bdb97eb3ecbfaaaa node-v23.1.0-headers.tar.xz
21e20e961eb2f6ab3fcc24421d3975d1714b6a4525c8ecd4f3dbbee3938a95cc node-v23.1.0-linux-arm64.tar.gz
fde280a7fdf9dcf0ce827caed750d8a0d7f82a352df1f98c1830614c27718cad node-v23.1.0-linux-arm64.tar.xz
960287c96b4a13a7c2ba7eb71686550d1281aae0caf5d80afbd76f0c72044ae3 node-v23.1.0-linux-armv7l.tar.gz
b270287ed2a7e6235214b3d2e6ad76f0a6fb1269af8c1dac6d8aca34f5c6b22e node-v23.1.0-linux-armv7l.tar.xz
51911fe95abce0d3866f436b3ba553252de1acf264369f3bcdd9aad4aad7454d node-v23.1.0-linux-ppc64le.tar.gz
0950991435d69662e5d9ce1c352a28b008ae41704fbce36955439f61483422b8 node-v23.1.0-linux-ppc64le.tar.xz
b38024a98852e16476351ce0258b0cf2a35e408e9cf50c2cfa2b361687bb16f1 node-v23.1.0-linux-s390x.tar.gz
5e40a0540785c885fc399313aad4dd2a0a4757228010d95bd5ececa3d753ad3b node-v23.1.0-linux-s390x.tar.xz
1c436b2ac33a4fef7cf08c08b8a33362325c0c8ac8d05d4054a79628d5d0b5ae node-v23.1.0-linux-x64.tar.gz
ccacff4f32e3c3729f5094d20e4089a16a3b8f1381e9730b19f1c16f7cf64da9 node-v23.1.0-linux-x64.tar.xz
7d4132d56bb852ddb2e85f51dbd10f8f2b0da363f992ef60a094dd88954c0a46 node-v23.1.0-win-arm64.7z
8209ccbcdb73395453c0f1065247a0d780bedbec95a6f79aa87692b5412fcc5a node-v23.1.0-win-arm64.zip
3af98fb098d8801a93cc178a95cee2bb828cdac5f680413b7e43fd9a42824a73 node-v23.1.0-win-x64.7z
0e904430fa560b7666b48b0f7b9a6dddbb5a70613c00ea3f386edd64726ade70 node-v23.1.0-win-x64.zip
5836348cc939c43d6a520b57c52c69d744e86f777436535586cb4961e92c192c node-v23.1.0-x64.msi
5a686bd558cd9cdb0992f593103c46c9a90930f77b07f93de0bed298b358f21a node-v23.1.0.pkg
4ccf155c703d53caf4e56624004782f106fce2b6935496b3ff29c6da4d6b6674 node-v23.1.0.tar.gz
57cbfd3dd51f9300ea2b8e60a8ed215b1eaa71fbde4c3903a7d31a443a4a4423 node-v23.1.0.tar.xz
f3491ab76eeb76c675199d53d31f756e6b8de56e24dd77de59ac942c597b9b41 win-arm64/node.exe
26f2d9ca9ec82df85c3cadee0de373a4836e46293149eec718ab716acbe4e1ab win-arm64/node.lib
715c13e2459a7ff9fc7eeaed8efda7f42a30dee031eb3227da474f5f77030714 win-arm64/node_pdb.7z
4ac413502bc5d1a380f9a854f4986635c0a4f0aa7b53a697f6d70a9a8d3324a7 win-arm64/node_pdb.zip
60b05e773fd1c2e589e8e20af540ab17894dcae6482cfa0955fb36900efdad68 win-x64/node.exe
7ef14cabb18518a70e04ca067134d9a51beee11590ea3114e1baf68054124c62 win-x64/node.lib
b9f393f2d3e72a0a2af20db517458c4525981ce2e9fc2cf7df4bf28a5bd4822b win-x64/node_pdb.7z
8c487589b9bad1c83e8f0d04fae57ea5e70862c68354063925fcc026bb8d79f7 win-x64/node_pdb.zip
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmcavBIACgkQIdkA/9sj
N1bCVxAAux/68iV9NgaXXran5rsSvgFL0Kdyo1L/45KBLkwmXfLFg7RpMEU+AjoS
cuFm4PmWrYmgFb3eUmZLEsBtj+kC/IxUX/oO5ZiYiSlBXqnryOh4twBdxDSM999m
/B2FgVxk3uvyYJtRHD4a2odgB9u7JWXYTmquhgIa2FqvVX6CPHQEFlZr2RogohhX
bxkXe3gsLikHYZ+L3FIJcNwWPPDm2+R5twxad0WeyRTI5sTD21y+9Brv2AxCOrV+
kk8tzsJU9Kn2CX4kJEJ1ERwZZeGoF0tHgilIm81z9ljvORFOn81YBT99Jz6qP8Dq
u0wErVPaqrHRHWGoIMBEfHotVrG92CioeX0ei4oGCJxBVihxTiTAOFDmBlbAE2Dp
iKNe1wCObsih2rAzqWv9N/cVEVDljrtrRpe/sFVFwg+WMWioHcK5uXPpdvY1ldWC
nGZplD5pbqAmbj2D7fo4Fe/GxQX2rAmWZNk4lpM/YbgVJePqLaLBjpPqMlEkaEM5
QcTFN5vz2zGx1/6ZVRf+LqbBEW6rBq2ktJe2ZXVPsADNjhxzQVHUk1wpXYcKHDyx
JnnpCuEHfhEpZA0oQueEbgml9rb2EeRDzfHKO8DLlkzRd0UDR99iadg7KwjX0yhB
M5weTtX6qVeNH3KMOkYYsFPE4ZM2n9Hhnp+bJ/urvZQmrt8aXAg=
=kfDn
-----END PGP SIGNATURE-----