CHANGELOG (1923B)
1 # Changelog 2 3 - 0.3.8 (2026-10-31) 4 * Bumps the ppad-chacha and ppad-poly1305 dependencies to 0.3.1 and 5 0.4.8, which add native kernels on x86_64: SSE2 and AVX2 for 6 ChaCha20, and scalar C and AVX2 for Poly1305, with AVX2 detected 7 at runtime. On x86_64 CPUs with AVX2, 'encrypt' and 'decrypt' are 8 roughly 3.5x faster. 9 10 - 0.3.7 (2026-10-31) 11 * Bumps the ppad-poly1305 dependency to 0.4.7, which picks up 12 ppad-fixed 0.2.1. Under the llvm flag on x86_64, both are compiled 13 with LLVM's x86 cmov converter off 14 (-optlc=-x86-cmov-converter=false). This library is compiled 15 likewise, as ppad-fixed's constant-time arithmetic can be inlined 16 into it. 17 18 - 0.3.6 (2026-09-06) 19 * Merely bumps the ppad-chacha dependency. 20 21 - 0.3.5 (2026-08-01) 22 * Merely bumps the ppad-poly1305 dependency. 23 24 - 0.3.4 (2026-07-17) 25 * Adds an optimization-opaque barrier to MAC equality comparison 26 to prevent LLVM from introducing variable-time instructions when 27 compiling with the LLVM backend. 28 29 - 0.3.3 (2026-07-17) 30 * Uses a different algorithm for constant-time MAC comparison. 31 This version seems to produce less microarchitectural variance on 32 aarch64/darwin. 33 34 - 0.3.2 (2026-05-16) 35 * Bumps the poly1305 dependency to a version that returns its MAC in a 36 custom type having a constant-time Eq instance. 37 38 - 0.3.1 (2025-12-28) 39 * Tests with GHC 9.10.3. 40 41 - 0.3.0 (2025-12-27) 42 * Updates the poly1305 dependency to a version that uses ppad-fixed for 43 fixed-width words and constant-time primitives internally. Also swaps 44 a naïve ByteString equality check out for a constant-time version. 45 46 - 0.2.0 (2025-06-21) 47 * The 'encrypt' and 'decrypt' functions are now total, returning 'Left 48 InvalidKey', 'Left InvalidNonce', or 'Left InvalidMAC' values when 49 passed the corresponding bad inputs. 50 51 - 0.1.0 (2025-03-09) 52 * Initial release, supporting the ChaCha20-Poly1305 configuration. 53 54