CHANGELOG (1511B)
1 # Changelog 2 3 - 0.4.5 (2026-07-17) 4 * Adds an optimization-opaque barrier to MAC equality comparison 5 to prevent LLVM from introducing variable-time instructions when 6 compiling with the LLVM backend. 7 8 - 0.4.4 (2026-07-06) 9 * Reverts the unrolled MAC comparison introduced in 0.4.3, which was 10 found to introduce timing variation on both aarch64 and x86-64 when 11 compiled via the LLVM backend (the NCG backend was unaffected). 12 13 - 0.4.3 (2026-07-06) 14 * The constant-time 'Eq' on 'MAC' now folds over the two buffers 15 directly, rather than materialising an intermediate ByteString 16 holding their XOR on the heap. Semantics are unchanged. 17 18 * Improves the performance of constant-time MAC comparison. 19 20 - 0.4.2 (2026-05-16) 21 * Features order-of-magnitude performance improvements, especially 22 on ARM platforms where NEON intrinsics are available. 23 24 - 0.4.1 (2025-12-28) 25 * Bumps the ppad-fixed lower-bound version and tests with GHC 9.10.3. 26 27 - 0.4.0 (2025-12-27) 28 * Switches from variable-size 'Integer' to fixed-width words and 29 constant-time primitives supplied by ppad-fixed. The implementation now 30 runs about 25x faster and in time constant with respect to secrets. 31 32 - 0.3.0 (2025-06-21) 33 * The 'mac' function is now total, returning 'Nothing' when supplied 34 with an invalid-length one-time key. 35 36 - 0.2.0 (2025-03-10) 37 * Fix a bug in which small produced MAC's were not being padded to 128 38 bits. 39 40 - 0.1.0 (2025-03-09) 41 * Initial release, supporting the Poly1305 MAC. 42