Releases: CodSpeedHQ/codspeed
4.14.0 - 2026-04-17
Release Notes
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.
Minimum integration versions
To support the runtime metadata collection, make sure to use at least the following versions:
pytest-codspeedv4.4.0codspeed-rustv4.5.0codspeed-cppv2.2.0codspeed-gov1.1.0codspeed-nodev5.3.0
🚀 Features
- Stop panicking when parsing invalid perf file by @GuillaumeLagrange in #298
- Make the basic run only 5 rounds to make logs not crash the github page by @GuillaumeLagrange
- Represent the host OS as a SupportedOs enum with per-executor support gates by @GuillaumeLagrange
- Bypass systemd-run usage on macos by @GuillaumeLagrange
- Add aarch64-apple-darwin to the release targets by @GuillaumeLagrange
- Collect cpu flags in system info by @GuillaumeLagrange in #281
🐛 Bug Fixes
- Fix instropected_go's behavior on macos by @GuillaumeLagrange
- Update rust crate git2 to 0.20.4 (#284) by @xtqqczze in #284
⚙️ Internals
- Move the config schema check from pre-commit to ci-only check by @GuillaumeLagrange in #287
- Skip tests that rely on linux behavior by @GuillaumeLagrange
- Bump instrument-hooks submodule to include stubs improvement by @GuillaumeLagrange
- Rerun exec harness build if instrument hooks sources change by @GuillaumeLagrange
- Make update-bindings.sh PWD agnostic by @GuillaumeLagrange
Install codspeed-runner 4.14.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v4.14.0/codspeed-runner-installer.sh | shDownload codspeed-runner 4.14.0
| File | Platform | Checksum |
|---|---|---|
| codspeed-runner-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| codspeed-runner-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
| codspeed-runner-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
4.13.0 - 2026-03-26
Release Notes
In this release we've added support for comparing a local run with another run using --base <runId>.
codspeed exec -m walltime --base 69c28bfa6e3ac6b1b416512f -- sleep 0.5
We also added codspeed status and codspeed update commands, and fixed the CWD behavior when invoking codspeed run -- <cmd> and codspeed exec -- <cmd> within a repo that has a codspeed.yml
Finally, we added support for a new experimental flag --experimental-fair-sched to have valgrind use the --fair-sched argument.
🚀 Features
- Forward the fair-sched flag to valgrind by @GuillaumeLagrange in #279
- Add new cli flag --fair-sched and support for experimental flags by @GuillaumeLagrange
- Pass java options benchmark by @not-matthias
- Add snapshot test for local provider resolution by @GuillaumeLagrange
- Add
codspeed auth status,codspeed setup status, andcodspeed statuscommands by @GuillaumeLagrange - Remove nerd fonts and centralize icon definition by @GuillaumeLagrange in #272
- Add --base argument to compare local run to another run by @GuillaumeLagrange
- Hide the cursor while running by @GuillaumeLagrange
- Print the banner in a single eprintln! call by @GuillaumeLagrange
- Add
codspeed updatecommand by @GuillaumeLagrange in #275
🐛 Bug Fixes
- Only hide curser after clap is done parsing cli args by @GuillaumeLagrange
- Use exact executable matching for perf unwinding mode detection by @not-matthias in #261
- Support spaces in base injected env by @not-matthias
- Fix error when running outside of git repository by @GuillaumeLagrange in #268
- Resolve working_directory relative to config file, not CWD by @GuillaumeLagrange in #270
- Do not run teardown if executor's run failed by @GuillaumeLagrange
🏗️ Refactor
- Extract
parse_repository_from_remoteinto shared helpers by @GuillaumeLagrange - Move the benchmark display helpers to the upload module by @GuillaumeLagrange in #273
- Extract config discovery into
DiscoveredProjectConfigby @GuillaumeLagrange
⚙️ Internals
- Use frame-pointer unwinding with Java by @not-matthias
- Add basic basic end to end invocation by @GuillaumeLagrange in #274
Install codspeed-runner 4.13.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v4.13.0/codspeed-runner-installer.sh | shDownload codspeed-runner 4.13.0
| File | Platform | Checksum |
|---|---|---|
| codspeed-runner-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
| codspeed-runner-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
4.12.1 - 2026-03-20
Release Notes
Fix a bug where memory profiling with codspeed exec for binaries that use statically-linked allocators (e.g. jemalloc in Rust). Previously, we reported incorrect memory usage because it didn't attach to the statically linked allocators.
⚙️ Internals
- Bump memtrack version
Install codspeed-runner 4.12.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v4.12.1/codspeed-runner-installer.sh | shDownload codspeed-runner 4.12.1
| File | Platform | Checksum |
|---|---|---|
| codspeed-runner-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
| codspeed-runner-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
memtrack-v1.2.3
Install memtrack 1.2.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/memtrack-v1.2.3/memtrack-installer.sh | shDownload memtrack 1.2.3
| File | Platform | Checksum |
|---|---|---|
| memtrack-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| memtrack-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
4.12.0 - 2026-03-19
v4.12.0 - 2026-03-19
In this release, we've focused on improving the local user experience.
We've revamped the output of the cli to provide tailed logs while the benchmarks are being executed, and polished a bit the display of results after your run.
We also added support to run multiple modes in a single command invocation, both for local and CI runs!
For instance, that means you can now do
codspeed run --mode simulation --mode memory --mode walltime -- cargo codspeed run
Last but not least, you can now define entrypoints in your project config
# codspeed.yml
# List of commands that are run when running `codspeed run` without further arguments
benchmarks:
- name: My ls command
# Mutually exclusive with entrypoint
# Expects a command that will run a benchmark for an arbitrary command
exec: ls -al /usr/bin
- name: My pytest-codspeed benchmark
# Mutually exclusive with exec
# Expects a command that will run a benchmark program that is using a codspeed integration
entrypoint: pytest --codspeed srcDetails
🚀 Features
- Set NODE_OPTIONS to get perf map from node by @GuillaumeLagrange in #267
- Disable node instrospection for exec-harness by @GuillaumeLagrange
- Support CODSPEED_MEMTRACK_BINARIES for static allocator discovery by @not-matthias
- Gracefully handle logs from the runner while rolling buffer is active by @GuillaumeLagrange
- Add
--show-full-outputto bypass the new rolling buffer by @GuillaumeLagrange - Add a spinner while waiting for results by @GuillaumeLagrange
- Clean up group headers and emoji usage, make the executor title not dim after run by @GuillaumeLagrange
- Add rolling buffer to display logs from executors by @GuillaumeLagrange
- Polish impact reporting and upload feedback by @art049
- Add color-coded metrics to benchmark result tables by @art049
- Enhance local logger with richer visual hierarchy by @art049
- Style the ASCII banner with CodSpeed orange by @GuillaumeLagrange
- Enforce CodSpeed CLI as single source of truth for all measurements by @art049
- Add optimize and setup-harness skills by @art049
- Add the cursor plugin by @art049
- Check if user is logged in before doing a local run by @GuillaumeLagrange in #263
- Skip respository resolve with
--skip-uploadby @GuillaumeLagrange - Use an enum and fix schema for entry/entrypoint by @GuillaumeLagrange in #260
- Accept a mix of entrypoint and exec targets in project config by @GuillaumeLagrange
- Introduce OrchestratorConfig and ExecutorConfig by @GuillaumeLagrange
- Unify run_part_id suffix computation between ci providers and local by @GuillaumeLagrange
- Add the claude plugin by @art049
- Add local_data to upload metadata by @GuillaumeLagrange
- Use repositoryOverview resolver rather than repository by @GuillaumeLagrange
🐛 Bug Fixes
- Use fp unwinding mode when running
go testby @GuillaumeLagrange in #269 - Improve error message when no benchmarks are found by @GuillaumeLagrange in #264
🏗️ Refactor
- Extract shared test helpers for compile and track by @not-matthias
- Pass extra env via config instead of unsafe set_var by @not-matthias
- Remove the closure argument to poll in favor of polling options by @GuillaumeLagrange
- Move EXEC_HARNESS_VERSION and EXEC_HARNESS_COMMAND to orchestrator mod by @GuillaumeLagrange
- Flatten orchestrator execution loop over (command, mode) pairs by @GuillaumeLagrange
- Introduce Orchestrator to support multi-mode execution by @GuillaumeLagrange in #259
- Consolidate poll_results into upload module by @GuillaumeLagrange
🧪 Testing
- Add spawn wrapper integration test for static allocator discovery by @not-matthias in #266
⚙️ Internals
- Bump linux-perf-data to use upstream version by @GuillaumeLagrange in #271
- Remove lazy_static in favor of LazyLock by @GuillaumeLagrange in #265
- Rename skill directories with codspeed prefix by @art049
- Move architecture docs out of this repo by @GuillaumeLagrange in #262
- Typo in plugin description by @art049
Install codspeed-runner 4.12.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v4.12.0/codspeed-runner-installer.sh | shDownload codspeed-runner 4.12.0
| File | Platform | Checksum |
|---|---|---|
| codspeed-runner-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
| codspeed-runner-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
4.11.1 - 2026-02-26
Release Notes
⚙️ Internals
Install codspeed-runner 4.11.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v4.11.1/codspeed-runner-installer.sh | shDownload codspeed-runner 4.11.1
| File | Platform | Checksum |
|---|---|---|
| codspeed-runner-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
| codspeed-runner-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
4.11.0 - 2026-02-23
Release Notes
🚀 Features
- Collect debug info by pid by @GuillaumeLagrange in #240
- Skip tests requiring sudo if
GITHUB_ACTIONSis not set by @GuillaumeLagrange - Deduplicate symbol maps, unwind_data and debug info by @GuillaumeLagrange
- Use bench_pids filters when harvesting symbols from perf file by @GuillaumeLagrange
- Add new fields to perf metadata by @GuillaumeLagrange in #246
- Always try to attach to libc-compatible API by @not-matthias
- Support tcmalloc by @not-matthias
- Support more standard allocation APIs by @not-matthias
- Add tracegrind support as an alternative simulation tool by @art049 in #236
🐛 Bug Fixes
- Re-add perf map colection removed by mistake by @GuillaumeLagrange in #251
🏗️ Refactor
- Use common lib paths for all allocators by @not-matthias
⚙️ Internals
- Bump exec-harness version
- Remove outdated allocator check by @not-matthias in #241
- Add tcmalloc test by @not-matthias
Install codspeed-runner 4.11.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v4.11.0/codspeed-runner-installer.sh | shDownload codspeed-runner 4.11.0
| File | Platform | Checksum |
|---|---|---|
| codspeed-runner-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
| codspeed-runner-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
exec-harness-v1.2.0
Install exec-harness 1.2.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/exec-harness-v1.2.0/exec-harness-installer.sh | shDownload exec-harness 1.2.0
| File | Platform | Checksum |
|---|---|---|
| exec-harness-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| exec-harness-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
4.10.6 - 2026-02-09
Release Notes
🚀 Features
- Force necessary flags for
go runin introspected go by @GuillaumeLagrange in #238 - Bump the stack size for python by @GuillaumeLagrange
- Make python generate perf maps in exec-harness analysis by @GuillaumeLagrange
- Harvest python perf maps after parsing perf data by @GuillaumeLagrange
- Allow memory instrument with exec-harness's integration hook by @GuillaumeLagrange
- Use the new instrument-hooks bindings rather than codspeed core by @GuillaumeLagrange
🐛 Bug Fixes
- Panic if integration doesn't support memory profiling by @not-matthias in #239
- Allow memtrack caching by resetting .cargo permissions by @not-matthias in #237
- Search build directories in sub-folders by @not-matthias
- Handle working-directory option by @not-matthias
- Improve simulation script support and detect subprocesses by @GuillaumeLagrange
🏗️ Refactor
- Move common perf-map utility outside of valgrind helpers by @GuillaumeLagrange
⚙️ Internals
- Bump memtrack version
- Add debug logs for harvested bench pids by @GuillaumeLagrange
- Update wording in build.rs by @GuillaumeLagrange in #235
- Use tokio::fs when harvesting perf maps from pids by @GuillaumeLagrange
- Import instrument-hooks bindings from codspeed-rust by @GuillaumeLagrange
- Move small snapshot files out of Git LFS by @art049
Install codspeed-runner 4.10.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v4.10.6/codspeed-runner-installer.sh | shDownload codspeed-runner 4.10.6
| File | Platform | Checksum |
|---|---|---|
| codspeed-runner-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
| codspeed-runner-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
memtrack-v1.2.2
Install memtrack 1.2.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/memtrack-v1.2.2/memtrack-installer.sh | shDownload memtrack 1.2.2
| File | Platform | Checksum |
|---|---|---|
| memtrack-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| memtrack-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |