

Changelog
=========

Version 2.4.0
-------------

    **features**

    1) Faster integer to string conversion.

    2) mpd_qln(), mpd_qlog10() and mpd_pow() are now thread-safe.

    3) All functions that take or return C integers are now available in
       both the 64-bit and the 32-bit builds.

    4) Support for cross-compiling.

    5) Scripts for Visual Studio builds.

    **code improvements**

    1) This version is exactly the same as the version shipped with Python-3.3+.
       Large portions of the code have been refactored in order to facilitate
       proofs.  Many ACL2 proofs have been added.

    **removed**

    1) The Python module has been removed from mpdecimal, since both libmpdec
       and cdecimal are included in Python-3.3+.

    2) The large test suite against decNumber as well as the multi-precision
       tests against gmp have been removed, but will be available in a separate
       package.  Naturally these tests are still run as part of the release
       process.


Version 2.3
-----------

    **features**

    1) New test suite with comprehensive tests against decNumber.

    2) Full support for compilers without uint64_t (tested with CompCert).

    **bug fixes**

    1) If ROUND_FLOOR is set and the operand is zero, the functions
       mpd_plus() and mpd_minus() have special cases for the sign of
       the result.


Version 2.2
-----------

    **build process**

    1) configure: append CFLAGS to CONFIG flags.

    2) Makefile: use includedir, libdir, datarootdir, datadir, docdir, DESTDIR.

    **workarounds for toolchain bugs**

    1) Enable workaround for a gcc miscompilation. See:

           `http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491 <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491>`_

    2) Enable workaround for the glibc _FORTIFY_SOURCE/memmove bug, which is
       exposed by gcc-4.6. See:

           `http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html <http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html>`_

    **features**

    1) Make PPRO inline assembly PIC-compliant (for the dynamic library).


Version 2.1
-----------

Version 2.1 was never released, but escaped into the wild via the Makefile
and setup.py in cdecimal-1.97-rc2.tar.gz. Both files already had that version
number.

    **features**

    1) Code coverage increased to 100%. This includes every possible
       allocation failure.

    2) Switch build process to ./configure.

    3) Makefile targets for creating coverage reports.

    **bug fixes**

    1) mpd_qget_uint, mpd_qget_u64, mpd_qget_u32 did not raise for
       negative input.

    2) Handle allocation failures in _mpd_fntmul under extreme conditions.



Version 1.2.1
-------------

    **bug fixes**

    1) With MACHINE=ansi64, the macros BSR and BSF used x86 assembly.
       This caused compilation to fail on non-x64 platforms.


Version 1.2
-----------

    **features**

    1) Support for compilers with __uint128_t
       (option MACHINE=ansi64).

    2) Support for other 64-bit compilers
       (option MACHINE=ansi64c32).

    3) Support for legacy compilers without uint64_t
       (option MACHINE=ansi-legacy).

    4) Slightly different build process (please read INSTALL.txt).

    5) If clamp=1, the maximum payload length of a NaN is prec-1.

    **bug fixes**

    1) Fix for mpd_qround_to_int, which did not handle digits
       exceeding the context precision correctly in all cases.

    2) In rare corner cases Underflow was not set in
       transcendental functions.



