CHANGELOG (2207B)
1 # Changelog 2 3 - 0.4.8 (2026-10-31) 4 * Uses the native C kernel on x86_64 as well as aarch64, along with 5 an AVX2 4-way kernel on x86_64 CPUs that support it, detected at 6 runtime. 'mac' on such CPUs is roughly 1.5x faster on short 7 messages and 4-5x faster on long ones. 8 9 - 0.4.7 (2026-10-31) 10 * Bumps the ppad-fixed dependency to 0.2.1, which under the llvm 11 flag on x86_64 compiles ppad-fixed with LLVM's x86 cmov converter 12 off (-optlc=-x86-cmov-converter=false). This library is compiled 13 likewise, as ppad-fixed's constant-time arithmetic can be inlined 14 into it. 15 16 * Crypto.MAC.Poly1305.Arm is no longer exposed. 17 18 - 0.4.6 (2026-08-01) 19 * Merely bumps the ppad-fixed dependency. 20 21 - 0.4.5 (2026-07-17) 22 * Adds an optimization-opaque barrier to MAC equality comparison 23 to prevent LLVM from introducing variable-time instructions when 24 compiling with the LLVM backend. 25 26 - 0.4.4 (2026-07-06) 27 * Reverts the unrolled MAC comparison introduced in 0.4.3, which was 28 found to introduce timing variation on both aarch64 and x86-64 when 29 compiled via the LLVM backend (the NCG backend was unaffected). 30 31 - 0.4.3 (2026-07-06) 32 * The constant-time 'Eq' on 'MAC' now folds over the two buffers 33 directly, rather than materialising an intermediate ByteString 34 holding their XOR on the heap. Semantics are unchanged. 35 36 * Improves the performance of constant-time MAC comparison. 37 38 - 0.4.2 (2026-05-16) 39 * Features order-of-magnitude performance improvements, especially 40 on ARM platforms where NEON intrinsics are available. 41 42 - 0.4.1 (2025-12-28) 43 * Bumps the ppad-fixed lower-bound version and tests with GHC 9.10.3. 44 45 - 0.4.0 (2025-12-27) 46 * Switches from variable-size 'Integer' to fixed-width words and 47 constant-time primitives supplied by ppad-fixed. The implementation now 48 runs about 25x faster and in time constant with respect to secrets. 49 50 - 0.3.0 (2025-06-21) 51 * The 'mac' function is now total, returning 'Nothing' when supplied 52 with an invalid-length one-time key. 53 54 - 0.2.0 (2025-03-10) 55 * Fix a bug in which small produced MAC's were not being padded to 128 56 bits. 57 58 - 0.1.0 (2025-03-09) 59 * Initial release, supporting the Poly1305 MAC. 60