Skip to content

Commit a76b285

Browse files
committed
2026-09-08, Version 24.21.0 'Krypton' (LTS)
Notable changes: crypto: * update root certificates to NSS 3.126 (Node.js GitHub Bot) #65495 * (SEMVER-MINOR) support loading private keys through STORE loaders (Filip Skokan) #63949 deps: * update OpenSSL to 3.5.8 (Node.js GitHub Bot) #65542 * update Undici to 7.29.1 (Node.js GitHub Bot) #65789 lib,src: * (SEMVER-MINOR) improve histogram implementation (James M Snell) #65024 net: * (SEMVER-MINOR) improve performance of `net.BlockList` (James M Snell) #64974 perf_hooks: * (SEMVER-MINOR) add statistical hypothesis testing to histogram (James M Snell) #65416 util: * (SEMVER-MINOR) add non-throwing `MIMEType.parse` (James M Snell) #64965 PR-URL: #65873
1 parent b508a20 commit a76b285

12 files changed

Lines changed: 318 additions & 60 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ release.
4040
</tr>
4141
<tr>
4242
<td valign="top">
43-
<b><a href="doc/changelogs/CHANGELOG_V24.md#24.20.0">24.20.0</a></b><br/>
43+
<b><a href="doc/changelogs/CHANGELOG_V24.md#24.21.0">24.21.0</a></b><br/>
44+
<a href="doc/changelogs/CHANGELOG_V24.md#24.20.0">24.20.0</a><br/>
4445
<a href="doc/changelogs/CHANGELOG_V24.md#24.19.0">24.19.0</a><br/>
4546
<a href="doc/changelogs/CHANGELOG_V24.md#24.18.1">24.18.1</a><br/>
4647
<a href="doc/changelogs/CHANGELOG_V24.md#24.18.0">24.18.0</a><br/>

doc/api/buffer.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5309,7 +5309,7 @@ added:
53095309
- v19.6.0
53105310
- v18.15.0
53115311
changes:
5312-
- version: REPLACEME
5312+
- version: v24.21.0
53135313
pr-url: https://github.com/nodejs/node/pull/64504
53145314
description: Detached `ArrayBuffer`s and views backed by them are treated
53155315
as empty.
@@ -5330,7 +5330,7 @@ added:
53305330
- v19.4.0
53315331
- v18.14.0
53325332
changes:
5333-
- version: REPLACEME
5333+
- version: v24.21.0
53345334
pr-url: https://github.com/nodejs/node/pull/64504
53355335
description: Detached `ArrayBuffer`s and views backed by them are treated
53365336
as empty.

doc/api/cli.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ Error: connect ERR_ACCESS_DENIED Access to this API has been restricted. Use --a
296296
### `--allow-openssl-store`
297297

298298
<!-- YAML
299-
added: REPLACEME
299+
added: v24.21.0
300300
-->
301301

302302
> Stability: 1.1 - Active development

