Improvements to aggregate progress reporting
Previously, aggregate mode progress reports were handled by an
infinitely-looping thread carrying a 64-bit atomic of the current count,
which it would print periodically.
This resulted in #99 - breaking on platforms without 64-bit atomics,
for which a feature was added to disable it.
It also implied a race condition, where the "Enumerating ..." message
could be printed after results had been gathered but before dua exited.
Additionally, part of the status message could be left on the display if
the first line of a report was too short to cover it.
This commit should resolve these:
- The 64-bit atomic counter is replaced with an 8-bit AtomicBool
- All printing is controlled from the main thread
- The first line is cleared prior to printing a report
The only notable drawback I see with this approach is that progress
reporting can sometimes be delayed, since the display is only evaluated
for update during periods the aggregation loop makes progress. The
practical difference appears relatively minor.
Since this should resolve #99, the aggregate-scan-progress feature is
removed.
Special thanks to @Freaky for the contribution!
BREAKING change for package maintainers
The aggregate-scan-progress
feature was removed as it shouldn't be required anymore.
Commit Statistics
- 8 commits contributed to the release over the course of 55 calendar days.
- 57 days passed between releases.
- 0 commits where understood as conventional.
- 0 issues like '(#ID)' where seen in commit messages