Releases: CodSpeedHQ/action
v4.17.0
Release Notes
🚀 Features
- Configure samply symbol resolution env vars by @not-matthias
- Add CODSPEED_WALLTIME_PROFILER override by @not-matthias
- Make benchmark isolation profiler-driven by @not-matthias
- Add profile-based auth configuration (#366) by @art049 in #366
- Bump instrument-hooks to not use stubs on macos (#373) by @GuillaumeLagrange in #373
- Pin codspeed-go-runner installer downloads with sha256 verification by @art049 in #362
- Pin downloaded binaries with sha256 verification by @art049
- Search NixOS debug info path by @not-matthias in #354
- Inherit process mapping on forks by @GuillaumeLagrange
- Bundle samply via library crate by @not-matthias
- Add samply profiler for macOS by @not-matthias
- Rename CODSPEED_PERF_ENABLED to CODSPEED_PROFILER_ENABLED by @not-matthias
- Add Profiler trait abstraction by @not-matthias
- Restore cursor on ctrl c by @GuillaumeLagrange in #341
- Validate tokens and repository access up front by @GuillaumeLagrange
🐛 Bug Fixes
- Use introspected env for memory executor by @GuillaumeLagrange
- Misleading DCE advice in setup-harness (#350) by @SuperMuel in #350
- Flush rolling buffer when executor errors by @not-matthias in #352
- Use brew-installed bash for samply on macOS by @not-matthias in #347
- Keep old name aliases to for deserialization purposes by @GuillaumeLagrange in #345
- Handle malformed token from backend better by @GuillaumeLagrange
- Disable PYTHON_PERF_JIT_SUPPORT on macOS by @not-matthias
- Use mach_absolute_time for FIFO timestamps on macOS by @not-matthias
- Use O_RDWR to open FIFOs on all Unix platforms by @not-matthias
💼 Other
- Select profiler via typed CLI arg by @GuillaumeLagrange in #379
- Bump workspace dependencies (#370) by @art049 in #370
- Make api_client the single source of truth for the auth token by @GuillaumeLagrange
- Bump gql_client to partial-data fork by @GuillaumeLagrange
🏗️ Refactor
- Centralize internal re-exec via InternalCommands::get_command_builder by @not-matthias in #338
- Rename Benchmark FIFO commands/markers to Profiler/Round by @not-matthias
- Rename Profiler::wrap to wrap_command by @not-matthias
- Share Linux profiler sysctl setup by @not-matthias
- Port PerfRunner to Profiler trait by @not-matthias
- Rename PerfMetadata to WalltimeMetadata by @not-matthias
- Move perf module under profiler/ by @not-matthias
- Rename FifoCommand::PingPerf to PingProfiler by @not-matthias
- Rename IntegrationMode::Perf to Walltime by @not-matthias
🧪 Testing
- Update valgrind snapshot tests by @adriencaccia
⚙️ Internals
- Add taplo config file by @GuillaumeLagrange in #363
- Bump samply fork to use framehop-codspeed by @not-matthias
- Add retry to sha256 tests to prevent transient failures by @GuillaumeLagrange in #375
- Update setarch command arguments to use long options (#304) by @xtqqczze in #304
- Bump valgrind-codspeed to 3.26.0-0codspeed2
- Fix macOS rustup cache corruption in install-rust action by @GuillaumeLagrange in #357
- Give each bpf-tests shard its own cache key by @not-matthias in #358
- Shard bpf-tests by integration test binary by @not-matthias
- Use rustup show instead of toolchain install by @GuillaumeLagrange in #349
- Disable profiler in macos-basic-run-test by @not-matthias
- Upload the basic run to validate auth of integration test by @GuillaumeLagrange
- Move samply fork from AvalancheHQ to CodSpeedHQ by @not-matthias
- Remove the cursor hiding by @GuillaumeLagrange
Install codspeed-runner 4.17.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v4.17.0/codspeed-runner-installer.sh | shDownload codspeed-runner 4.17.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 |
Full Runner Changelog: https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md
Full Changelog: v4.15.1...v4.17.0
v4.15.1
Release Notes
🚀 Features
- Add a way to disable perf compression through env var by @GuillaumeLagrange in #334
- Do not display the comparison nudge when not in an interactive terminal by @GuillaumeLagrange in #300
- Display a warning when profiling generation failed by @GuillaumeLagrange
- Detect and abort on ring buffer overflow by @not-matthias in #321
- Grow ring buffer to 16 MiB by @not-matthias
⚙️ Internals
- chore: bump runner version to 4.15.1 by @github-actions[bot] in #205
- Increase stack sampling for python by @GuillaumeLagrange in #337
- Replace hard coded lint job for a dedicated check action by @GuillaumeLagrange in #320
- Bump cpp-linter-hooks to support darwin by @GuillaumeLagrange
- Swap pre-commit action for prek by @GuillaumeLagrange
- Fix unused clippy errors in test targets on macos by @GuillaumeLagrange
- Run pre-commit hooks on macos and ubuntu-latest by @GuillaumeLagrange
Install codspeed-runner 4.15.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v4.15.1/codspeed-runner-installer.sh | shDownload codspeed-runner 4.15.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 |
Full Runner Changelog: https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md
Full Changelog: v4.15.0...v4.15.1
v4.15.0
Release Notes
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.
Minimum integration versions
pytest-codspeedv4.5.0codspeed-rustv4.6.0codspeed-cppv2.3.0codspeed-gov1.2.0codspeed-nodev5.4.0
🚀 Features
- Revert logo changes by @GuillaumeLagrange
- Display N/A rather than NaN/inf in the benchmarks results table by @GuillaumeLagrange in #314
- Only wrap walltime command with sudo on linux by @GuillaumeLagrange
- Add
--with-tokenflag to read token from stdin by @fargito in #313 - Warn when libc debug info is not found by @not-matthias in #310
- Resolve debug info and symbols from separate debug files by @not-matthias in #303
🧪 Testing
- Add libc debuglink/build-id fixtures by @not-matthias
- Add stripped binary and debug file test fixtures by @not-matthias
⚙️ Internals
- chore: bump runner version to 4.15.0 by @github-actions[bot] in #204
- Bump exec-harness version
- Add macos basic run test by @GuillaumeLagrange in #319
- Remove DumpPerfMapAtExit in favor of custom dumper by @not-matthias in #295
Install codspeed-runner 4.15.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v4.15.0/codspeed-runner-installer.sh | shDownload codspeed-runner 4.15.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 |
Full Runner Changelog: https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md
Full Changelog: v4.14.0...v4.15.0
v4.14.0
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
- chore: bump runner version to 4.14.0 by @github-actions[bot] in #203
- 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 |
Full Runner Changelog: https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md
Full Changelog: v4.13.1...v4.14.0
v4.13.1
What's Changed
- build(deps)!: update actions to Node.js 24 runtime by @shaanmajid in #201
New Contributors
- @shaanmajid made their first contribution in #201
Full Changelog: v4.13.0...v4.13.1
v4.13.0
Release Notes
We added support for a new experimental flag --experimental-fair-sched to have valgrind use the --fair-sched argument.
Usage in the action:
- name: Run the benchmarks
uses: CodSpeedHQ/action@v4
env:
CODSPEED_EXPERIMENTAL_FAIR_SCHED: "true"
with:
run: cargo codspeed run # Replace with your command
mode: simulationFull Runner Changelog: https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md
v4.12.1
Release Notes
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 srcFix 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.
Details
🚀 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
📚 Documentation
- docs: add documentation about multiple modes in a single run by @GuillaumeLagrange in #195
🧪 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
- Bump memtrack version
- chore: bump runner version to 4.12.0 by @github-actions[bot] in #194
- chore: bump runner version to 4.12.1 by @github-actions[bot] in #196
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 |
Full Runner Changelog: https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md
Full Changelog: v4.11.1...v4.12.1
v4.11.1
Release Notes
🐛 Bug Fixes
- fix: stop using
curl --fail-with-bodyand removejqdependency by @GuillaumeLagrange in #193
⚙️ Internals
- chore: bump runner version to 4.11.1 by @github-actions[bot] in #191
- Pin all actions (#250) by @art049 in #250
- Bump nix to 0.31.1 (#247) by @3v1n0 in #247
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 |
Full Runner Changelog: https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md
What's Changed
Full Changelog: v4.11.0...v4.11.1
v4.11.0
Release Notes
🚀 Features
- feat: add SHA256 hash verification for the installer script by @art049 in #189
- 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
- chore: bump runner version to 4.11.0 by @github-actions[bot] in #190
- 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 |
Full Runner Changelog: https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md
Full Changelog: v4.10.6...v4.11.0
v4.10.6
Release Notes
🚀 Features
- Use codspeed.io installer for cached and authenticated requests by @adriencaccia in #187
- 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
- chore: bump runner version to 4.10.6 by @github-actions[bot] in #188
- 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 |
Full Runner Changelog: https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md
Full Changelog: v4.10.5...v4.10.6