Skip to content

Conversation

dependabot[bot]
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Jul 21, 2025

Updates the requirements on iai-callgrind to permit the latest version.

Release notes

Sourced from iai-callgrind's releases.

v0.16.0

[0.16.0] - 2025-07-20

This release includes breaking changes especially for DHAT explained in more detail below.

Breaking:

  • DHAT is now considered to be fully integrated into Iai-Callgrind and the default entry point in library benchmarks for DHAT is set to the benchmark function similar to callgrind. This changes the metrics of the DHAT output.

In contrast to callgrind, the DHAT default entry point includes any (de-)allocations in setup and/or teardown code in order to be able to detect the DHAT metrics of the benchmark itself. The inclusion of setup/teardown metrics is a limitation of DHAT and what is possible to reliably extract from the output files. Nevertheless, this change allows the metrics to be centered on the benchmark function excluding the heap operations of Iai-Callgrind needed to setup the benchmark (allocations fluctuating between 2000 - 2500 bytes). More importantly, the DHAT metrics are stabilized. This clears the way for setting regression limits in the same fashion as it is possible for callgrind. Additionally, it is possible to specify additional frames/functions to be included/excluded from the DHAT metrics similar to what --toggle-collect does for callgrind.

Breaking:

  • Note that in DHAT library benchmarks of multi-threaded/multi-process functions, the threads/subprocesses are not included in the metrics anymore. This is exactly equivalent to the situation in callgrind benchmarks of multi-threaded/multi-process functions and can be solved in the same way with additional Dhat::frames.

Also coming with this release: The distinction between soft and hard limits.Soft limits are now what was before just "the limits" and describe limits for the percentage difference between the "new" and "old" run. Hard limits cap the metrics of the "new" run in absolute numbers.

Breaking:

  • This changes the way command-line arguments like --callgrind-limits, --dhat-limits, ... are parsed and to be able to disambiguate between soft and hard limits, soft limits have to be suffixed with a %.

Soft limit before: --callgrind-limits='ir=0.0' After: --callgrind-limits='ir=0.0%' or --callgrind-limits='ir=0%'

Hard limits are bare numbers: --callgrind-limits='ir=10000'.

Also new: It's possible to specify soft or hard limits for whole groups like --callgrind-limits='@all=5%'.

