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
asint
rather thannat
. - 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 onText.Read
, so GHC-only). - Fix a few bugs in the non-GMP implementation. (Fortunately, GMP is the default.)
- Remove upper bounds on testing dependencies.
Note: From now on the revision number (aka patch level) 0 will be omitted (so x.y instead of x.y.0).
Another maintenance release:
- Fix compilation error with GHC 8.0.1.
- Add
check-bounds
flag so the user decides whether to perform bounds checking.
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.
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.
- 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.
This is a maintenance release, but it introduces changes to the API that required a new major version.
- 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.
- 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.