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
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
Much faster decoding of lossless WebP due to a variety of optimizations. Our benchmarks show 2x to 2.5x improvement.
Added support for orientation metadata, so that e.g. smartphone camera images could be displayed correctly:
Added ImageDecoder::orientation() and implemented orientation metadata extraction for JPEG, WebP and TIFF formats
Added DynamicImage::apply_orientation() to apply the orientation to an image
Added support for extracting Exif metadata from images via ImageDecoder::exif_metadata(), and implemented it for JPEG and WebP formats
Added ImageEncoder::set_icc_profile() and implemented it for WebP format. Pull requests with implementations for other formats are welcome.
Added DynamicImage::fast_blur() for a linear-time approximation of Gaussian blur, which is much faster at larger blur radii
Bug fixes:
Fixed some APNG images being decoded incorrectly
Fixed the iterator over animated WebP frames to return None instead of an error when the end of the animation is reached
Version 0.25.3
Yanked! This version accidentally missed a commit that should have been
included with the release. The Orientation struct should be in the
appropriate module instead of the top-level. This release won't be supported.
Commits
0307a47 Merge pull request #2354 from image-rs/release-0.25.4
ac09ced Propose wording for republishing as 0.25.4
5e6bf4f Merge pull request #2352 from image-rs/changelog-update
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 ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
Bumps the cargo group with 9 updates in the / directory:
1.0.86
1.0.92
4.5.16
4.5.20
0.17.13
0.17.14
1.0.209
1.0.210
1.0.8
1.0.10
0.13.1
0.14.0
0.7.4
0.7.5
0.25.2
0.25.4
1.40.0
1.41.0
Updates
anyhow
from 1.0.86 to 1.0.92Release notes
Sourced from anyhow's releases.
Commits
fd03a8e
Release 1.0.92a16252b
Merge pull request #390 from dtolnay/rawaddrfcf2ef8
Compile &raw test on Rust 1.82+ only1e7e9fe
Parse raw address expression syntax7d1a8f9
Add test of raw addr expression syntax6c52daa
Release 1.0.914986853
Merge pull request #388 from dtolnay/outdirf130b76
Clean up dep-info files from OUT_DIRa0b868a
Release 1.0.900f74169
Improve rendering of inline code in macros documentationUpdates
clap
from 4.5.16 to 4.5.20Release notes
Sourced from clap's releases.
Changelog
Sourced from clap's changelog.
Commits
5034cab
chore: Releaseb5b690c
docs: Update changelogabba196
Merge pull request #5688 from epage/rename6ddd5d4
fix(complete)!: Rename ArgValueCompleter to ArgValueCandidates71c5e27
fix(complete)!: Rename CustomCompleter to ValueCandidates1089073
chore: Releasec9b8c85
docs: Update changelog8b3de18
Merge pull request #5685 from epage/engineb38538d
fix(complete)!: Rename dynamic to engine232af62
Merge pull request #5684 from epage/endlessUpdates
png
from 0.17.13 to 0.17.14Changelog
Sourced from png's changelog.
Commits
347dc5d
Bump versioned2e439
Update CHANGELOG.md98286ce
Merge pull request #506 from Shnatsel/improve-filter-documentationa64485a
Update src/filter.rse1f429e
Improve documentation on filtersd96defd
Convert the rest of doclinks857b63c
Convert probably-working doclinks to rustdoc syntax53aaa9e
Keep using the separate link specification syntax to minimize changes to docu...e45e923
Fix broken doclinks16e624f
Stop handling unreachableNone
case infn next_raw_interlaced_row
.Updates
serde
from 1.0.209 to 1.0.210Release notes
Sourced from serde's releases.
Commits
89c4b02
Release 1.0.210eeb8e44
Merge pull request #2818 from dtolnay/coreerror785c2d9
Stabilize no-std StdError traitd549f04
Reformat parse_ip_impl definition and calls4c0dd63
Delete attr support from core::net deserialization macros26fb134
Relocate cfg attrs out of parse_ip_impl and parse_socket_impl07e614b
Merge pull request #2817 from dtolnay/corenetb1f899f
Delete doc(cfg) attribute from impls that are supported in no-stdb4f860e
Merge pull request #2816 from MathiasKoch/chore/core-netd940fe1
Reuse existing Buf wrapper as replacement for std::io::WriteUpdates
anstyle
from 1.0.8 to 1.0.10Commits
9ce373f
chore: Release6668ff0
docs: Update changelog13e008a
Merge pull request #228 from DaniPopes/avoid-write-macro-strfb843c5
perf: avoid using write! macro with single str5628f47
chore: Release42d4175
chore: Release924fc50
chore: Release313e16a
docs: Update changelog2bbc343
Merge pull request #225 from DaniPopes/as-locked-write-impls8639e08
feat: Implement AsLockedWrite generically tooUpdates
iai-callgrind
from 0.13.1 to 0.14.0Release notes
Sourced from iai-callgrind's releases.
... (truncated)
Changelog
Sourced from iai-callgrind's changelog.
... (truncated)
Commits
83522cd
Merge branch 'release'76cd7b2
Update CHANGELOGda7550c
cicd: Fix /usr/bin/ld: final link failed: No space left on deviceac024e1
Bump version v0.13.4 -> v0.14.029826bc
Bump iai-callgrind-macros version v0.4.1 -> v0.5.051f2a71
Update CHANGELOGd0bf688
chore: Update locked dependencieseca0b9e
chore(deps): Use indexmap2 in schemars. Remove duplicate dependency on indexmapd6f534d
chore(deps): Remove default features from rstest to pass minimal-versionscf8a039
Update CONTRIBUTINGUpdates
built
from 0.7.4 to 0.7.5Changelog
Sourced from built's changelog.
Commits
e162357
Bump to 0.7.50bbf71b
Bumpcargo-lock
to10.0
Updates
image
from 0.25.2 to 0.25.4Changelog
Sourced from image's changelog.
Commits
0307a47
Merge pull request #2354 from image-rs/release-0.25.4ac09ced
Propose wording for republishing as 0.25.45e6bf4f
Merge pull request #2352 from image-rs/changelog-update42d1396
Drop incorrect changelog entryd52a194
Merge pull request #2347 from Shnatsel/new-releasefe94eab
Mention lossless WebP improvements5976c19
Merge pull request #2349 from Shnatsel/orientation-in-metadata91a001f
Don't import orientation in doc example693079d
Reword ravif changelog entryfb5799b
Move Orientation to metadata moduleUpdates
tokio
from 1.40.0 to 1.41.0Release notes
Sourced from tokio's releases.
... (truncated)
Commits
01e04da
chore: prepare Tokio v1.41.0 (#6917)92ccade
runtime: fix stability feature flags for docs (#6909)fbfeb9a
metrics: rename*_poll_count_*
to*_poll_time_*
(#6924)da745ff
metrics: add H2 Histogram option to improve histogram granularity (#6897)ce1c74f
metrics: fix deadlock in injection_queue_depth_multi_thread test (#6916)28c9a14
metrics: renameinjection_queue_depth
toglobal_queue_depth
(#6918)32e0b43
ci: freeze FreeBSD and wasm-unknown-unknown on rustc 1.81 (#6911)1656d8e
sync: addmpsc::Receiver::blocking_recv_many
(#6867)c9e998e
ci: print the correct sort order of the dictionary on failure (#6905)512e9de
rt: add LocalRuntime (#6808)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