Releases: CodSpeedHQ/codspeed-node
v5.7.0
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=samplyenv 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
v5.5.0
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
- Add playwright profiling package by @GuillaumeLagrange in #80
Full Changelog: v5.4.0...v5.5.0
v5.4.0
What's Changed
This release adds first support for macOS walltime.
Please note that profiling and other instruments are not yet available on macOS and will come in a later update.
- Support macos walltime without profiling in codspeed-node by @GuillaumeLagrange in #79
Full Changelog: v5.3.0...v5.4.0
v5.3.0
What's Changed
We now collect buildtime and runtime environment data to warn users about differences in their runtime environment when comparing two runs against one another.
This data includes toolchain metadata like version and build options, as well as a list of dynamically loaded linked libraries.
- feat(fi): add memory profiling by @not-matthias in #73
- feat: dump node process information when running by @GuillaumeLagrange in #77
- chore: bump instrument-hooks to dump linked libraries by @GuillaumeLagrange in #78
Full Changelog: v5.2.0...v5.3.0
v5.2.0
🎉 What's Changed
This release brings support for the memory instrument, which enables you to track memory usage, heap allocations, and memory leaks in your benchmarks.
📚 Details
- feat: add memory profiling support by @not-matthias in #70
Full Changelog: v5.1.0...v5.2.0
v5.1.0
🎉 What's Changed
This release brings support for Vitest v4, allowing you to use the latest version of
Vitest with CodSpeed. The plugin is backward compatible with Vitest v3.
📚 Details
- feat(vitest): support vitest v4 by @colinaaa and @adriencaccia in #71
- feat: rename instrumentation to simulation by @GuillaumeLagrange in #68
- chore: bump instrument-hooks by @not-matthias in #64
- fix: make tinybench peer dep broader by @adriencaccia in #63
New Contributors
- @not-matthias made their first contribution in #64
- @colinaaa made their first contribution in #71
Full Changelog: v5.0.1...v5.1.0
v5.0.1
What's Changed
- fix(vitest-plugin): update readme with correct minimal vitest version by @GuillaumeLagrange in #61
- fix: make tinybench peer dep broader by @adriencaccia in #63
Full Changelog: v5.0.0...v5.0.1
v5.0.0
🎉 What's Changed
This major release brings support for our Walltime instrument, allowing you to benchmark larger pieces of code more reliably by making use of CodSpeed's Macro Runners.
Support for newer versions of tinybench and vitest have been added. Feel free to visit our node.js documentation for more details.
Lastly, we now use our common instrument-hooks implementation to interact with our instruments.
💥 Breaking Changes
- tinybench: Support for versions below v4 has been dropped. You must upgrade to tinybench v4 or above.
⚠️ Since tinybench v4 drops support for CJS, ES modules are now required to use the library.
🚀 Migration Path
This is a breaking change because we updated the compatible versions of underlying benchmarking libraries.
For example, support for tinybench v3 and below has been dropped. We recommend upgrading to tinybench v4 or above.
We recommend creating a dedicated PR to update your dependencies, and create a new performance baseline for your code.
📚 Details
- Bump node, bump tinybench, and add support of walltime runs for tinybench by @GuillaumeLagrange in #48
- Add walltime support for vitest plugin by @GuillaumeLagrange in #49
- chore: bump vitest and rollup dev dependencies by @GuillaumeLagrange in #52
Full Changelog: v4.0.1...v5.0.0
v4.0.1
What's Changed
- feat: vitest-plugin - allow vite 6 in peer dependencies by @belgattitude in #43
New Contributors
- @belgattitude made their first contribution in #43
Full Changelog: v4.0.0...v4.0.1