Changelog
All notable changes will be documented in this file
Release 0.20.0 2026-10-25
Minor changes to the documentation and directory-counting algorithm for --progress.
Release 0.19.0 2026-10-24
- Added
--output=full|compact|machine.fullremains the default;compactprovides concise file messages, andmachineprovides output for parsing by scripts with color disabled by default
Release 0.18.0 2026-10-17
- The application now supports configuration files using
key = valuesyntax. All CLI option names can be used as keys. Configuration files are an optional addition, not a replacement for the CLI. All CLI commands work exactly as before and will continue to do so. The application remains 100% backward compatible, so existing scripts won’t break. - The application is significantly faster due to a combination of factors, primarily optimizations to database access
- Embeded SQLite upgraded to the mainstream version
- Improved file status output
- argp-standalone is finally part of the codebase. Updates from its maintainer, Thomas Mathys, will be incorporated as they become available.
This change was long overdue. Different systems use a wide range of incompatible argp versions, and supporting them all while working around unresolved bugs on each system turned out to be a real challenge.
argp has once again proved its worth. It now works alongside inih, a configuration file parser, so the program supports configuration files as well as CLI arguments.
Release 0.17.5 2026-10-02
Speed up checks for deleted files by batching database deletions in a single transaction
Release 0.17.4 2026-10-01
Significantly improved performance when adding or updating large numbers of small files by batching database writes into transactions
Release 0.17.3 2026-09-23
Changed the default behavior. Files are now considered modified when their modification time (mtime) changes, even if their size remains unchanged. This helps detect content changes that do not affect file size, since a change in mtime is a clear indication that a file has been modified
Release 0.17.2 2026-09-21
Improved usability of the Windows version
Release 0.17.1 2026-09-20
Added
- Added
--color=auto|always|neverto control color and text styling in log output. The defaultautomode uses styling only for terminal output;alwayskeeps it in files and pipes, whileneverdisables it - Added
msys-build,windows-zip, andwindows-exeMakefile targets to build the MSYS program, a Windows ZIP package, and a self-extracting Windows EXE. Manual builds and GitHub Actions now use the same build and packaging targets
Improved
- File reading now uses a fixed 64 KiB heap buffer, allocated once and reused throughout each traversal, instead of 1% of available physical memory. x86_64 file-reading and SHA-512 benchmarks showed higher large-file throughput with small fixed buffers; 64 KiB was among the fastest tested sizes while keeping buffer memory use low
- Improved output for scripted workflows. Escape sequences no longer clutter the output, making it cleaner and easier to parse programmatically.
- Less essential messages are now shown only in verbose mode (
--verbose), so normal output contains only important information - Renamed
--start-device-only/-oto--one-file-system/-x, following rsync terminology. The new name more accurately describes the option’s behavior. The old name will remain supported for backward compatibility for the next 10 years.
Fixed
- Critical build portability fix. Some internal libraries in binaries produced by GitHub Actions could inherit a compiler flag that enabled instructions specific to the build machine’s processor. A binary intended to run on different processors could therefore terminate unexpectedly on a system without those instructions. All affected compiler flags have been identified and isolated by build type. Automated release binaries no longer inherit processor-specific optimization settings and now provide the intended maximum processor portability.
Release 0.17.0 2026-07-10
- Long-running SHA512 calculations now periodically save resumable progress in the database. After an unexpected interruption, the next run with
--update/-ucan continue from the latest saved point instead of hashing the file from the beginning, provided its metadata has not changed
Release 0.16.0 2026-07-01
- Experimental Windows support. The build is not code signed yet. The ZIP archive includes the executable and the required DLL dependency. A portable EXE is also available. It does not require any dependencies, but Defender flags it immediately.
Release 0.15.3 2026-06-26
- Improved performance when updating the database with
--update/-uby traversing files that have already been saved to the database.
Release 0.15.2 2026-06-08
- Improved internal resilience, build and packaging workflows, documentation, and test reliability
Release 0.15.1 2026-06-07
Fixed
- Fixed a terminal output issue where rare file names containing control characters could make later scan messages disappear from the screen. Such bytes are now printed as readable
\xNNescapes, while normal Unicode file names remain readable
Release 0.15.0 2026-06-06
Fixed
- File system scans are more resilient: precizer now continues working when an access check fails for one file or directory, treating that path as inaccessible instead of stopping the whole scan
Release 0.14.0 2026-06-04
Changed
--lock-checksumnow protects locked records from being silently removed when files disappear or become unreadable- Locked checksum protection now takes priority over
--ignore,--include,--db-drop-ignored, and--db-drop-inaccessible --rehash-lockednow verifies locked files even when they also match--ignore- Inaccessible files are handled more safely and are kept in the database unless
--db-drop-inaccessibleis explicitly used - Path and database handling is more reliable, with safer SQL parameter binding and transactional root path saving
- PCRE2 filters can now use JIT compilation for faster matching on large file trees
- Most file and path operations in the main application tests now use internal C helpers instead of external shell commands
- Build and CI support is broader, including dynamic tests, Docker matrix checks, Clang selection, and improved cleanup
Documentation
- Documentation now explains locked checksum behavior, deep locked-file verification, and inaccessible-file cleanup more clearly
Release 0.13.0 2026-05-10
Removed
- CMocka is no longer required to build precizer from source or to run the test suite
Release 0.12.0 2026-03-19
Added
--compare now supports the --ignore and --include path filters, so database comparisons can be limited to the paths that matter. Both options can be repeated, and --include takes precedence when a path matches both filters
Documentation
Clarified in the README and CLI help that --compare reports, summaries, and equality messages are evaluated against the filtered comparison scope
Release 0.11.0 2026-03-16
Changed
- Refined
--silentbehavior in--comparemode: compare results remain visible - Renamed
--compare-filtervaluesfirst-source-onlyandsecond-source-onlytofirst-sourceandsecond-sourceto make combined filter usage clearer. The old values are no longer accepted
Release 0.10.0 2026-03-14
Changed
- All releases are now signed and will be distributed with digital signatures
Release 0.9.0 2026-03-12
Changed
- Improved
--compareoutput so differences between databases are easier to understand, including clearer diagnostics when--compare-filteris used - Messages related to files matched by
--lock-checksumare now repeated at the end of the run, making important scan results easier to notice in long output - Updated the bundled SQLite library to a newer upstream version
Fixed
- Improved compatibility when building precizer on macOS
Release 0.8.0 2026-03-05
Changed
- precizer is now distributed under the GPLv3 license
Release 0.7.0 2026-02-28
This version mainly improves test reliability (including complex --ignore/--include, interruption, and file metadata change scenarios) and includes minor output and documentation polish without noticeable user-facing CLI behavior changes
Release 0.6.0 2026-02-10
Added
- Added reporting for filesystem traversal time and the average per second throughput for reading files and calculating checksums.
- Added
--dry-run=with-checksumsmode for--dry-run. In this mode, files are read and checksums are calculated without writing to the database. - Added
--compare-filterfor--compareoutput scoping (checksum-mismatch,first-source-only,second-source-only) with support for repeated combined filters.
Changed
- Disk usage calculation now uses allocated block count (
st_blocks) instead of logical file length (st_size). This reflects actual on‑disk space usage rather than apparent size. - Database format upgraded to version 4 to support the new accounting model; the migration is fully automatic and transparent for users.
Documentation
- Added a
TROUBLESHOOTINGsection toREADME.mdwith guidance for diagnosing slow filesystem walks, checksum computation, and SQLite.dbwrite performance.
Release 0.5.0 2026-01-29
Added
- New CLI option
--quiet-ignoredto suppress log lines for files filtered out via--ignore/--include. - New CLI option to drop database records for inaccessible files during
--update:- Canonical:
--db-drop-inaccessible - Backward-compatible alias:
--drop-inaccessible
- Canonical:
- Introduced/expanded CMocka-based testing infrastructure.
Changed
- When
--progressis enabled, critical warnings/errors collected during filesystem traversal are saved and printed as a single block near the end of the run (to avoid losing important messages in noisy output). --dry-runcan now work with read-only databases by switching away fromATTACHand using temporaryTEMPtables instead.- Directory traversal approach was reworked.
- Database-related option naming was standardized to the
--db-*style:- Canonical:
--db-drop-ignored - Backward-compatible alias:
--db-clean-ignored
- Canonical:
Fixed
- File read errors during SHA512 calculation are now treated as warnings rather than hard failures (improves robustness when some files can’t be read).
- Miscellaneous output / logging fixes.
Tests
- Improved tests around
--rehash-locked,--lock-checksum, and--watch-timestamps, plus internal test harness adjustments.
Documentation
- Added a stable permalink to README for downloading the latest release