doc/api/crypto.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3939,7 +3939,7 @@ input.on('readable', () => {
39393939
<!-- YAML
39403940
added: v11.6.0
39413941
changes:
3942-
- version: REPLACEME
3942+
- version: v24.21.0
39433943
pr-url: https://github.com/nodejs/node/pull/63949
39443944
description: The key can also be a URL referencing an object for an
39453945
OpenSSL STORE loader. The `properties` option was added.

doc/api/fs.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2941,7 +2941,7 @@ behavior is similar to `cp dir1/ dir2/`.
29412941
<!-- YAML
29422942
added: v0.1.31
29432943
changes:
2944-
- version: REPLACEME
2944+
- version: v24.21.0
29452945
pr-url: https://github.com/nodejs/node/pull/63851
29462946
description: Add the `windowsHandle` option.
29472947
- version: v16.10.0
@@ -3078,7 +3078,7 @@ If `options` is a string, then it specifies the encoding.
30783078
<!-- YAML
30793079
added: v0.1.31
30803080
changes:
3081-
- version: REPLACEME
3081+
- version: v24.21.0
30823082
pr-url: https://github.com/nodejs/node/pull/63851
30833083
description: Add the `windowsHandle` option.
30843084
- version: v22.0.0

doc/api/net.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ Adds a rule to block the given IP address.
9999
### `blockList.addAddresses(addresses[, type])`
100100

101101
<!-- YAML
102-
added: REPLACEME
102+
added: v24.21.0
103103
-->
104104

105105
* `addresses` {string\[]|net.SocketAddress\[]} An array of IPv4 or IPv6
@@ -114,7 +114,7 @@ are inserted under a single internal lock acquisition.
114114
### `blockList.addCIDR(cidr)`
115115

116116
<!-- YAML
117-
added: REPLACEME
117+
added: v24.21.0
118118
-->
119119

120120
* `cidr` {string} An IPv4 or IPv6 subnet in CIDR notation (e.g.
@@ -128,7 +128,7 @@ the parsed network address, prefix length, and family.
128128
### `blockList.addCIDRs(cidrs)`
129129

130130
<!-- YAML
131-
added: REPLACEME
131+
added: v24.21.0
132132
-->
133133

134134
* `cidrs` {string\[]} An array of IPv4 or IPv6 subnets in CIDR notation.
@@ -202,7 +202,7 @@ console.log(blockList.check('::ffff:123.123.123.123', 'ipv6')); // Prints: true
202202
### `blockList.clear()`
203203

204204
<!--
205-
added: REPLACEME
205+
added: v24.21.0
206206
-->
207207

208208
Clears all rules from the `BlockList`.
@@ -243,7 +243,7 @@ added:
243243
### `BlockList.PRIVATE_RANGES`
244244

245245
<!-- YAML
246-
added: REPLACEME
246+
added: v24.21.0
247247
-->
248248

249249
* Type: {string\[]}
@@ -275,7 +275,7 @@ console.log(blockList.check('8.8.8.8')); // Prints: false
275275
### `blockList.removeAddress(address[, type])`
276276

277277
<!-- YAML
278-
added: REPLACEME
278+
added: v24.21.0
279279
-->
280280

281281
* `address` {string|net.SocketAddress} An IPv4 or IPv6 address.
@@ -288,7 +288,7 @@ specified address does not exist, this is a no-op.
288288
### `blockList.removeCIDR(cidr)`
289289

290290
<!-- YAML
291-
added: REPLACEME
291+
added: v24.21.0
292292
-->
293293

294294
* `cidr` {string} An IPv4 or IPv6 subnet in CIDR notation (e.g.
@@ -302,7 +302,7 @@ and family. If the specified subnet does not exist, this is a no-op.
302302
### `blockList.removeRange(start, end[, type])`
303303

304304
<!-- YAML
305-
added: REPLACEME
305+
added: v24.21.0
306306
-->
307307

308308
* `start` {string|net.SocketAddress} The starting IPv4 or IPv6 address in the
@@ -317,7 +317,7 @@ If the specified range does not exist, this is a no-op.
317317
### `blockList.removeSubnet(net, prefix[, type])`
318318

319319
<!-- YAML
320-
added: REPLACEME
320+
added: v24.21.0
321321
-->
322322

323323
* `net` {string|net.SocketAddress} The network IPv4 or IPv6 address.
@@ -345,7 +345,7 @@ The list of rules added to the blocklist.
345345
### `blockList.size`
346346

347347
<!-- YAML
348-
added: REPLACEME
348+
added: v24.21.0
349349
-->
350350

351351
* Type: {number}

doc/api/perf_hooks.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1871,7 +1871,7 @@ The number of samples recorded by the histogram.
18711871
### `histogram.ccdf(value)`
18721872

18731873
<!-- YAML
1874-
added: REPLACEME
1874+
added: v24.21.0
18751875
-->
18761876

18771877
* `value` {number} The value to query.
@@ -1884,7 +1884,7 @@ will exceed `value`. Equivalent to `1 - histogram.cdf(value)`.
18841884
### `histogram.cdf(value)`
18851885

18861886
<!-- YAML
1887-
added: REPLACEME
1887+
added: v24.21.0
18881888
-->
18891889

18901890
* `value` {number} The value to query.
@@ -1898,7 +1898,7 @@ than or equal to `value`. This is the inverse operation of
18981898
### `histogram.cliffsD(other)`
18991899

19001900
<!-- YAML
1901-
added: REPLACEME
1901+
added: v24.21.0
19021902
-->
19031903

19041904
* `other` {Histogram} The histogram to compare against.
@@ -1913,7 +1913,7 @@ opposite; 0 means no tendency in either direction.
19131913
### `histogram.cohensD(other)`
19141914

19151915
<!-- YAML
1916-
added: REPLACEME
1916+
added: v24.21.0
19171917
-->
19181918

19191919
* `other` {Histogram} The histogram to compare against.
@@ -1928,7 +1928,7 @@ Both histograms must have at least 2 recorded values; otherwise returns 0.
19281928
### `histogram.countAt(value)`
19291929

19301930
<!-- YAML
1931-
added: REPLACEME
1931+
added: v24.21.0
19321932
-->
19331933

19341934
* `value` {number} The value to query.
@@ -1964,7 +1964,7 @@ loop delay threshold.
19641964
### `histogram.ewmaMean`
19651965

19661966
<!-- YAML
1967-
added: REPLACEME
1967+
added: v24.21.0
19681968
-->
19691969

19701970
* Type: {number}
@@ -1976,7 +1976,7 @@ Returns `0` when EWMA is disabled or no values have been recorded.
19761976
### `histogram.ewmaStddev`
19771977

19781978
<!-- YAML
1979-
added: REPLACEME
1979+
added: v24.21.0
19801980
-->
19811981

19821982
* Type: {number}
@@ -1988,7 +1988,7 @@ when EWMA is disabled or no values have been recorded.
19881988
### `histogram.ewmaErrorRate`
19891989

19901990
<!-- YAML
1991-
added: REPLACEME
1991+
added: v24.21.0
19921992
-->
19931993

19941994
* Type: {number}
@@ -2001,7 +2001,7 @@ recorded.
20012001
### `histogram.burnRate(sloTarget)`
20022002

20032003
<!-- YAML
2004-
added: REPLACEME
2004+
added: v24.21.0
20052005
-->
20062006

20072007
* `sloTarget` {number} The SLO target as a fraction between 0 and 1
@@ -2032,7 +2032,7 @@ if (rate > 1) {
20322032
### `histogram.ksTest(other)`
20332033

20342034
<!-- YAML
2035-
added: REPLACEME
2035+
added: v24.21.0
20362036
-->
20372037

20382038
* `other` {Histogram} The histogram to compare against.
@@ -2046,7 +2046,7 @@ detecting performance regressions by comparing before/after histograms.
20462046
### `histogram.kurtosis`
20472047

20482048
<!-- YAML
2049-
added: REPLACEME
2049+
added: v24.21.0
20502050
-->
20512051

20522052
* Type: {number}
@@ -2059,7 +2059,7 @@ lighter tails.
20592059
### `histogram.linearBuckets(stepSize)`
20602060

20612061
<!-- YAML
2062-
added: REPLACEME
2062+
added: v24.21.0
20632063
-->
20642064

20652065
* `stepSize` {number} The width of each linear bucket.
@@ -2071,7 +2071,7 @@ of `stepSize`. Useful for visualization and export.
20712071
### `histogram.logBuckets(firstBucket, base)`
20722072

20732073
<!-- YAML
2074-
added: REPLACEME
2074+
added: v24.21.0
20752075
-->
20762076

20772077
* `firstBucket` {number} The value of the first bucket boundary.
@@ -2085,7 +2085,7 @@ Useful for visualization and export.
20852085
### `histogram.mannWhitneyTest(other)`
20862086

20872087
<!-- YAML
2088-
added: REPLACEME
2088+
added: v24.21.0
20892089
-->
20902090

20912091
* `other` {Histogram} The histogram to compare against.
@@ -2181,7 +2181,7 @@ Returns the value at the given percentile.
21812181
### `histogram.percentileCI(percentile[, options])`
21822182

21832183
<!-- YAML
2184-
added: REPLACEME
2184+
added: v24.21.0
21852185
-->
21862186

21872187
* `percentile` {number} A percentile value in the range (0, 100].
@@ -2237,7 +2237,7 @@ Returns a `Map` object detailing the accumulated percentile distribution.
22372237
### `histogram.percentilesAt(percentiles)`
22382238

22392239
<!-- YAML
2240-
added: REPLACEME
2240+
added: v24.21.0
22412241
-->
22422242

22432243
* `percentiles` {number\[]} An array of percentile values in the range (0, 100].
@@ -2259,7 +2259,7 @@ Resets the collected histogram data.
22592259
### `histogram.skewness`
22602260

22612261
<!-- YAML
2262-
added: REPLACEME
2262+
added: v24.21.0
22632263
-->
22642264

22652265
* Type: {number}
@@ -2282,7 +2282,7 @@ The standard deviation of the recorded event loop delays.
22822282
### `histogram.welchTest(other[, options])`
22832283

22842284
<!-- YAML
2285-
added: REPLACEME
2285+
added: v24.21.0
22862286
-->
22872287

22882288
* `other` {Histogram} The histogram to compare against.
@@ -2398,7 +2398,7 @@ previous call to `recordDelta()` and records that amount in the histogram.
23982398
### `histogram.recordCorrected(val, expectedInterval)`
23992399

24002400
<!-- YAML
2401-
added: REPLACEME
2401+
added: v24.21.0
24022402
-->
24032403

24042404
* `val` {number|bigint} The value to record.
@@ -2413,7 +2413,7 @@ latency.
24132413
### `histogram.subtract(other)`
24142414

24152415
<!-- YAML
2416-
added: REPLACEME
2416+
added: v24.21.0
24172417
-->
24182418

24192419
* `other` {RecordableHistogram}

0 commit comments

Comments
 (0)