| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| LRGEX-Compress-v1.7.0-setup.exe | 2026-08-12 | 9.7 MB | |
| README.md | 2026-08-12 | 4.1 kB | |
| v1.7.0 source code.tar.gz | 2026-08-12 | 992.6 kB | |
| v1.7.0 source code.zip | 2026-08-12 | 1.1 MB | |
| Totals: 4 Items | 11.8 MB | 0 | |
✨ New Features
- Integrity checksum:
.zgxarchives now include zstd XXHash64 checksum verification on extract. Detects storage corruption, bad transfers, and bit rot before you lose data. Zero measurable speed cost (~6ms per 256MB — within run-to-run noise). - RAR extraction rewritten in pure Rust: replaces the vendored C unrar library with
unrar-rs(pure Rust, no C dependencies). Adds: - Symbolic link preservation (asks admin once, recreates links exactly)
- mtime + ctime restore on extracted files
- Windows attributes restore (ReadOnly, Hidden, etc.)
- Instant mid-file cancel (custom Writer aborts on cancel flag)
- Multi-volume support (part1.rar, part2.rar, ...)
- 7z metadata restore: extracted 7z files now preserve mtime, ctime (when carried), and Windows attributes.
- 7z symlink support: symlinks stored as reparse points in .7z archives are now detected and recreated (with path-traversal guard for security).
- Instant feedback on click: the progress window now shows an animated sweep the moment you click Compress or Extract — no more frozen 0% bar while the engine spins up.
- Encrypted archive support: password-protected RAR, 7z, and ZIP archives now
prompt for a password. GUI shows a masked password dialog with auto-focus.
CLI:
-p <password>flag works in any position. Example:lrgex-compress -x -p secret archive.rar
🔧 Fixes
- 7z overwrite+cancel data loss (critical): extracting a .7z over an existing file, then cancelling, no longer destroys the user's original file. All 7z extraction now uses temp-then-rename (same safe pattern as .zgx and .zip).
- ctime clobber on every extract (critical): every extracted file was getting
creation time set to January 1, 1970. The bug was in
apply_times_handle—secs_to_filetime(0)is NOT a zero FILETIME (it's 1601+epoch_offset = 1970-01-01). The "NULL if zero" guard never fired. Fixed: branch on the INPUT value, not the converted FILETIME. - 7z mtime lost: 7z extraction was giving every file NOW() as last-modified time.
Now reads
entry.last_modified_date()from sevenz-rust2 and restores it. - Checksum failure silently swallowed:
include_checksum(true)was discarding the Result withlet _ =. Now propagates via.expect()— a checksum failure surfaces as an error instead of silently shipping without integrity. - Test harness pipe deadlock: integration tests could hang when the spawned exe
produced >64KB of stdout (pipe buffer fill). Fixed with
Stdio::null().
🧪 Quality
- 49 automated tests covering every format, every metadata field, cancel, multi-volume, crash-safety, and overwrite+cancel data-loss scenarios.
- No
#[ignore]d tests hiding gaps — every test runs automatically. - RAR + 7z tests auto-detect external tools (WinRAR / 7-Zip) and run when present.
- Vendored C unrar crate removed (210KB of C source). RAR extraction is 100% pure Rust.
- License: switched from MIT to GPL-3.0-or-later (unrar-rs is GPL-3.0 + UnRAR restriction).
⚠️ Known Limitations
- 7z symlinks: requires Administrator or Developer Mode to create symlinks on Windows. Without elevation, symlinks in .7z archives are skipped silently.
- zip ctime: the ZIP format has no creation time field — cannot be preserved.
- 7z ctime: 7-Zip does not store creation time by default (only with
-mtc=on). Restored when present, absent when not. - RAR4: unrar-rs claims support but could not be tested (WinRAR 7.23 creates RAR5 only).
- Encrypted archives: password-protected RAR, 7z, and ZIP are supported via GUI
prompt or
-p <password>CLI flag. However, the GUI window stays open briefly after extraction completes (auto-close delay). Scripted/headless use with-pblocks until the window is closed manually.