All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- LLVM 19 support (ignores function entry coverage and some failing proftext files)
- Added the ability to filter out certain sections from the generated coverage reports
- Now use some hashmap based caching to speedup record lookup during profile merge.
- Now allow binaries to fail parsing for the mapping information (depdendent on function argument)
- LLVM 17 and 18 support (test fails still:
check_mapping_consistency
but tarpaulin tests all pass so nearly all working)
- Removed another two redundant hash computations
- Cache name hash calculation to avoid recomputing (perf)
- llvm-16 test files to ensure support doesn't break
- Fixed parsing of branch region counters
- Debug logging via tracing
- Build on 32 bit architectures
InstrumenationProfile::is_empty
to detect when there are no records- Fuzzing module for profile files
- Added anyhow and use in place of
Result<T, Box<dyn Error>>
- Make error type for profiles
VerboseError
- Handle merging of completely disjoint records - now profiles generated from multiple applications are accurately merged
- Handle invalid Hash enum variant in
IndexedProfile
- Made instrumentation profile parsing failure message more serious
- Made hit adding in report use
saturating_add
to prevent overflow
- Make counter value signed when tracking expressions to prevent underflow
- Multiply max counters by counter size when comparing to counter delta
- Fixed handling of profile instrumentation not tied to a counter with source location
- Incorrect matching on hashes for instrumentation profile merging
- Detection of memory profiling
- Counter offsetting in raw profiles now implemented
- Counter size for byte coverage now correct
- Text profile now handles carriage returns
- Parsing of indexed, text and raw profiles (llvm version 11, 12, 13, 14)
- Parsing of instrumented binary and generating line coverage reports