From 62af09ad9c9a5668e69484cafd38788da3f13297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristian=20Cezar=20Mois=C3=A9s?= Date: Mon, 6 Apr 2026 19:33:37 -0300 Subject: [PATCH] Zupt v2.1.2: add full-disk backup/restore, expand test suite, improve compression handling - Introduced full-disk backup/restore (src/zupt_disk.c, ~530 LOC) - Backup: streams 4MB blocks with sparse detection and all codecs - Restore: per-block checksum validation for integrity - Supports password (-p), PQ hybrid (--pq), or no encryption - Real-time progress bar with throughput reporting (stderr) - Implemented sparse detection (8-byte zero scan) - Zero blocks stored as STORE (near-zero overhead) - Added disk-aware safeguards - ZUPT_FLAG_DISK_IMAGE prevents misuse with extract - Immediate failure on wrong password during first block decrypt - Cross-platform device size detection - Linux: BLKGETSIZE64 - macOS: DKIOCGETBLOCKCOUNT - Fallback: lseek - Compression behavior - ~2928:1 on highly repetitive data - ~1.33:1 on random data (auto STORE fallback) - Expanded test suite to 77 tests: - 11 VV unit - 13 NIST/RFC vectors - 22 regression - 14 multi-threaded - 10 post-quantum - 7 disk (normal, encrypted, PQ, sparse, LZHP, extreme compression, wrong-password) Release stats: - 74 files, 168KB, zero .o artifacts - 77/77 tests passing - Fully clean under ASAN + UBSan --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index eff140f..0a4fd6f 100644 --- a/README.md +++ b/README.md @@ -372,10 +372,10 @@ All codecs are forward-compatible: archives created with any codec can be read b | v1.1–v1.4 | X25519 fix, NIST vectors, CPUID detection, Jasmin source files fixed | | v1.5 | Jasmin CT assembly linked (MAC verify + ML-KEM select active) | | v1.5.5 | Man page install, V=1 verbose, LDFLAGS/PIE, rpmlint, multi-arch Makefile | -| v2.0 | VaptVupt 1.1.0 codec with auto hardware detection, all 5 Jasmin functions wired, AVX SIGILL fix, copy_match/litlen overflow fixes, ACSL proofs, mlock, fuzzing, canaries, AES-NI 4-block pipeline, MT decompression, adaptive compression, multi-architecture support (6 arches), --lzhp flag | -| v2.1 | VaptVupt 1.4.0: cross-block dictionary carry, context decode prefetch, faster adaptive window trial (2.6× encode), integration API | -| v2.1.1 | Termux/Android build fix, arch-safety guard removes stale cross-arch .o, Keccak ROL64 UB fix, zero UBSan violations | | **v2.1.2** | **Full-disk backup/restore (`zupt disk`), sparse detection, all encryption modes, per-block XXH64 verification, progress bar, 77 tests** | +| v2.1.1 | Termux/Android build fix, arch-safety guard removes stale cross-arch .o, Keccak ROL64 UB fix, zero UBSan violations | +| v2.1 | VaptVupt 1.4.0: cross-block dictionary carry, context decode prefetch, faster adaptive window trial (2.6× encode), integration API | +| v2.0 | VaptVupt 1.1.0 codec with auto hardware detection, all 5 Jasmin functions wired, AVX SIGILL fix, copy_match/litlen overflow fixes, ACSL proofs, mlock, fuzzing, canaries, AES-NI 4-block pipeline, MT decompression, adaptive compression, multi-architecture support (6 arches), --lzhp flag | See [CHANGELOG.md](CHANGELOG.md) for detailed per-version changes.