2026-09-08, Version 26.9.0 (Current) · nodejs/node@c561d20 · GitHub
Skip to content

Commit c561d20

Browse files
2026-09-08, Version 26.9.0 (Current)
Notable changes: benchmark: * (SEMVER-MINOR) implement node:bench version of bench tools (James M Snell) #65606 crypto: * (SEMVER-MINOR) add a generic MAC API (Filip Skokan) #65553 * (SEMVER-MINOR) discover ciphers from OpenSSL providers (Filip Skokan) #65484 * (SEMVER-MINOR) discover hashes from OpenSSL providers (Filip Skokan) #65484 doc: * (SEMVER-MINOR) move histogram.burnRate to correct location in doc (James M Snell) #65434 * deprecate `Server.prototype._listen2` in `node:net` (Antoine du Hamel) #65593 ffi: * (SEMVER-MINOR) enable module by default (Matteo Collina) #65475 lib: * (SEMVER-MINOR) add `node:bench` explicit createRunner (James M Snell) #65606 * (SEMVER-MINOR) complete the implementation of node:bench and cli (James M Snell) #65606 * (SEMVER-MINOR) implement bench/reporters (James M Snell) #65606 * (SEMVER-MINOR) implement node:bench (James M Snell) #65606 meta: * refine the security vuln posture for experimental features (James M Snell) #65438 perf_hooks: * (SEMVER-MINOR) implement Histogram meanCI API (James M Snell) #65606 * (SEMVER-MINOR) add CBOR export/import for histogram exchange (James M Snell) #65434 src: * (SEMVER-MINOR) fixup histogram and options linting issues (James M Snell) #65606 * (SEMVER-MINOR) let embedders supply a builtin code cache without a snapshot (Shelley Vohr) #65352 src, lib: * (SEMVER-MINOR) add stats to dtls (James M Snell) #63182 src,lib: * (SEMVER-MINOR) add dtls interop tests (James M Snell) #63182 * (SEMVER-MINOR) implement experimental DTLS API (James M Snell) #63182 test: * (SEMVER-MINOR) fix node:bench test timing (James M Snell) #65606 * (SEMVER-MINOR) improve node:bench test coverage (James M Snell) #65606 * (SEMVER-MINOR) update bench tests to not fail on no-crypto (James M Snell) #65606 * (SEMVER-MINOR) use native builder for legacy SEA tests (Filip Skokan) #65553 * (SEMVER-MINOR) enable multi-global WPTs (Filip Skokan) #64894 * (SEMVER-MINOR) add opt-in process WPT runner (Filip Skokan) #64894 * (SEMVER-MINOR) accomodate multi-global tests in WPT{Runner,TestSpec,Report} (Filip Skokan) #64894 vfs: * (SEMVER-MINOR) integrate with CJS and ESM module loaders (Matteo Collina) #63653 worker: * (SEMVER-MINOR) add wpt tests for Web Workers (Aviv Keller) #64894 * (SEMVER-MINOR) add support for Web Workers (Aviv Keller) #64894 PR-URL: #65881
1 parent b4f5d35 commit c561d20

17 files changed

Lines changed: 433 additions & 113 deletions

‎CHANGELOG.md‎

Lines changed: 2 additions & 1 deletion

‎doc/api/bench.md‎

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# Benchmark runner
22

3-
<!--introduced_in=REPLACEME-->
3+
<!--introduced_in=v26.9.0-->
44

55
<!-- YAML
6-
added: REPLACEME
6+
added: v26.9.0
77
-->
88

99
> Stability: 1.0 - Early Development
@@ -287,7 +287,7 @@ run().compose(names).pipe(process.stdout);
287287
## `createRunner([options])`
288288

289289
<!-- YAML
290-
added: REPLACEME
290+
added: v26.9.0
291291
-->
292292

293293
* `options` {Object}
@@ -310,7 +310,7 @@ value passed to `createRunner()`.
310310
## `bench([name][, options], fn)`
311311

312312
<!-- YAML
313-
added: REPLACEME
313+
added: v26.9.0
314314
-->
315315

316316
* `name` {string} The benchmark name. **Default:** The `name` property of `fn`,
@@ -380,23 +380,23 @@ the samples.
380380
### `bench.skip([name][, options], fn)`
381381

382382
<!-- YAML
383-
added: REPLACEME
383+
added: v26.9.0
384384
-->
385385

386386
Shorthand for `bench(name, { ...options, skip: true }, fn)`.
387387

388388
### `bench.only([name][, options], fn)`
389389

390390
<!-- YAML
391-
added: REPLACEME
391+
added: v26.9.0
392392
-->
393393

394394
Shorthand for `bench(name, { ...options, only: true }, fn)`.
395395

396396
## `suite([name][, options], fn)`
397397

398398
<!-- YAML
399-
added: REPLACEME
399+
added: v26.9.0
400400
-->
401401

