- Implemented multi-threaded directory traversal using ignore::WalkParallel - Added dynamic thread allocation for balanced CPU utilization - Refactored core logic to single-pass, in-memory tree construction (O(N)) - Added --compare, --units, and --precision flags - Established SCM-neutral distribution pipeline (Makefile, release.sh, Homebrew) - Comprehensive updates to README.md, MANUAL.md, and CHANGELOG.md - Decoupled from SCM-specific workflows
2.7 KiB
2.7 KiB
Changelog
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.
[0.2.0] - 2026-01-22
Added
- Comparison Mode: Added
--compareflag to display total size vs. non-ignored size (respecting.gitignore). - Unit Control: Added
--units <binary|decimal>flag to toggle standard IEC (MiB) vs. SI (MB) unit systems. - Precision Control: Added
--precision <number>to control decimal places in output (default: 2). - Physical vs. Logical Distinction: Explicitly show Apparent Size (logical) and Disk Usage (actual blocks consumed) in all output formats.
- Release Assets:
- Project Makefile for easy system-wide installation via
make install. - Universal
scripts/release.shfor generating optimized binaries, man pages, shell completions, and.debpackages. - Official man page (
sized.1) for standard Unix documentation documentation. - Updated Homebrew Formula for tap-based distribution.
- Project Makefile for easy system-wide installation via
- Improved Errors: Graceful handling for inaccessible directories (e.g., system protected folders) with "Access Denied" status.
- Added a full user guide in
MANUAL.md.
Changed
- Performance Overhaul:
- Replaced serial/par-bridge traversal with
ignore::WalkParallelfor true multi-threaded directory scanning. - Implemented dynamic thread allocation to balance CPU load between directory breadth and depth.
- Refactored core logic to a single-pass, in-memory tree construction algorithm (
O(N)complexity).
- Replaced serial/par-bridge traversal with
- Architecture: Refactored the project into a usable Rust library (
src/lib.rs) and a thin CLI wrapper (src/main.rs). - Dependencies:
- Switched to
byte-unitfor more flexible and accurate unit formatting. - Replaced
walkdirwithignorefor faster traversal and native.gitignoresupport. - Replaced
attyandchronowith standard library features and the lightweighttimecrate.
- Switched to
- Serialization: Optimized JSON and CSV output for zero-copy performance and detailed metric reporting.
Fixed
- Resolved performance bottleneck in extremely deep directory structures.
- Fixed inconsistent total size reporting when
.gitignorewas active.
Removed
- Dependency on
walkdir,humansize,chrono, andatty.
[0.1.0] - 2026-01-22
Added
- Initial release with core directory traversal and size calculation.
- Basic parallel processing using
rayon. - Rich table output via
comfy-table. - Basic filtering (
--min-size,--depth) and sorting (--sort). - Output format support: Text, CSV, and JSON.
- Save to file and shell completion generation.