Changelog of @hackage/bv 0.5

0.5.0

Note that changes in fromInteger and toInteger implementations break backwards compatibility. I hope this will not cause major problems, let me know otherwise.

  • Make bv with compatible with GHC 8.4.1 (base 4.11). Thanks to Kosyrev Serge!
  • Define toInteger as int rather than nat.
  • Make fromInteger consistent and always encode in two's complement, also positive integers.
  • As a result of the two previous changes, now toInteger . fromInteger == id, as it should be.
  • Add Read BV instance (based on Text.Read, so GHC-only).
  • Fix a few bugs in the non-GMP implementation. (Fortunately, GMP is the default.)
  • Remove upper bounds on testing dependencies.

0.4.1

Another maintenance release:

  • Fix compilation error with GHC 8.0.1.
  • Add `check-bounds' flag so the user decides whether to perform bounds checking.

0.4.0

This is a maintenance release, but it introduces changes to the API that required a new major version. In summary, I have fixed a few bugs, optimized a few functions, and added a few more properties (tests). Apart from that, and the usual clean up, there are also a handful of new API functions that I judged useful.

For performance reasons, this release introduces GMP specific optimizations. The GMP-based backend is automatically used if available, unless -f -gmp is specified.

Dependencies

Only if the library is compiled with -fgmp (it will, by default, if possible):

  • Depend on the ghc-prim package, the GHC's internal representation of primitive types.
  • Depend on the integer-gmp package, the Haskell bindings for GNU's GMP library.
  • Use MagicHash extension to work with unboxed machine integers.

Interface

  • Added bitVecs (list of bit-vector literals).
  • Added @: (indexing of multiple bits).
  • Added pow as an optimized exponentiation function.
  • Fixed bitVec (value must fit bit-with).
  • Fixed negate (wrong on zero bit-vector).
  • Define and and or for the case of an empty list.
  • Declared Monoid instance for bit-vector (monoid under concanetation).
  • Define join for the case of an empty list (it must be equivalent to mconcat).
  • Optimized when using the GMP backend: fromBits, fromInteger, and lg2.
  • Remove uninteresting maxNat function from export list.

0.3.0

This is a maintenance release, but it introduces changes to the API that required a new major version.

Dependencies

  • Increase base version to 4.6.
  • Support base 4.7 (new methods were added to the Bits type-class).
  • Use of CPP extension for conditional compilation.

Interface

  • Replace assertions by errors when checking preconditions of exported functions.
  • Use proper names for functions and encourage qualified import, names ended with underscore are now deprecated.
  • Add lsb1 function to complement msb1.
  • Tweak code and documentation.