402402
* `name` {string} The suite name. **Default:** The `name` property of `fn`, or
@@ -422,15 +422,15 @@ functions are awaited before benchmark execution begins.
422422
## `describe([name][, options], fn)`
423423

424424
<!-- YAML
425-
added: REPLACEME
425+
added: v26.9.0
426426
-->
427427

428428
Alias for `suite()`.
429429

430430
## `before(fn)`
431431

432432
<!-- YAML
433-
added: REPLACEME
433+
added: v26.9.0
434434
-->
435435

436436
* `fn` {Function|AsyncFunction} The hook function.
@@ -440,7 +440,7 @@ Registers a hook that runs once before the benchmarks in the current suite.
440440
## `after(fn)`
441441

442442
<!-- YAML
443-
added: REPLACEME
443+
added: v26.9.0
444444
-->
445445

446446
* `fn` {Function|AsyncFunction} The hook function.
@@ -450,7 +450,7 @@ Registers a hook that runs once after the benchmarks in the current suite.
450450
## `beforeEach(fn)`
451451

452452
<!-- YAML
453-
added: REPLACEME
453+
added: v26.9.0
454454
-->
455455

456456
* `fn` {Function|AsyncFunction} The hook function. It receives an object with
@@ -463,7 +463,7 @@ the benchmark function before `context.start()` or `context.record()`.
463463
## `afterEach(fn)`
464464

465465
<!-- YAML
466-
added: REPLACEME
466+
added: v26.9.0
467467
-->
468468

469469
* `fn` {Function|AsyncFunction} The hook function. It receives an object with
@@ -476,7 +476,7 @@ in the benchmark function after `context.end()` or `context.record()`.
476476
## `run([options])`
477477

478478
<!-- YAML
479-
added: REPLACEME
479+
added: v26.9.0
480480
-->
481481

482482
* `options` {Object}
@@ -518,7 +518,7 @@ for await (const { type, data } of run()) {
518518
## `runFile(path[, options])`
519519

520520
<!-- YAML
521-
added: REPLACEME
521+
added: v26.9.0
522522
-->
523523

524524
* `path` {string|Buffer|URL} The path of one benchmark module.
@@ -572,7 +572,7 @@ instance is created for every warmup and measured sample.
572572
### `context.index`
573573

574574
<!-- YAML
575-
added: REPLACEME
575+
added: v26.9.0
576576
-->
577577

578578
* {number}
@@ -583,7 +583,7 @@ measured samples have separate index sequences.
583583
### `context.name`
584584

585585
<!-- YAML
586-
added: REPLACEME
586+
added: v26.9.0
587587
-->
588588

589589
* {string}
@@ -593,7 +593,7 @@ The benchmark name.
593593
### `context.params`
594594

595595
<!-- YAML
596-
added: REPLACEME
596+
added: v26.9.0
597597
-->
598598

599599
* {Object}
@@ -603,7 +603,7 @@ The benchmark's canonicalized parameter metadata.
603603
### `context.phase`
604604

605605
<!-- YAML
606-
added: REPLACEME
606+
added: v26.9.0
607607
-->
608608

609609
* {string}
@@ -614,7 +614,7 @@ and `'measurement'` for a measured invocation.
614614
### `context.signal`
615615

616616
<!-- YAML
617-
added: REPLACEME
617+
added: v26.9.0
618618
-->
619619

620620
* {AbortSignal}
@@ -625,7 +625,7 @@ finishes.
625625
### `context.start()`
626626

627627
<!-- YAML
628-
added: REPLACEME
628+
added: v26.9.0
629629
-->
630630

631631
Starts the measured region using `process.hrtime.bigint()`. Calling `start()`
@@ -634,7 +634,7 @@ more than once is an error.
634634
### `context.end(operations[, options])`
635635

636636
<!-- YAML
637-
added: REPLACEME
637+
added: v26.9.0
638638
-->
639639

640640
* `operations` {number} The number of completed operations. Must be a positive
@@ -655,7 +655,7 @@ region.
655655
### `context.record(sample)`
656656

657657
<!-- YAML
658-
added: REPLACEME
658+
added: v26.9.0
659659
-->
660660

661661
* `sample` {Object}
@@ -677,7 +677,7 @@ message transport from the duration. `record()` is mutually exclusive with
677677
### `context.diagnostic(message[, options])`
678678

679679
<!-- YAML
680-
added: REPLACEME
680+
added: v26.9.0
681681
-->
682682

683683
* `message` {any} A structured-cloneable diagnostic value. With CLI process
@@ -705,7 +705,7 @@ arguments or an uncloneable message or detail violate the sample contract.
705705
### `context.done()`
706706

707707
<!-- YAML
708-
added: REPLACEME
708+
added: v26.9.0
709709
-->
710710

711711
Requests successful benchmark completion after the current measured sample.

‎doc/api/cli.md‎

Lines changed: 15 additions & 15 deletions

0 commit comments

Comments
 (0)