GMP 6.0.0 released
Richard Biener
rguenther at suse.de
Wed Mar 26 10:49:12 UTC 2014
On Tue, 25 Mar 2014, Torbjorn Granlund wrote:
> A new major release of the GNU Multiple Precision Arithmetic Library
> (GMP) is now available. The new release is identified as 6.0.0.
>
> The release can be downloaded from here:
>
> https://gmplib.org/download/gmp/gmp-6.0.0a.tar.lz (smallest)
> https://gmplib.org/download/gmp/gmp-6.0.0a.tar.xz
> https://gmplib.org/download/gmp/gmp-6.0.0a.tar.bz2 (largest)
>
> These files will also soon be found at the GNU main site as well as its
> many mirrors.
>
> The 6.0.0 release contains a considerable amount of new code, and many
> improvements to existing code. Please see below for the some high-
> lights.
>
> There are both "6.0.0" and "6.0.0a" tar files; the latter have no code
> changes but a few fixes to the documentation files.
>
> It cannot be said enough times: Please run "make check" after you've
> built your library. And if "make check" stops with an error, do not
> use the compiled library. When this happens, you've almost surely run
> into a compiler bug, not a GMP bug, since we've of course made sure the
> library passes its own test suite. The first thing to try at this
> point is using a different compiler. See also https://gmplib.org/.
>
> We have expanded the testing from about 100 configurations to over 600
> configurations. Thanks to both the broad testing and careful
> development, we expect this to be a very stable release.
>
> This release would not have been possible without the hard work of
> Niels Möller and Marco Bodrato, or Marc Glisse's work on the C++
> interface. As usual, Torbjörn Granlund coordinated the development and
> release, and did a fair amount of development work himself. Mark
> Sofroniou developed the fixes allowing > 2^31 limb mpn multiplies to
> work correctly.
>
>
> Changes between GMP version 5.1.* and 6.0.0
>
> BUGS FIXED
> * The function mpz_invert now considers any number invertible in Z/1Z.
>
> * The mpn multiply code now handles operands of more than 2^31 limbs
> correctly. (Note however that the mpz code is limited to 2^32 bits on
> 32-bit hosts and 2^37 bits on 64-bit hosts.)
>
> * Contains all fixes from release 5.1.3.
>
> SPEEDUPS
> * Plain division of large operands is faster and more monotonous in operand
> size.
>
> * Major speedup for ARM, in particular ARM Cortex-A15, thanks to improved
> assembly.
>
> * Major speedup for SPARC T4/T5 and speedup also for T3, thanks to a lot of
> new assembly.
>
> * Speedup for Intel Sandy Bridge, Ivy Bridge, Haswell, thanks to rewritten
> and vastly expanded assembly support. Speedup also for the older Core 2
> and Nehalem.
>
> * Faster mixed arithmetic between mpq_class and double.
>
> * With g++, optimise more operations when one argument is a simple constant.
>
> FEATURES
> * Support for new Intel and AMD CPUs.
>
> * Support for ARM64 alias Aarch64 alias ARMv8.
>
> * New public functions mpn_sec_mul and mpn_sec_sqr, implementing side-channel
> silent multiplication and squaring.
>
> * New public functions mpn_sec_div_qr and mpn_sec_div_r, implementing
> side-channel silent division.
>
> * New public functions mpn_cnd_add_n and mpn_cnd_sub_n. Side-channel silent
> conditional addition and subtraction.
>
> * New public function mpn_sec_powm, implementing side-channel silent modexp.
>
> * New public function mpn_sec_invert, implementing side-channel silent
> modular inversion.
>
> * Better support for applications which use the mpz_t type, but nevertheless
> need to call some of the lower-level mpn functions. See the documentation
> for mpz_limbs_read and related functions.
>
> MISC
> * This release will not work on NetBSD 5.x, FreeBSD 7.x, 8.x or 9 series
> before 9.3. The reason is that the m4 command is not correctly
> implemented. (Workaround: Use an older GMP release, or install GNU m4 from
> /usr/ports and tell GMP to use it.)
>
> * This release will not build properly on FreeBSD/amd64 before version 10
> using the 32-bit ABI (once a working m4 is installed). The reason is
> broken limits.h. (Workaround: Use an older GMP release if using the 32-bit
> ABI on these FreeBSD releases is important.)
>
> * This release will not work reliably on FreeBSD 10.0 for i386 or amd64 using
> the 32-bit ABI. The reason is bugs in the compiler 'clang'. Depending on
> CPU-dependent compiler flags, GMP may or may not be miscompiled in a
> particular build. (Workaround: Compiling gcc from /usr/ports should work,
> except that gcc circularly depends on GMP; we have not been able to test
> that workaround due to FreeBSD 10.0 bugs affecting its ability to run under
> KVM and Xen.)
>
> * This release will not compile on FreeBSD before version 10 for i386,
> targeting any modern AMD processor. The reason is bugs in the old gcc
> bundled with FreeBSD. (Workaround: install a less obsolete gcc from
> /usr/ports and tell GMP to use it, or override the -march=amdfam10
> GMP configure command line argument.)
* Fails to build on ppc64-linux and ppc64le-linux
as I get for both
gcc -std=gnu99 -c -DHAVE_CONFIG_H -I. -I.. -D__GMP_WITHIN_GMP -I..
-DOPERATION_gcd_1 -fmessage-length=0 -grecord-gcc-switches -O2 -Wall
-D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables
-fasynchronous-unwind-tables -g -fexceptions -Wa,--noexecstack tmp-gcd_1.s
-fPIC -DPIC -o .libs/gcd_1.o
tmp-gcd_1.s: Assembler messages:
tmp-gcd_1.s:98: Error: unsupported relocation against
BMOD_1_TO_MOD_1_THRESHOLD
it would also be nice to finally fix
configure: error: --target is not appropriate for GMP
for the case of --host == --build == --target as older rpm does this
for us:
[ 72s] + ./configure --host=x86_64-suse-linux-gnu
--build=x86_64-suse-linux-gnu --target=x86_64-suse-linux
Thanks,
Richard.
--
Richard Biener <rguenther at suse.de>
SUSE / SUSE Labs
SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746
GF: Jeff Hawn, Jennifer Guild, Felix Imend"orffer
More information about the gmp-devel
mailing list