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