- 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
51 lines
2.7 KiB
Markdown
51 lines
2.7 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [0.2.0] - 2026-01-22
|
|
|
|
### Added
|
|
- **Comparison Mode**: Added `--compare` flag 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.sh`** for generating optimized binaries, man pages, shell completions, and `.deb` packages.
|
|
- Official **man page** (`sized.1`) for standard Unix documentation documentation.
|
|
- Updated **Homebrew Formula** for tap-based distribution.
|
|
- **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::WalkParallel` for 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).
|
|
- **Architecture**: Refactored the project into a usable Rust library (`src/lib.rs`) and a thin CLI wrapper (`src/main.rs`).
|
|
- **Dependencies**:
|
|
- Switched to `byte-unit` for more flexible and accurate unit formatting.
|
|
- Replaced `walkdir` with `ignore` for faster traversal and native `.gitignore` support.
|
|
- Replaced `atty` and `chrono` with standard library features and the lightweight `time` crate.
|
|
- **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 `.gitignore` was active.
|
|
|
|
### Removed
|
|
- Dependency on `walkdir`, `humansize`, `chrono`, and `atty`.
|
|
|
|
## [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.
|