Skip to content

Releases: CodSpeedHQ/codspeed-node

v6.1.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 15:10
v6.1.0
d15b97d

Important

CPU Simulation results change for Vitest 5 benchmarks. This release fixes a bug in @codspeed/vitest-plugin where Vitest 5 export getter tracking ran inside the measured code, inflating the measured cost of benchmarks that read module exports. The plugin now sets benchmark.suppressExportGetterWarnings to true by default, unless you set it explicitly. Even though this is a minor release, expect CPU Simulation results for Vitest 5 benchmarks to differ from those measured with 6.0.0 and 6.0.1. Benchmarks on Vitest 3 and 4 are unaffected.

What's Changed

Full Changelog: v6.0.1...v6.1.0

v6.0.1

Choose a tag to compare

@github-actions github-actions released this 14 Oct 08:35
v6.0.1
7f4107e

CodSpeed for Node.js 6.0.1 loads again on Linux arm64 systems with an older libstdc++, such as Ubuntu 22.04 and Debian 12. In 6.0.0, the native addon failed there with version 'CXXABI_1.3.15' not found (#96).

What's Changed

Full Changelog: v6.0.0...v6.0.1

v6.0.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 15:44
v6.0.0
f08a6b7

CodSpeed for Node.js 6.0.0 adds support for Node.js 24 and 26, Vitest 5 and Vite 8.

Highlights

Node.js 24 and 26

The plugins now ship prebuilt native addons for Node.js 22, 24 and 26, and warn in CI when running on an untested major.

Vitest 5

@codspeed/vitest-plugin supports Vitest 3, 4 and 5 with no configuration change. On Vitest 5, declare benchmarks with the bench test fixture. Each benchmark passed to bench.compare() is reported as its own benchmark in CodSpeed:

import { test } from "vitest";
import { fibonacci } from "./fibonacci";

test("fibo", async ({ bench }) => {
  await bench("fibo 10", () => {
    fibonacci(10);
  }).run();
  await bench("fibo 15", () => {
    fibonacci(15);
  }).run();
});

To compare implementations side by side, pass them to bench.compare() instead. Each benchmark in the group is still reported as its own benchmark in CodSpeed.

Check out the docs for more information!

Breaking changes

  • Node.js 22 or later is now required.
  • The CPU simulation instrument now disables Maglev on Node.js 24 and later, so hot functions tier up as they do on Node.js 22, and suppresses V8's minor GC task. Expect a one-time change in measured values after upgrading.

What's Changed

New Contributors

Full Changelog: v5.7.1...v6.0.0

v6.0.0-beta.2

v6.0.0-beta.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Sep 12:41
v6.0.0-beta.2
d7b132e

What's Changed

Full Changelog: v6.0.0-beta.1...v6.0.0-beta.2

v6.0.0-beta.1

v6.0.0-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Sep 12:37
v6.0.0-beta.1
f387eec

What's Changed

  • feat(vitest-plugin): add vite 8 support by @adriencaccia in #74
  • fix(vitest-plugin): stop importing the deprecated vitest subpaths by @adriencaccia in #75
  • fix(vitest-plugin): call the bench setup and teardown hooks in analysis mode by @adriencaccia in #94

Full Changelog: v6.0.0-beta.0...v6.0.0-beta.1

v6.0.0-beta.0

v6.0.0-beta.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 27 Aug 15:05
v6.0.0-beta.0
9338d9a

Breaking changes:

  • Raised the minimum required version to Node.js 22
  • Added --no-minor-gc-task on Node >= 20
  • Added --no-maglev on Node >= 24

What's Changed

This release adds support for Node.js 24.

Full Changelog: v5.7.1...v6.0.0-beta.0

v5.7.1

Choose a tag to compare

@github-actions github-actions released this 24 Jun 09:55
v5.7.1
56fa9fc

What's Changed

Full Changelog: v5.7.0...v5.7.1

v5.7.0

Choose a tag to compare

@github-actions github-actions released this 23 Jun 15:50
v5.7.0
36834e8

Highlights

  • Dump full inlining information for higher optimization tiers in walltime so we can show more functions on the profiler. To test it out, set CODSPEED_WALLTIME_PROFILER=samply env variable in the codspeed action.
  • Added support for tinybench v5 and v6 in @codspeed/tinybench-plugin

What's Changed

  • Add necessary flags to dump optimized inlining info and fix walltime marker placement by @GuillaumeLagrange in #83

Full Changelog: v5.6.0...v5.7.0

v5.6.0

Choose a tag to compare

@github-actions github-actions released this 16 Jun 12:46
v5.6.0
bcd7e64

What's Changed

Full Changelog: v5.5.0...v5.6.0

v5.5.0

Choose a tag to compare

@github-actions github-actions released this 29 May 18:00
v5.5.0
4dae798

Highlights

We are introducing @codspeed/playwright, for walltime benchmarking and profiling of end to end browser applications through playwright.

Here's an example usage, but head to the docs for more information

import { bench, type Page } from "@codspeed/playwright-plugin";
import electronExecutable from "electron";
import path from "node:path";
import { fileURLToPath } from "node:url";

const __dirname = path.dirname(fileURLToPath(import.meta.url));
const appRoot = path.resolve(__dirname, "..");

async function waitUntilSettled(page: Page): Promise<void> {
  await page.waitForFunction(() => {
    const main = document.getElementById("main");
    return !!main && !main.classList.contains("loading");
  });
}

await bench(
  "inbox-search-archive-threads",
  async ({ page }) => {
    await page.fill("#search", "update");
    await waitUntilSettled(page);

    await page.click("#select-visible-btn");
    await page.click("#archive-btn");
    await waitUntilSettled(page);

    await page.click('#sidebar nav button[data-view="threads"]');
    await waitUntilSettled(page);
  },
  {
    target: {
      kind: "electron",
      appPath: path.join(appRoot, "out/main/index.js"),
      cwd: appRoot,
    },
    beforeRound: async ({ page }) => {
      page.setDefaultTimeout(180_000);
      await page.waitForSelector("#main");
      await waitUntilSettled(page);
    },
  },
);

Note: this plugin is only compatible with the walltime instrument.

What's Changed

Full Changelog: v5.4.0...v5.5.0