CHANGELOG (1797B)
1 # Changelog 2 3 - 0.2.1 (2026-10-27) 4 * Under the llvm flag on x86_64, the library is compiled with LLVM's 5 x86 cmov converter off (-optlc=-x86-cmov-converter=false). The 6 converter rewrites a conditional move whose operand is a load as a 7 branch, and so made the borrow-masked correction of sub_mod, 8 sub_mod#, and sub_mod_c# a branch on the borrow, which depends on 9 the operands. NCG builds, and aarch64, were unaffected. 10 11 - 0.2.0 (2026-08-01) 12 * Addresses a couple of minor issues detected by an LLM scan: 13 14 * Fixes a bug that could lead shl1_c# to produce a malformed Choice 15 that would behave incorrectly for negation or selection. 16 17 * Each Montgomery domain's 'signum' implementation was broken, 18 producing R^-1 instead of the proper in-domain 'one'. Now these 19 return the appropriate values. 20 21 Also clarifies a few Haddocks, on the suggestions of the same scan. 22 23 - 0.1.6 (2026-08-01) 24 * The eq_{word,wide,wider}# functions now return a mask, instead of a 25 bit, inside the resulting Choice value. 26 27 - 0.1.5 (2026-06-07) 28 * Improves constant-time modular inverse performance on the Montgomery 29 'Curve' module by about 2x, and on the 'Scalar' module by about 1.5x. 30 31 - 0.1.4 (2026-05-22) 32 * Adds variable-time comparison functions to Data.Word.Wider. 33 34 - 0.1.3 (2025-12-28) 35 * Makes some backward-incompatible API tweaks to Data.Choice: 36 37 * 'from_word_mask# is now 'from_full_mask#' 38 * 'from_word#' is now 'from_bit#' 39 40 - 0.1.2 (2025-12-27) 41 * Fixes an API mistake made in the v0.1.1 release. 42 43 - 0.1.1 (2025-12-27) 44 * Contains miscellaneous hardening and API refinements to v0.1.1. 45 46 - 0.1.0 (2025-12-21) 47 * Initial release, supporting wide, wider, and secp256k1-related 48 Montgomery-form words with supporting constant-time operations. 49