Added

  • (#406): Added the method Dhat::entry_point to be able to change the default entry point similar to Callgrind::entry_point and Dhat::frames to be able to specify additional functions in a similar way to --toggle-collect of callgrind.
  • (#406): Possibility to specify dhat regression limits with the Dhat struct and with the command-line argument --dhat-limits or environment variable IAI_CALLGRIND_DHAT_LIMITS.
  • (#406): New dhat metrics DhatMetric::TotalUnits and DhatMetric::TotalEvents for dhat ad-hoc mode. They are part of the default output format of dhat.
  • (#407)!: Add possibility to specify hard limits in addition to soft limits. This breaks the parsing of the --callgrind-limits, ... arguments. To disambiguate between hard and soft limits the soft limits have to be suffixed with a %. New methods Callgrind::soft_limits, Callgrind::hard_limits, Cachegrind::soft_limits, Cachegrind::hard_limits, Dhat::soft_limits, Dhat::hard_limits.
  • (#407): Add soft or hard limits for whole groups like in --callgrind-limits='@all=5%'. The --help message for --callgrind-limits, ... shows all possible groups.

Changed

  • (#406)!: In library benchmarks, the default entry point for dhat is now the benchmark function EntryPoint::Default. As opposed to callgrind benchmarks, this includes the (de-)allocations/metrics of a setup and/or teardown function. For binary benchmarks nothing has changed and the default entry point is set to none with EntryPoint::None.
  • (#406): Improved error message: Changed Invalid format of key/value pair: '{split}' to Invalid format of key=value pair: '{split}'.
  • (#407): Make the expanded benchmark function module public with pub mod instead of just mod. This allows putting benchmark functions into modules and adding them into groups outside of this module.
  • (#407): Bump summary.v5.schema.json -> summary.v6.schema.json
  • (#410): Allow specifying CallgrindMetrics groups for Callgrind::soft_limits, Callgrind::hard_limits. Same for Cachegrind with CachegrindMetrics and for Dhat with DhatMetrics.
  • (#410): Improve error message in the runner in case of misconfigurations in the ui. The error message now also shows the exact benchmark case where the error happens.
  • Update direct dependencies: inferno, cc, clap, serde_json

Deprecated

... (truncated)

Changelog

Sourced from iai-callgrind's changelog.

[0.16.0] - 2025-07-20

This release includes breaking changes especially for DHAT explained in more detail below.

Breaking:

  • DHAT is now considered to be fully integrated into Iai-Callgrind and the default entry point in library benchmarks for DHAT is set to the benchmark function similar to callgrind. This changes the metrics of the DHAT output.

In contrast to callgrind, the DHAT default entry point includes any (de-)allocations in setup and/or teardown code in order to be able to detect the DHAT metrics of the benchmark itself. The inclusion of setup/teardown metrics is a limitation of DHAT and what is possible to reliably extract from the output files. Nevertheless, this change allows the metrics to be centered on the benchmark function excluding the heap operations of Iai-Callgrind needed to setup the benchmark (allocations fluctuating between 2000 - 2500 bytes). More importantly, the DHAT metrics are stabilized. This clears the way for setting regression limits in the same fashion as it is possible for callgrind. Additionally, it is possible to specify additional frames/functions to be included/excluded from the DHAT metrics similar to what --toggle-collect does for callgrind.

Breaking:

  • Note that in DHAT library benchmarks of multi-threaded/multi-process functions, the threads/subprocesses are not included in the metrics anymore. This is exactly equivalent to the situation in callgrind benchmarks of multi-threaded/multi-process functions and can be solved in the same way with additional Dhat::frames.

Also coming with this release: The distinction between soft and hard limits. Soft limits are now what was before just "the limits" and describe limits for the percentage difference between the "new" and "old" run. Hard limits cap the metrics of the "new" run in absolute numbers.

Breaking:

  • This changes the way command-line arguments like --callgrind-limits, --dhat-limits, ... are parsed and to be able to disambiguate between soft and hard limits, soft limits have to be suffixed with a %.

Soft limit before: --callgrind-limits='ir=0.0' After: --callgrind-limits='ir=0.0%' or --callgrind-limits='ir=0%'

Hard limits are bare numbers: --callgrind-limits='ir=10000'.

Also new: It's possible to specify soft or hard limits for whole groups like --callgrind-limits='@all=5%'.

... (truncated)

Commits
  • b42c099 Merge pull request #410 from gamma0987/release
  • 1bd908f refactor(postrun): Remove redundant Option for BenchmarkSummaries
  • 5b0b5d8 Update CHANGELOG
  • 605840d refactor(error): Remove redundant tuples in enum variants
  • 154511f Update README
  • ceb994b refactor(flamegraph): Remove flamegraph parameter from ToolConfig::from_tool
  • 5822aab tests(bench): Simplify test_lib_bench_regression. Use jinja defaults in template
  • d6c7e52 feat(limits): Improve error messages for invalid hard limits, configuration e...
  • d1872aa Merge branch 'main' into release
  • 60a14b6 Update CHANGELOG: Standardize bump messages of the summary json schema
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Updates the requirements on [iai-callgrind](https://github.com/iai-callgrind/iai-callgrind) to permit the latest version.
- [Release notes](https://github.com/iai-callgrind/iai-callgrind/releases)
- [Changelog](https://github.com/iai-callgrind/iai-callgrind/blob/main/CHANGELOG.md)
- [Commits](gungraun/gungraun@v0.15.1...v0.16.0)

---
updated-dependencies:
- dependency-name: iai-callgrind
  dependency-version: 0.16.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
@Serial-ATA Serial-ATA merged commit 9b68924 into main Jul 22, 2025
4 checks passed
@Serial-ATA Serial-ATA deleted the dependabot/cargo/iai-callgrind-0.16.0 branch July 22, 2025 22:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant