Skip to content

v2.1.1

Choose a tag to compare

@cristiancmoises cristiancmoises released this 06 Apr 22:21
· 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 .o files 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 .o files if present

Android / Termux Compatibility

  • Default compiler changed from gcc → cc (compatible with clang in Termux)
  • Automatically skips -lpthread on 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 to x >> 64 (undefined behavior in C)
  • Now safely returns x when 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.h include 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 .o files 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.