GNU MPFR 4.2.2 Release Candidate
Dennis Clarke
dclarke at blastwave.org
Sun Mar 16 10:22:09 CET 2025
On 3/14/25 20:17, Vincent Lefevre wrote:
> The release of GNU MPFR 4.2.2 ("fondue savoyarde", patch level 2)
> is imminent. Please help to make this release as good as possible
> by downloading and testing this release candidate:
>
> https://www.mpfr.org/mpfr-4.2.2/mpfr-4.2.2-rc1.tar.xz
> https://www.mpfr.org/mpfr-4.2.2/mpfr-4.2.2-rc1.tar.bz2
> https://www.mpfr.org/mpfr-4.2.2/mpfr-4.2.2-rc1.tar.gz
> https://www.mpfr.org/mpfr-4.2.2/mpfr-4.2.2-rc1.zip
>
> The SHA1 digests:
> 2cacc5d37c22e3ecd7d100cd9d56d7b73ad7b350 mpfr-4.2.2-rc1.tar.bz2
> 7216e427cb9ce94c63309e6f3f3722d77926cc99 mpfr-4.2.2-rc1.tar.gz
> 03c7229121e7a078a96830611ede317898488840 mpfr-4.2.2-rc1.tar.xz
> d20be8923eead30fdea33d6c5f6c6fb75698bb21 mpfr-4.2.2-rc1.zip
>
> The SHA256 digests:
> c79b6c0f67f146c3f4a7419a5faad6e80ec921d27e7508ccfb3df562e0f36d3b mpfr-4.2.2-rc1.tar.bz2
> 794100b363753735eca62a3ce4dca3ddebae0dbc30b5329833ef4383ee92db56 mpfr-4.2.2-rc1.tar.gz
> 26702f2e0c35d23e6ebe2f6d8b3862928f8eb8adff9220c575decda67be4ea4e mpfr-4.2.2-rc1.tar.xz
> b19040904b0e0980d6218a9759d127a643b24cfa1dae21cdcab60cd854445e49 mpfr-4.2.2-rc1.zip
>
> The signatures:
> https://www.mpfr.org/mpfr-4.2.2/mpfr-4.2.2-rc1.tar.xz.asc
> https://www.mpfr.org/mpfr-4.2.2/mpfr-4.2.2-rc1.tar.bz2.asc
> https://www.mpfr.org/mpfr-4.2.2/mpfr-4.2.2-rc1.tar.gz.asc
> https://www.mpfr.org/mpfr-4.2.2/mpfr-4.2.2-rc1.zip.asc
>
> Each tarball is signed by Vincent Lefèvre. This can be verified using
> the GPG key ID 5831D11A0D4DB02A; this key can be retrieved with:
>
> gpg --recv-keys 5831D11A0D4DB02A
>
> or by downloading it from <https://www.vinc17.net/pgp.html>.
> The key fingerprint is:
>
> A534 BE3F 83E2 41D9 1828 0AEB 5831 D11A 0D4D B02A
>
> The signatures can be verified with: gpg --verify <file.asc>
> You should check that the key fingerprint matches.
>
> Changes from version 4.2.1 to version 4.2.2:
> - In order to resolve a portability issue with the _Float128 fallback to
> __float128 for binary128 support (e.g. with Clang and glibc 2.41), the
> prototypes of the corresponding conversion functions had to be changed,
> with _Float128 replaced by mpfr_float128, where mpfr_float128 is a macro
> defined as _Float128 by default. This changes neither the ABI nor the API
> (except that the end user of MPFR would need to define mpfr_float128 as
> the actual type for the binary128 format if this is not the standard
> _Float128 type).
> - Other bug fixes (see <https://www.mpfr.org/mpfr-4.2.1/#fixed> and/or the
> ChangeLog file). In particular, the formatted output functions behaved
> incorrectly with %c on the value 0; such a use is uncommon, but this bug
> may have security implications.
> - Improved MPFR manual.
> - Detect the use of GMP's buggy vsnprintf replacement at configure time.
> With it, the tests of "%a" will be disabled to avoid an assertion failure
> in the MPFR testsuite. A warning will be displayed in the configure output
> in such a case.
>
> Also, note that due to new tests related to the fix of the formatted
> output functions with %c on the value 0, failures in the tfprintf and
> tsprintf tests may be observed if GMP has been built with its vsnprintf
> replacement (i.e. if GMP detected at configure time that the vsnprintf
> function from the C library is buggy/non-conforming). This is due to a
> bug in the vsnprintf replacement from GMP 6.3.0 (official tarball) and
> below. This could be observed on MS Windows and OpenBSD. To get rid of
> these failures, either use a fixed version (recommended!) or build the
> MPFR tests with the MPFR_TESTS_SKIP_CHECK_NULL macro defined.
> See the INSTALL file for other details.
>
> Please send success and failure reports with "./config.guess" output
> to <mpfr at inria.fr>.
>
Seems to even work on ye old Solaris 10 SPARC64 server with
the Studio 12.6 compiler tools :
$
$ ./config.guess
sparc-sun-solaris2.10
$
.
.
.
PASS: tversion
[tversion] MPFR 4.2.2-rc1
[tversion] C standard: __STDC__ = 0, __STDC_VERSION__ = 199901L
[tversion] GMP: header 6.3.0, library 6.3.0
[tversion] __GMP_CC = "/opt/developerstudio12.6/bin/cc"
[tversion] __GMP_CFLAGS = "-std=iso9899:1999 -m64 -xarch=sparc -g -xO0
-mc -xs -errfmt=error -erroff=%none -errshort=full -errtags=yes
-errwarn=%none -ftrap=%none -xbuiltin=%none -xildoff -xlibmieee
-xstrconst -xcode=pic32 -xmemalign=8s -xnolibmil -xunroll=1 -xdepend=no
-xregs=no%appl -xdebugformat=dwarf"
[tversion] WinDLL: __GMP_LIBGMP_DLL = 0, MPFR_WIN_THREAD_SAFE_DLL = undef
[tversion] MPFR_ALLOCA_MAX = 16384
[tversion] TLS = no, float128 = no, decimal = no, GMP internals = no
[tversion] Shared cache = no
[tversion] intmax_t = yes, printf = yes, IEEE floats = yes
[tversion] gmp_printf: hhd = yes, lld = yes, jd = yes, td = yes, Lf = yes
[tversion] gmp_snprintf/vsnprintf on "%a" = yes
[tversion] MPFR tuning parameters from src/sparc64/mparam.h
[tversion] sizeof(long) = 8, sizeof(mpfr_intmax_t) = 8, sizeof(intmax_t) = 8
[tversion] GMP_NUMB_BITS = 64, sizeof(mp_limb_t) = 8
[tversion] Within limb: long = y/y, intmax_t = y/y
[tversion] _MPFR_PREC_FORMAT = 3, sizeof(mpfr_prec_t) = 8
[tversion] _MPFR_EXP_FORMAT = 3, sizeof(mpfr_exp_t) = 8
[tversion] sizeof(mpfr_t) = 32, sizeof(mpfr_ptr) = 8
[tversion] Precision range: [1,9223372036854775551]
[tversion] Max exponent range: [-4611686018427387903,4611686018427387903]
[tversion] Generic ABI code: no
[tversion] Enable formally proven code: yes
[tversion] Locale:
/en_US.UTF-8/en_US.UTF-8/POSIX/en_US.UTF-8/en_US.UTF-8/en_US.UTF-8
PASS tversion (exit status: 0)
PASS: tabort_prec_max
PASS: tassert
PASS: tabort_defalloc1
PASS: tabort_defalloc2
PASS: talloc
PASS: tinternals
PASS: tinits
PASS: tisqrt
PASS: tsgn
PASS: tcheck
PASS: tisnan
PASS: texceptions
PASS: tset_exp
PASS: tset
PASS: mpf_compat
PASS: mpfr_compat
PASS: reuse
PASS: tabs
PASS: tacos
PASS: tacosh
PASS: tacosu
PASS: tadd
PASS: tadd1sp
PASS: tadd_d
PASS: tadd_ui
PASS: tagm
PASS: tai
PASS: talloc-cache
PASS: tasin
PASS: tasinh
PASS: tasinu
PASS: tatan
PASS: tatanh
PASS: tatanu
PASS: tatan2u
PASS: taway
PASS: tbeta
PASS: tbuildopt
PASS: tcan_round
PASS: tcbrt
PASS: tcmp
PASS: tcmp2
PASS: tcmp_d
PASS: tcmp_ld
PASS: tcmp_ui
PASS: tcmpabs
PASS: tcomparisons
PASS: tcompound
PASS: tconst_catalan
PASS: tconst_euler
PASS: tconst_log2
PASS: tconst_pi
PASS: tcopysign
PASS: tcos
PASS: tcosh
PASS: tcosu
PASS: tcot
PASS: tcoth
PASS: tcsc
PASS: tcsch
PASS: td_div
PASS: td_sub
PASS: tdigamma
PASS: tdim
PASS: tdiv
PASS: tdiv_d
PASS: tdiv_ui
PASS: tdot
PASS: teint
PASS: teq
PASS: terandom
PASS: terandom_chisq
PASS: terf
PASS: texp
PASS: texp10
PASS: texp2
PASS: texpm1
PASS: texp10m1
PASS: texp2m1
PASS: tfactorial
PASS: tfits
PASS: tfma
PASS: tfmma
PASS: tfmod
PASS: tfms
PASS: tfpif
PASS: tfprintf
PASS: tfrac
PASS: tfrexp
PASS: tgamma
PASS: tgamma_inc
PASS: tget_d
PASS: tget_d_2exp
PASS: tget_f
PASS: tget_flt
PASS: tget_ld_2exp
PASS: tget_q
SKIP: tget_set_d64
SKIP: tget_set_d128
PASS: tget_sj
PASS: tget_str
PASS: tget_z
PASS: tgmpop
PASS: tgrandom
PASS: thyperbolic
PASS: thypot
PASS: tinp_str
PASS: tj0
PASS: tj1
PASS: tjn
PASS: tl2b
PASS: tlgamma
PASS: tli2
PASS: tlngamma
PASS: tlog
PASS: tlog10
PASS: tlog10p1
PASS: tlog1p
PASS: tlog2
PASS: tlog2p1
PASS: tlog_ui
PASS: tmin_prec
PASS: tminmax
PASS: tmodf
PASS: tmul
PASS: tmul_2exp
PASS: tmul_d
PASS: tmul_ui
PASS: tnext
PASS: tnrandom
PASS: tnrandom_chisq
PASS: tout_str
PASS: toutimpl
PASS: tpow
PASS: tpow3
PASS: tpowr
PASS: tpow_all
PASS: tpow_z
PASS: tprec_round
PASS: tprintf
PASS: trandom
PASS: trandom_deviate
PASS: trec_sqrt
PASS: treldiff
PASS: tremquo
PASS: trint
PASS: trndna
PASS: troot
PASS: trootn_si
PASS: trootn_ui
PASS: tsec
PASS: tsech
PASS: tset_d
PASS: tset_f
SKIP: tset_float128
PASS: tset_ld
PASS: tset_q
PASS: tset_si
PASS: tset_sj
PASS: tset_str
PASS: tset_z
PASS: tset_z_2exp
PASS: tsi_op
PASS: tsin
PASS: tsin_cos
PASS: tsinh
PASS: tsinh_cosh
PASS: tsinu
PASS: tsprintf
PASS: tsqr
PASS: tsqrt
PASS: tsqrt_ui
PASS: tstckintc
PASS: tstdint
PASS: tstrtofr
PASS: tsub
PASS: tsub1sp
PASS: tsub_d
PASS: tsub_ui
PASS: tsubnormal
PASS: tsum
PASS: tswap
PASS: ttan
PASS: ttanh
PASS: ttanu
PASS: ttotal_order
PASS: ttrunc
PASS: tui_div
PASS: tui_pow
PASS: tui_sub
PASS: turandom
PASS: tvalist
PASS: ty0
PASS: ty1
PASS: tyn
PASS: tzeta
PASS: tzeta_ui
============================================================================
Testsuite summary for MPFR 4.2.2-rc1
============================================================================
# TOTAL: 198
# PASS: 195
# SKIP: 3
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
============================================================================
make[3]: Leaving directory
'/opt/bw/build/mpfr-4.2.2-rc1_SunOS_5.10_SPARC64.001/tests'
make[2]: Leaving directory
'/opt/bw/build/mpfr-4.2.2-rc1_SunOS_5.10_SPARC64.001/tests'
[tversion] MPFR 4.2.2-rc1
[tversion] C standard: __STDC__ = 0, __STDC_VERSION__ = 199901L
[tversion] GMP: header 6.3.0, library 6.3.0
[tversion] __GMP_CC = "/opt/developerstudio12.6/bin/cc"
[tversion] __GMP_CFLAGS = "-std=iso9899:1999 -m64 -xarch=sparc -g -xO0
-mc -xs -errfmt=error -erroff=%none -errshort=full -errtags=yes
-errwarn=%none -ftrap=%none -xbuiltin=%none -xildoff -xlibmieee
-xstrconst -xcode=pic32 -xmemalign=8s -xnolibmil -xunroll=1 -xdepend=no
-xregs=no%appl -xdebugformat=dwarf"
[tversion] WinDLL: __GMP_LIBGMP_DLL = 0, MPFR_WIN_THREAD_SAFE_DLL = undef
[tversion] MPFR_ALLOCA_MAX = 16384
[tversion] TLS = no, float128 = no, decimal = no, GMP internals = no
[tversion] Shared cache = no
[tversion] intmax_t = yes, printf = yes, IEEE floats = yes
[tversion] gmp_printf: hhd = yes, lld = yes, jd = yes, td = yes, Lf = yes
[tversion] gmp_snprintf/vsnprintf on "%a" = yes
[tversion] MPFR tuning parameters from src/sparc64/mparam.h
[tversion] sizeof(long) = 8, sizeof(mpfr_intmax_t) = 8, sizeof(intmax_t) = 8
[tversion] GMP_NUMB_BITS = 64, sizeof(mp_limb_t) = 8
[tversion] Within limb: long = y/y, intmax_t = y/y
[tversion] _MPFR_PREC_FORMAT = 3, sizeof(mpfr_prec_t) = 8
[tversion] _MPFR_EXP_FORMAT = 3, sizeof(mpfr_exp_t) = 8
[tversion] sizeof(mpfr_t) = 32, sizeof(mpfr_ptr) = 8
[tversion] Precision range: [1,9223372036854775551]
[tversion] Max exponent range: [-4611686018427387903,4611686018427387903]
[tversion] Generic ABI code: no
[tversion] Enable formally proven code: yes
[tversion] Locale:
/en_US.UTF-8/en_US.UTF-8/POSIX/en_US.UTF-8/en_US.UTF-8/en_US.UTF-8
PASS tversion (exit status: 0)
make[1]: Leaving directory
'/opt/bw/build/mpfr-4.2.2-rc1_SunOS_5.10_SPARC64.001/tests'
Making check in tune
make[1]: Entering directory
'/opt/bw/build/mpfr-4.2.2-rc1_SunOS_5.10_SPARC64.001/tune'
make[1]: Nothing to be done for 'check'.
make[1]: Leaving directory
'/opt/bw/build/mpfr-4.2.2-rc1_SunOS_5.10_SPARC64.001/tune'
Making check in tools/bench
make[1]: Entering directory
'/opt/bw/build/mpfr-4.2.2-rc1_SunOS_5.10_SPARC64.001/tools/bench'
make[1]: Nothing to be done for 'check'.
make[1]: Leaving directory
'/opt/bw/build/mpfr-4.2.2-rc1_SunOS_5.10_SPARC64.001/tools/bench'
make[1]: Entering directory
'/opt/bw/build/mpfr-4.2.2-rc1_SunOS_5.10_SPARC64.001'
make[1]: Nothing to be done for 'check-am'.
make[1]: Leaving directory
'/opt/bw/build/mpfr-4.2.2-rc1_SunOS_5.10_SPARC64.001'
So no surprises there.
--
--
Dennis Clarke
RISC-V/SPARC/PPC/ARM/CISC
UNIX and Linux spoken
More information about the gmp-discuss
mailing list