[0.17.0] - 2025-09-22
We've outgrown our original name! With the 0.17.0 version the project was renamed to Gungraun. The packages were renamed from iai-callgrind to gungraun, iai-callgrind-runner to gungraun-runner and iai-callgrind-macros to gungraun-macros. Earlier releases remain available under the old name. Thank you for your understanding — we look forward to continuing development under the new name!
Here's a short migration check-list:
- Update the library: Rename
iai-callgrindtogungraunin yourCargo.tomland use a version>=0.17.0. - Update all usages of
use iai_callgrindtouse gungraun - Update the binary: Uninstall the old binary with
cargo uninstall iai-callgrind-runner. Install the new binary for example with binstall:cargo binstall [email protected] - Update any scripts which installed
iai-callgrind-runnerin the CI to usegungraun-runner. - If you are parsing the benchmark output: The summary line has changed from
Iai-Callgrind result: Ok, ...toGungraun result: Ok, ... - Update any environment variable names to use the
GUNGRAUNprefix instead ofIAI_CALLGRIND. For exampleIAI_CALLGRIND_LOG=warn->GUNGRAUN_LOG=warnorIAI_CALLGRIND_VALGRIND_INCLUDE=...toGUNGRAUN_VALGRIND_INCLUDE=.... - If you want to keep the old benchmark output from the
target/iaidirectory, simply rename it totarget/gungraun. - Rename benchmark files to use
gungrauninstead ofiaioriai_callgrind. This will also change the output directory. If you want to keep the old files, for example when renaming the old benchmarks of themy_iai_callgrind_benchmarks.rsfile tomy_gungraun_benchmarks.rs, then the output directory changes fromtarget/iai/my_package/my_iai_callgrind_benchmarkstotarget/gungraun/my_package/my_gungraun_benchmarks
All changes are detailed below. Notably, this version introduces two other significant updates: DHAT metrics now exclude setup and teardown costs, aligning them with the behavior of callgrind and cachegrind. Additionally, the new iter keyword in the #[benches] attribute enables the creation of benchmarks from an iterator. For instance, #[benches::some_id(iter = 0..3)] generates three benchmarks with the inputs 0, 1, and 2, while also supporting more complex iterators.
Added
- (#427): Support assembly optimized valgrind client requests for the
riscv64gc-unknown-linux-gnutarget - (#429): Add new
itersyntax for thebenchesmacro which takes an iterator as argument and creates a benchmark for each iterator element. For example#[benches::some_id(iter = [1, 2, 3])]creates a benchmark for the inputs1,2and3. - (#434): Add the command-line arguments
--show-intermediate,--truncate-descriptionand--show-gridand respective environment variables which work exactly like the already existing options for theOutputFormat. - (#436): Add command-line argument
--show-only-comparisonand the respective environment variable to show only the comparison by id with other benchmarks excluding the self-comparison.
Changed
- (#429): Dhat metrics now exclude setup costs exactly like callgrind and cachegrind metrics.
- (#475): The package names have been changed from
iai-callgrind->gungrauniai-callgrind-runner->gungraun-runneriai-callgrind-macros->gungraun-macros
The name of theiai-callgrind-runnerbinary has changed with the package name togungraun-runner.
- (#475): All environment variables have changed their prefix from
IAI_CALLGRINDtoGUNGRAUNwithout any exceptions. Here's an incomplete list:IAI_CALLGRIND_ALLOW_ASLR->GUNGRAUN_ALLOW_ASLRIAI_CALLGRIND_BASELINE->GUNGRAUN_BASELINEIAI_CALLGRIND_BBV_ARGS->GUNGRAUN_BBV_ARGSIAI_CALLGRIND_CACHEGRIND_ARGS->GUNGRAUN_CACHEGRIND_ARGSIAI_CALLGRIND_CACHEGRIND_LIMITS->GUNGRAUN_CACHEGRIND_LIMITSIAI_CALLGRIND_CACHEGRIND_METRICS->GUNGRAUN_CACHEGRIND_METRICSIAI_CALLGRIND_CALLGRIND_ARGS->GUNGRAUN_CALLGRIND_ARGSIAI_CALLGRIND_CALLGRIND_LIMITS->GUNGRAUN_CALLGRIND_LIMITSIAI_CALLGRIND_CALLGRIND_METRICS->GUNGRAUN_CALLGRIND_METRICSIAI_CALLGRIND_COLOR->GUNGRAUN_COLORIAI_CALLGRIND_DEFAULT_TOOL->GUNGRAUN_DEFAULT_TOOLIAI_CALLGRIND_DHAT_ARGS->GUNGRAUN_DHAT_ARGSIAI_CALLGRIND_DHAT_LIMITS->GUNGRAUN_DHAT_LIMITSIAI_CALLGRIND_DHAT_METRICS->GUNGRAUN_DHAT_METRICSIAI_CALLGRIND_DRD_ARGS->GUNGRAUN_DRD_ARGSIAI_CALLGRIND_DRD_METRICS->GUNGRAUN_DRD_METRICSIAI_CALLGRIND_FILTER->GUNGRAUN_FILTERIAI_CALLGRIND_HELGRIND_ARGS->GUNGRAUN_HELGRIND_ARGSIAI_CALLGRIND_HELGRIND_METRICS->GUNGRAUN_HELGRIND_METRICSIAI_CALLGRIND_HOME->GUNGRAUN_HOMEIAI_CALLGRIND_LIST->GUNGRAUN_LISTIAI_CALLGRIND_LOAD_BASELINE->GUNGRAUN_LOAD_BASELINEIAI_CALLGRIND_LOG->GUNGRAUN_LOGIAI_CALLGRIND_MASSIF_ARGS->GUNGRAUN_MASSIF_ARGSIAI_CALLGRIND_MEMCHECK_ARGS->GUNGRAUN_MEMCHECK_ARGSIAI_CALLGRIND_MEMCHECK_METRICS->GUNGRAUN_MEMCHECK_METRICSIAI_CALLGRIND_NOCAPTURE->GUNGRAUN_NOCAPTUREIAI_CALLGRIND_NOSUMMARY->GUNGRAUN_NOSUMMARYIAI_CALLGRIND_OUTPUT_FORMAT->GUNGRAUN_OUTPUT_FORMATIAI_CALLGRIND_REGRESSION_FAIL_FAST->GUNGRAUN_REGRESSION_FAIL_FASTIAI_CALLGRIND_SAVE_BASELINE->GUNGRAUN_SAVE_BASELINEIAI_CALLGRIND_SAVE_SUMMARY->GUNGRAUN_SAVE_SUMMARYIAI_CALLGRIND_SEPARATE_TARGETS->GUNGRAUN_SEPARATE_TARGETSIAI_CALLGRIND_SHOW_GRID->GUNGRAUN_SHOW_GRIDIAI_CALLGRIND_SHOW_INTERMEDIATE->GUNGRAUN_SHOW_INTERMEDIATEIAI_CALLGRIND_SHOW_ONLY_COMPARISON->GUNGRAUN_SHOW_ONLY_COMPARISONIAI_CALLGRIND_TOLERANCE->GUNGRAUN_TOLERANCEIAI_CALLGRIND_TOOLS->GUNGRAUN_TOOLSIAI_CALLGRIND_TRUNCATE_DESCRIPTION->GUNGRAUN_TRUNCATE_DESCRIPTIONIAI_CALLGRIND_VALGRIND_ARGS->GUNGRAUN_VALGRIND_ARGS
- (#475): The default output directory for the benchmark files has been moved from
target/iaitotarget/gungraun. - (#475): The summary line now concludes with
Gungraun result: Ok, ...instead ofIai-Callgrind result: Ok, .... - (#477): The positional command-line argument
FILTERnow matches the full module path with wildcard patterns to filter and run only the selected benchmarks. The summary line in the benchmark output now shows an additional field with the amount of filtered benchmarks. For example:
Gungraun result: Ok. ...; 1 filtered; 2 benchmarks ... - Update direct dependencies:
cc,serde,serde_json,clap,slab,syn,proc-macro2,regex,indexmap,cfg-if,log
Fixed
- (#455): The
olddetails of aProfilePartwere stored on the wrong sideleft(new) instead ofright(old).
Full Changelog: v0.16.1...v0.17.0