Repository navigation
Release Notes
This release adds a new --experimental-disable-pythonmalloc-override flag to prevent overriding the python allocator, which can cause issues when running free-threaded Python in Simulation mode.
We have also improved the Memory instrument:
- Improved serialization performance for large memory benchmarks
- Physical Memory tracking is now enabled by default (previously opt-in)
- Added support for flamegraphs (enabled by default)
CodSpeed now also works on non-Ubuntu/Debian distributions such as Arch Linux.
🚀 Features
- Expose the run id as a GitHub Actions step output (#551) by @moha-bekh in #551
- Enable rss tracking and memory flamegraphs by default by @not-matthias
- Log process stops and count them per reason by @not-matthias in #543
- Pause producers under ring pressure by @not-matthias
- Add experimental flag to capture allocation stacks by @not-matthias in #522
- Write memtrack module artifacts and metadata by @not-matthias
- Record mapped modules for offline stack attribution by @not-matthias
- Add MemtrackMetadata sharing ModuleArtifacts with walltime by @not-matthias
- Enable stack capture through the tracker by @not-matthias
- Add userspace stack-capture module by @not-matthias
- Capture allocation stacks in eBPF by @not-matthias
- Add agent-plugins manifest and MCP config by @art049
- Add Python allocator opt-out by @not-matthias in #539
🐛 Bug Fixes
- Error out when profile archive exceeds upload size limit (#557) by @lvaroqui in #557
- Honor falsey values of the deprecated memory flags by @not-matthias in #553
- Never resume a reused pid by @not-matthias
- Keep stack hashing scratch inside the ring record by @not-matthias
- Count stack-ring overflow as dropped events by @not-matthias
- Detach BPF links through forked fd holders by @not-matthias
- Read tracking_enabled from a global instead of an array map by @not-matthias
- Skip allocator symbols aliased at an attached offset by @not-matthias
- Honor deprecated experimental flags instead of ignoring them by @not-matthias in #532
- Detect free-threaded Python from venv and uv before setting PYTHONMALLOC by @not-matthias
- Support distributions CodSpeed publishes no valgrind package for (Arch, rolling releases) (#525) by @moha-bekh in #525
🏗️ Refactor
- Drop stack_hash from Free events by @not-matthias in #558
- Inline pid-key deserializer into metadata by @not-matthias
- Capture module mappings with perf by @not-matthias
- Move ELF artifact pipeline to executor/shared by @not-matthias
- Share the yes/no confirmation between the setup steps (#542) by @moha-bekh in #542
📚 Documentation
- Describe the mapping recorder by @not-matthias
- Link the readme logo to codspeed.io by @adriencaccia
⚡ Performance
- Buffer the decompressed memtrack event stream by @not-matthias in #560
- Warm up tar for several complete rounds by @not-matthias in #555
- Drop the teardown-dominated ls benchmark by @not-matthias
- Stop capturing stacks on free by @not-matthias
- Serialize memtrack frames into a buffer and compress in one shot by @codspeedbot
- Stream memtrack encoder frames instead of windows by @not-matthias
- Poll ring buffers every 1ms by @not-matthias
- Resolve stack fp chains off the ring poll thread by @not-matthias
- Switch to mimalloc to reduce memory usage and fragmentation by @not-matthias
- Pre-size the frame output buffer by @not-matthias
- Batch ring-buffer events over the channel by @not-matthias
🧪 Testing
- Ignore duplicate frees in cross-variant comparison by @not-matthias
- Measure ring-pressure pause under an allocation storm by @not-matthias
- Assert nested stack identities by @not-matthias
- Add nested allocation fixtures by @not-matthias
- Cover allocation stack capture by @not-matthias
⚙️ Internals
- Pin memtrack 1.6.0 (#561) by @adriencaccia in #561
- Run the clang-format hook serially by @codspeedbot in #548
- Benchmark runner-shared in memory mode by @not-matthias
- Bump samply-codspeed by @not-matthias in #550
- Cache runner builds across memtrack benchmark shards by @not-matthias in #537
- Add memtrack walltime benchmarks to CI by @not-matthias
Install codspeed-runner 5.4.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v5.4.0/codspeed-runner-installer.sh | shDownload codspeed-runner 5.4.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 |