Repository navigation
v2.1.1
·
136 commits
to master
since this release
Zupt v2.1.1
Release date: 2026-04-06
Summary
This release fixes critical cross-architecture build issues affecting Termux/Android, eliminates undefined behavior in Keccak, and improves overall portability and build reliability. All tests pass cleanly under sanitizers.
Fixes
Cross-Architecture Build Issues (Termux)
- Removed precompiled
.ofiles from the release tarball - Fixed linker errors on aarch64 caused by incompatible x86_64 object files
- Added Makefile guard to automatically detect and remove cross-architecture
.ofiles if present
Android / Termux Compatibility
- Default compiler changed from
gcc→cc(compatible with clang in Termux) - Automatically skips
-lpthreadon Android (bionic includes pthreads) - Added Android detection using
uname -o == Android - Builds now work out-of-the-box on Termux
Keccak / SHA3 Undefined Behavior
- Fixed
ROL64(x, 0)expanding tox >> 64(undefined behavior in C) - Now safely returns
xwhen shift is 0 - Eliminates UB triggered in all SHA3 / SHAKE / ML-KEM operations
- Zero UBSan violations across all post-quantum crypto paths
Portability Fixes
- Moved
sys/syscall.hinclude out of function scope - Added proper
__linux__guards - Ensures standards-compliant compilation across environments
Validation
- ✅ 70 / 70 tests passing
- ✅ ASAN clean
- ✅ UBSan clean
- ✅ Verified on Termux (aarch64 Android)
Release Stats
- 73 files
- 159 KB total
- 0
.ofiles included
Notes
The planned full-disk compression feature:
zupt compress --disk /dev/sdX backup.zupt
is deferred to v2.2.0, as it requires:
- Raw block device I/O
- Sparse region detection
- Multi-GB progress reporting
- Elevated privileges (likely root)
This feature will be developed in a dedicated sprint after v2.1.1 stabilization.