perf-cpp v0.14.1 Release Notes

Release Date: 2026-05-12 // about 1 month ago
  • v0.14.1

    • 🛠 Bugfix : UniqueFileDescriptor::reset() did not close the underlying file descriptor (see issue #12 – thanks to @ilyapopov).

Previous changes from v0.14.0

    • 🗄 Deprecation Warnings Activated : All legacy .h forwarding headers (e.g., perfcpp/sampler.h, perfcpp/event_counter.h) now emit a compile-time #pragma message warning directing users to the .hpp replacements introduced in v0.13.0. The old headers will be removed in v1.0. If you see a deprecation message, replace the include with the .hpp variant (e.g., #include <perfcpp/sampler.hpp>).
    • CGroup Monitoring : Added support for monitoring all tasks belonging to a cgroup (container). Configure a perf::CGroupMonitor (constructed from a path, a cgroup name, a SharedFileDescriptor, or a UniqueFileDescriptor) and pass it to Config::cgroup(). Requires a specific CPU core (CpuCore::Any is rejected) and CAP_PERFMON or perf_event_paranoid <= 0. See the recording documentation.
    • Sampler Input Validation : Opening a sampler with an invalid period or frequency now raises an exception immediately. Period must be greater than zero; frequency must be between 1 and the kernel's perf_event_max_sample_rate limit.
    • RAPL Energy Measurement Example : Added an example program demonstrating how to measure energy consumption of a code segment using the built-in watts-pkg, watts-cores, and watts-ram metrics.
    • 🛠 Bugfixes :
      • perf::CpuCore now accepts std::uint16_t as a CPU core id
      • Fixed multiple event codes in the event library across AMD Zen5 and Intel Panther Lake