Repository navigation
Releases
5.7.0 - 2026-11-14
Highlights
One runner binary
codspeed exec and the memory instrument no longer download a separate tool on their first run: exec-harness and memtrack now ship inside the runner (#531).
Configurable walltime unwinding
--walltime-unwinding-mode and --walltime-stack-sample-size (or CODSPEED_WALLTIME_UNWINDING_MODE and CODSPEED_WALLTIME_STACK_SAMPLE_SIZE) set how walltime profiles unwind stacks. --perf-unwinding-mode keeps working as a deprecated alias (#586).
Experimental
- Simulation:
--experimental-rep-bulk-cost(orCODSPEED_EXPERIMENTAL_REP_BULK_COST), combined with--cycle-estimation, prices amd64rep movsandrep stoscopies from measured bulk costs instead of per element (#620, #60). --mode telemetrycollects the OpenTelemetry spans and logs your benchmarks export and uploads them with the results. Combine it with a measuring mode, e.g.--mode telemetry,walltime(#589).
Fixes
- Simulation: report the correct main thread stack size to programs (#62).
- Walltime: Go and Java benchmarks on Linux use frame-pointer unwinding whichever profiler runs (#603).
- Walltime and Memory: glibc frames keep the same name across runs, so differential flamegraphs no longer flag them as new or dropped (#601).
- Exec: Node.js analysis runs use the same V8 flags as the codspeed-node integration (#595).
- Run:
codspeed run -- <command> <args>keeps each argument as your shell parsed it, so a quoteda|bis no longer split into a pipe. Shell syntax spread across several arguments must now be one quoted string (#622). - Security: bump rustls-webpki to address RUSTSEC-2026-0382 and RUSTSEC-2026-0383 (#607).
Release Notes
🚀 Features
- Add --experimental-rep-bulk-cost flag (#620) by @not-matthias in #620
- Add codspeed-write-benchmarks skill by @not-matthias
- Collect the OTLP data exported by the benchmarks (#589) by @lvaroqui in #589
- Declare benchmarks run in another process by @lvaroqui in #531
- Bundle memtrack into the runner binary by @GuillaumeLagrange
- Bundle exec-harness into the runner binary by @GuillaumeLagrange
- Track subprocesses instead of preloading a library by @GuillaumeLagrange
- Add --walltime-unwinding-mode with DWARF stack size by @not-matthias
🐛 Bug Fixes
- Quote each argument of a multi-argument command (#622) by @not-matthias in #622
- Compile node analysis workloads eagerly with sparkplug (#595) by @not-matthias in #595
- Infer Go and Java unwinding for both profilers by @not-matthias in #603
- Bump merged sampler and align unwinding arguments by @not-matthias in #586
- Pass stack sample size as --unwinding-stack-size by @not-matthias
- Install libc6-dbg during memory and walltime setup (#601) by @not-matthias in #601
💼 Other
- Inline aarch64 atomics in musl C code instead of linking libgcc by @adriencaccia
- Support building against musl by @GuillaumeLagrange
- Bump rustls-webpki and webpki root certs (#607) by @GuillaumeLagrange in #607
- Bump j178/prek-action from 2.0.4 to 3.0.0 (#495) by @dependabot[bot] in #495
🏗️ Refactor
- Move the CLI into the library by @GuillaumeLagrange
- Scope the rolling buffer display to the run environment (#506) by @GuillaumeLagrange in #506
📚 Documentation
- Mention benchmark writing in the plugin description by @not-matthias in #621
- Point optimize at codspeed-write-benchmarks by @not-matthias
- Point setup-harness at codspeed-write-benchmarks by @not-matthias
⚡ Performance
- Read the memtrack event stream through a 1 MiB buffer (#616) by @not-matthias in #616
🧪 Testing
- Run the executor tests in release by @GuillaumeLagrange
⚙️ Internals
- Bump pinned valgrind-codspeed to 3.26.0-0codspeed14 (#626) by @adriencaccia in #626
- fix(callgrind): model REP copies with calibrated bulk costs by @not-matthias in CodSpeedHQ/valgrind-codspeed#60
- Release the runner with dist's defaults (#625) by @adriencaccia in #625
- Bump cargo-dist to 0.34.0 by @GuillaumeLagrange in #623
- Build the macOS release on macos-latest by @adriencaccia
- Run the release build on pull requests by @adriencaccia
- Bump pinned valgrind-codspeed to 3.26.0-0codspeed13 (#618) by @adriencaccia in #618
- fix(initimg): keep glibc's reported main stack size near RLIMIT_STACK by @not-matthias in CodSpeedHQ/valgrind-codspeed#62
- Prime one shared rust-cache for the ubuntu-26.04 x64 jobs by @GuillaumeLagrange in #608
- Share one rust-cache entry per os across bpf-tests shards by @GuillaumeLagrange
Install codspeed-runner 5.7.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v5.7.0/codspeed-runner-installer.sh | shDownload codspeed-runner 5.7.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 |
v5.7.0-alpha.1
Install codspeed-runner 5.7.0-alpha.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v5.7.0-alpha.1/codspeed-runner-installer.sh | shDownload codspeed-runner 5.7.0-alpha.1
| 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 |
5.6.3 - 2026-11-03
Highlights
Go benchmark times match go test
b.Loop() benchmarks that stop and restart the timer inside an iteration now report all of their timed work. A round previously counted only the time since the most recent StartTimer, so results for those benchmarks will move.
Unsupported go test flags no longer fail the run
go test -p 1 ./... -bench . used to strip -p, parse 1 as a package, and fail with package 1 is not in std after every benchmark had passed. Flags and their values are now dropped together.
Fixed randomness in CPU Simulation
getrandom(), /dev/urandom, AT_RANDOM and hardware RNG instructions now return the same values on every CPU Simulation run, removing one source of run-to-run variance.
Release Notes
🚀 Features
- Always enable deterministic RNG (#600) by @not-matthias in #600
🐛 Bug Fixes
- Quiet expected libbpf warnings in a user namespace (#602) by @GuillaumeLagrange in #602
- Bump go-runner to 1.4.0 (#605) by @adriencaccia in #605
- fix(cli): drop the value of unsupported go test flags by @not-matthias in CodSpeedHQ/codspeed-go#67
- fix(go-runner): count all timed segments of a b.Loop() iteration by @not-matthias in CodSpeedHQ/codspeed-go#69
Install codspeed-runner 5.6.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v5.6.3/codspeed-runner-installer.sh | shDownload codspeed-runner 5.6.3
| 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 |
5.6.2 - 2026-11-03
Fixes
- Simulation: fix SIGILL on arm64 when programs read previously unsupported CPU ID registers or
TPIDRRO_EL0(#59). - Go: benchmarks that draw from the global
math/randnow start from the same seed on every run, so their results no longer vary between runs (#596).
Release Notes
🚀 Features
- Seed Go's global math/rand deterministically (#596) by @not-matthias in #596
⚙️ Internals
- Bump pinned valgrind-codspeed to 3.26.0-0codspeed12 (#604) by @adriencaccia in #604
- feat: add --deterministic-rng to make client randomness reproducible by @not-matthias in CodSpeedHQ/valgrind-codspeed#54
- feat(vex): serve arm64 RNDR and RNDRRS with --deterministic-rng by @not-matthias in CodSpeedHQ/valgrind-codspeed#56
- fix(vex): decode arm64 MRS of all EL0-visible ID registers by @not-matthias in CodSpeedHQ/valgrind-codspeed#59
Install codspeed-runner 5.6.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v5.6.2/codspeed-runner-installer.sh | shDownload codspeed-runner 5.6.2
| 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 |
v5.6.2-alpha.1
Install codspeed-runner 5.6.2-alpha.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v5.6.2-alpha.1/codspeed-runner-installer.sh | shDownload codspeed-runner 5.6.2-alpha.1
| 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 |
5.6.1 - 2026-10-30
Fixes
- Walltime: the runner no longer hangs after the benchmark exits when a Python process forks and leaves a corrupted perf jitdump (#599)
- Simulation: stop the libpython symlink warning from firing falsely (#594)
Release Notes
🐛 Bug Fixes
- Stop the libpython symlink warning from firing falsely by @not-matthias in #594
💼 Other
- Bump submodule to not loop on corrupted jit dump by @GuillaumeLagrange in #599
⚙️ Internals
- Bump CodSpeedHQ/action to v5.6.0 (#597) by @not-matthias in #597
Install codspeed-runner 5.6.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v5.6.1/codspeed-runner-installer.sh | shDownload codspeed-runner 5.6.1
| 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 |
5.6.0 - 2026-10-22
Highlights
More consistent CPU Simulation results
Changes to your CI environment, like a different path or an extra environment variable, no longer change the performance. Each benchmark now starts with the same memory layout, reducing the chance of false regressions.
Release Notes
🐛 Bug Fixes
🏗️ Refactor
⚙️ Internals
- Bump pinned valgrind-codspeed to 3.26.0-0codspeed10 (#593) by @adriencaccia in #593
- style: restore upstream trailing whitespace by @lvaroqui in CodSpeedHQ/valgrind-codspeed#51
- fix(callgrind): suppress L3 warning for explicit LL settings by @not-matthias in CodSpeedHQ/valgrind-codspeed#52
- fix(initimg): stabilize Linux startup stack layout by @not-matthias in CodSpeedHQ/valgrind-codspeed#53
Install codspeed-runner 5.6.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v5.6.0/codspeed-runner-installer.sh | shDownload codspeed-runner 5.6.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 |
5.5.0 - 2026-10-14
This release adds support for Ubuntu 26.04, on both x86_64 and arm64. The officially supported distributions are now Ubuntu 22.04, 24.04 and 26.04, and Debian 12.
Profile uploads are also faster on GitHub-hosted runners, and archives larger than 5 GiB can now be uploaded.
Results from the Memory instrument are processed much faster and with less memory on large benchmarks.
This release also fixes a crash that could affect some pytest-codspeed benchmarks since v5.4.2.
Release Notes
🚀 Features
🐛 Bug Fixes
- Only set PYTHONPERFSUPPORT for exec-harness benchmarks (#584) by @not-matthias in #584
🏗️ Refactor
- Move the module event filter next to the decoder by @not-matthias
⚡ Performance
- Use mimalloc as the runner's global allocator by @not-matthias
- Stream each memtrack frame when finding module events by @not-matthias in #578
- Decode memtrack frames for module events in parallel by @not-matthias
🧪 Testing
- Run the memtrack benches on mimalloc by @not-matthias in #581
- Search artifacts of up to 100M events in the module event bench by @not-matthias
- Keep instrumented module event benches to 1M events by @not-matthias in #576
- Benchmark finding module events in a memtrack artifact by @not-matthias
⚙️ Internals
- Support Ubuntu 26.04 (#574) by @lvaroqui in #574
- Publish executable hashes and refresh the eBPF allowlist on release (#585) by @GuillaumeLagrange in #585
- Migrate to github default arm runners (#583) by @lvaroqui in #583
Install codspeed-runner 5.5.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v5.5.0/codspeed-runner-installer.sh | shDownload codspeed-runner 5.5.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 |
v5.4.3-alpha.1
Install codspeed-runner 5.4.3-alpha.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v5.4.3-alpha.1/codspeed-runner-installer.sh | shDownload codspeed-runner 5.4.3-alpha.1
| 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 |
5.4.2 - 2026-10-09
Fixes flamegraphs for Python in simulation mode in the exec CLI.
Release Notes
🐛 Bug Fixes
- Always set PYTHONPERFSUPPORT (#577) by @not-matthias in #577
⚙️ Internals
- Pin exec-harness 1.4.1 (#580) by @adriencaccia in #580
Install codspeed-runner 5.4.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v5.4.2/codspeed-runner-installer.sh | shDownload codspeed-runner 5.4.2
| 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 |