- ICC/Windows: the optimized x86 build requires -fp-model=precise.
- OS X: the linker requires -dynamiclib and -install_name for building a shared library.
- The __uint128_t detection in ./configure has been fixed . Failure to detect the option resulted in building the significantly slower ANSI target on non-x86/amd64 platforms.
- Use -fPIC instead of -fpic to fix a build failure on SPARC platforms.
- Split the tests into a faster “make check” and a slower “make check_alloc”. The latter tests allocation failures but is too slow on older machines.
- Generate detailed test output for better feedback on slower machines.
- The static library is now built without -fPIC, which is significantly faster at least on x86. Both the static and the shared library are now tested separately.
- PEP 3101 formatting: With the ‘%’ format type, a trailing percent sign is now also added for infinities and NaNs.
- Faster integer to string conversion.
- mpd_qln(), mpd_qlog10() and mpd_pow() are now thread-safe.
- All functions that take or return C integers are now available in both the 64-bit and the 32-bit builds.
- Support for cross-compiling.
- Scripts for Visual Studio builds.
- 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.
- The Python module has been removed from mpdecimal, since both libmpdec and cdecimal are included in Python-3.3+.
- 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.
- New test suite with comprehensive tests against decNumber.
- Full support for compilers without uint64_t (tested with CompCert).
- 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.
- configure: append CFLAGS to CONFIG flags.
- Makefile: use includedir, libdir, datarootdir, datadir, docdir, DESTDIR.
workarounds for toolchain bugs
Enable workaround for a gcc miscompilation. See:
Enable workaround for the glibc _FORTIFY_SOURCE/memmove bug, which is exposed by gcc-4.6. See:
- Make PPRO inline assembly PIC-compliant (for the dynamic library).
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.
- Code coverage increased to 100%. This includes every possible allocation failure.
- Switch build process to ./configure.
- Makefile targets for creating coverage reports.
- mpd_qget_uint, mpd_qget_u64, mpd_qget_u32 did not raise for negative input.
- Handle allocation failures in _mpd_fntmul under extreme conditions.
- With MACHINE=ansi64, the macros BSR and BSF used x86 assembly. This caused compilation to fail on non-x64 platforms.
- Support for compilers with __uint128_t (option MACHINE=ansi64).
- Support for other 64-bit compilers (option MACHINE=ansi64c32).
- Support for legacy compilers without uint64_t (option MACHINE=ansi-legacy).
- Slightly different build process (please read INSTALL.txt).
- If clamp=1, the maximum payload length of a NaN is prec-1.
- Fix for mpd_qround_to_int, which did not handle digits exceeding the context precision correctly in all cases.
- In rare corner cases Underflow was not set in transcendental functions.