Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): update rust crate iai-callgrind to 0.14 #80

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Oct 5, 2024

This PR contains the following updates:

Package Type Update Change
iai-callgrind workspace.dependencies minor 0.13 -> 0.14

Release Notes

iai-callgrind/iai-callgrind (iai-callgrind)

v0.14.0

Compare Source

This release adds full support for multi-threaded and multi-process
applications.

When upgrading from a previous release of Iai-Callgrind you might experience
changes in the metrics without having changed the benchmarks themselves. The
summary line in callgrind output files turned out to be buggy and unreliable
if client requests are used, so Iai-Callgrind now parses the totals instead.
The totals might differ slightly from the summary and cause the difference
in the displayed metrics. You might also see changes in the metrics because of
the changed default values for some of the valgrind arguments. Iai-Callgrind
changed the following default valgrind/callgrind arguments for each benchmark
run:

  • --separate-threads=no -> --separate-threads=yes
  • --trace-children=no -> --trace-children=yes
  • --fair-sched=no -> --fair-sched=try

You can now run the setup in binary benchmarks in parallel to the Command
for flexible benchmarking of client/server architectures.

The MSRV has changed from 1.66.0 -> 1.67.1.

If not stated otherwise the changes below were introduced in
#​263.

Added
  • Support for benchmarks of multi-threading and multi-process applications by
    implementing the correct handling of the valgrind --trace-children and
    callgrind --separate-threads command line options. Per default only the
    total over all subprocesses and threads is calculated and shown. But, each
    thread and subprocess can be displayed with the new
    OutputFormat::show_intermediate option.
  • Support for the callgrind command line arguments --dump-every-bb,
    --dump-before, --dump-after which create parts. These parts are now
    correctly summarized in the total and the metrics of each part can be shown
    with OutputFormat::show_intermediate.
  • Added OutputFormat which can be used in
    LibraryBenchmarkConfig::output_format and
    BinaryBenchmarkConfig::output_format to change some of the behaviour of the
    default terminal output (but not json output)
  • Sometimes callgrind creates empty files, so we're cleaning them up now after
    each benchmark run.
  • (#​256) and
    (#​279): Support
    running setup in parallel and add possibility to delay the Command. Thanks
    to @​hargut for #​256
  • (#​288): Added an
    option OutputFormat::show_grid to show grid/guiding lines which can help
    reading the terminal output if running benchmarks with multiple
    threads/subprocesses/tools.
  • The method BinaryBenchmarkConfig::with_callgrind_args was added to match the
    constructors of the LibraryBenchmarkConfig.
  • The methods BinaryBenchmarkConfig::valgrind_args and
    LibraryBenchmarkConfig::valgrind_args are introduced to be able to pass
    valgrind core arguments to all tools.
Changed
  • All tools are now per default run with --trace-children=yes and
    --fair-sched=try. In addition, callgrind is run with
    --separate-threads=yes. These default arguments can be changed in
    Tool::args or LibraryBenchmarkConfig::callgrind_args,
    BinaryBenchmarkConfig::callgrind_args.

  • The file naming scheme was adjusted to include the pids in case of
    multi-process benchmarks, the parts in case of callgrind command-line
    arguments which create multiple parts and threads in case of multiple threads.
    This change is backwards compatible to the file naming scheme of previous
    Iai-Callgrind releases for all tools but exp-bbv.

  • Error metrics from tools like drd, helgrind and memcheck are now listed and
    compared like the other metrics in a vertical format. For example

    ======= DRD ===============================================================
    Errors:                           0|0               (No change)
    Contexts:                         0|0               (No change)
    Suppressed Errors:                0|0               (No change)
    Suppressed Contexts:              0|0               (No change)
    
  • (#​263) and
    (#​288): Increase
    the field width by 3 bytes and the space for metrics by 5 on each side of the
    comparison so that the value of u64::MAX fits into the terminal output
    without messing up the side-by-side layout.

  • The LibraryBenchmarkConfig::truncate_description,
    BinaryBenchmarkConfig::truncate_description methods have been moved to
    OutputFormat::truncate_description

  • In the presence of multiple processes the DHAT metrics are now summarized and
    shown in a total in the same way as the metrics of callgrind and the other
    tools.

  • Bump the summary json schema to v3 in
    iai-callgrind-runner/schemas/summary.v3.schema.json

  • Various prs: Update locked direct dependencies:

    • anyhow -> 1.0.89
    • cc -> 1.1.25
    • indexmap -> 2.6.0
    • itertools -> 0.13.0
    • once_cell -> 1.20.1
    • regex -> 1.11.0
    • serde_json -> 1.0.128
    • serde -> 1.0.210
    • syn -> 2.0.79
    • tempfile -> 3.13.0
  • (#​288): The default
    include path for the valgrind headers has changed to /usr/local/include on
    freebsd instead of /usr/local.

  • (#​289): Update
    derive_more -> 1.0 in Cargo.toml but not in lock file.

  • (#​293): Update MSRV
    from 1.66.0 -> 1.67.1

  • (#​296): Update
    locked transitive dependencies.

Deprecated
  • The following methods were renamed and deprecate the old method name:
    • LibraryBenchmarkConfig::raw_callgrind_args ->
      LibraryBenchmarkConfig::callgrind_args,
    • LibraryBenchmarkConfig::with_raw_callgrind_args ->
      LibraryBenchmarkConfig::with_callgrind_args
    • BinaryBenchmarkConfig::raw_callgrind_args ->
      BinaryBenchmarkConfig::callgrind_args
  • The method LibraryBenchmarkConfig::raw_callgrind_args_iter was deprecated
    since it is the same as LibraryBenchmarkConfig::callgrind_args.
Removed
  • Iai-Callgrind doesn't support combined dumps via --combine-dumps anymore.
  • The Tool::outfile_modifier method was removed. The %p modifier for
    valgrind output and log files is now applied automatically when using the
    --trace-children=yes command line argument.
  • The output and log file paths in the terminal output were removed.
Fixed
  • When extracting the metrics from callgrind output files, the totals line is
    now prioritized over the summary line. The summary line has bugs and reports
    wrong costs if callgrind client requests are used. The totals are unaffected
    by client requests and report the correct costs. This change is mostly
    internal but might introduce some (small) changes in the metrics reported by
    Iai-Callgrind.
  • The error metrics of drd, helgrind and memcheck were only shown correctly if
    they consisted of a single digit.
  • (#​297): Added the
    derive Clone impl for iai_callgrind::LibraryBenchmarkConfig
  • (#​300):
    library_benchmark_group! was private but the expanded mod should be public
    Thanks to @​ryanpeach

v0.13.4

Compare Source

Changed

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants