Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Python-announce] mpdecimal-4.0.0 released

9 views
Skip to first unread message

Stefan Krah

unread,
Jan 25, 2024, 12:03:45 PMJan 25
to

Hi,

mpdecimal-4.0.0 has been released:

https://www.bytereef.org/mpdecimal/changelog.html
https://www.bytereef.org/mpdecimal/download.html


The release has been tested on a compile farm for five months on the
following platforms:

x86_64, i386, aarch64, ppc64, ppc64le, chrp, sparc64, sparc32,
mips64, mips32, risc-v, Wasm

Tested compilers:

gcc, clang, icc, icx, xlc, ibm-clang, cl.exe, clang-cl, mingw-gcc,
CompCert, emscripten


Distributors of CPython are strongly encouraged to build CPython
--with-system-libmpdec (as most of them already do).


Additionally, distributors of Python-11 and Python-12 are advised to revert
the implementation of the z-format specifier in _decimal.c. It contains a
memory leak for large decimals and does not support the "EG" types.

mpdecimal-4.0.0 automatically supports the z-format specifier without patches
to _decimal.c.

The following patch cleanly reverts b0b836b20cb56c225874a4a39ef895f89ab2970f
and applies to both Python-11 and Python-12:

https://www.bytereef.org/contrib/0001-py12-revert-z-format-specifier.patch



For the main branch, the following patches are advised:

# As above:
https://www.bytereef.org/contrib/0001-main-revert-z-format-specifier.patch

# Implement a catch-all fallback for _all_ future format specifiers that
# are _temporarily_ unsupported in mpdecimal. The fallback is clean and
# is zero-cost for the general common case:
https://www.bytereef.org/contrib/0002-main-fallback-to-pydecimal-format.patch

# Fix a deprecation warning that is incorrectly triggered for a fill
# character that contains 'N':
https://www.bytereef.org/contrib/0003-main-fix-deprecation-warning.patch


All patches are "BSD-2-clause, Copyright (c) Stefan Krah", same as mpdecimal
and Modules/_decimal/*.


Finally, due to the nature of multiphase initialization, its current
implementation in the main branch slows down the pi benchmark compared
to 3.9 by:

--enable-gil: 31%

--disable-gil: 47%



Stefan Krah


0 new messages