fixed

Pure Haskell large fixed-width integers and Montgomery arithmetic (docs.ppad.tech/fixed).
git clone git://git.ppad.tech/fixed.git
Log | Files | Refs | README | LICENSE

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