diff options
Diffstat (limited to 'gmp/NEWS')
-rw-r--r-- | gmp/NEWS | 460 |
1 files changed, 5 insertions, 455 deletions
@@ -1,458 +1,8 @@ -Copyright 1996, 1999-2014 Free Software Foundation, Inc. +Copyright 1996, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, +2009, 2010 Free Software Foundation, Inc. -Verbatim copying and distribution of this entire article is permitted in any -medium, provided this notice is preserved. - - -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.) - - -Changes between GMP version 5.1.2 and 5.1.3 - - BUGS FIXED - * The internal functions mpn_sbpi1_div_qr_sec mpn_sbpi1_div_r_sec could - compute garbage with a low probability. They are now rewritten, and the - test code has been improved. - - * A bug in the ia64 implementation of mpn_divrem_2, clobbering some - callee-save registers, has been fixed. This is an internal - function, with the bug manifesting itself as miscomputation in, - e.g., mpn_sqrtrem. - - * The documentation now correctly says 'const' for input arguments. - - SPEEDUPS - * None. - - FEATURES - * None. - - MISC - * None. - - -Changes between GMP version 5.1.1 and 5.1.2 - - BUGS FIXED - * A bug in mpz_powm_ui triggered by base arguments of at least 15000 decimal - digits or mod arguments of at least 7500 decimal digits has been fixed. - - * An AMD Bulldozer specific bug affecting the 64-bit Windows ABI has been - fixed. This bug was in a key function (mpn_mul_1) and made both Bulldozer - specific builds and fat builds run on Bulldozer completely non-functional. - - SPEEDUPS - * None. - - FEATURES - * None. - - MISC - * Fixes and generalisations to the test suite. - - * Minor portability enhancements. - - -Changes between GMP version 5.1.0 and 5.1.1 - - BUGS FIXED - * On Windows 64-bit, an error causing link errors about - __gmp_binvert_limb_table has been fixed. - - * Aarch64 alias ARM64 support now works. - - * A possible buffer overrun in mpz_ior has been fixed. - - * A rare sign flip in mpz_remove has been fixed. - - * A bug causing problems with mpf numbers with absolute value >= 2^31 has - been fixed. - - * Several bugs in mini-gmp have been fixed. - - * A bug caused by automake, related to the 'distcheck' target, has been fixed - by upgrading the automake used for GMP release engineering. - - SPEEDUPS - * None. - - FEATURES - * Preliminary support for the x32 ABI under x86-64. - - MISC - * The mini-gmp testsuite now tests the entire set of functions. - - * Various improvements of the GMP testsuite. - - -Changes between GMP version 5.0.* and 5.1.0 - - BUGS FIXED - * When reading a C++ number (like mpz_class) in an istream reaches the end - of the stream, the eofbit is now set. - - * The result sign of mpz_rootrem's remainder is now always correct. - - * The mpz_remove function now handles negative divisors. - - * Contains all fixes from release 5.0.5. - - SPEEDUPS - * The n-factorial and n-over-k functions have been reimplemented for great - speedups for small and large operands. - - * New subquadratic algorithm for the Kronecker/Jacobi/Legendre symbol. - - * Major speedup for ARM, in particular ARM Cortex-A9 and A15, thanks to broad - assembly support. - - * Significant speedup for POWER6 and POWER7 thanks to improved assembly. - - * The performance under M$ Windows' 64-bit ABI has been greatly improved - thanks to complete assembly support. - - * Minor speed improvements of many functions and for many platforms. - - FEATURES - * Many new CPUs recognised. - - * New functions for multi-factorials, and primorial: mpz_2fac_ui, - mpz_mfac_uiui and mpz_primorial_ui. - - * The mpz_powm_sec function now uses side-channel silent division for - converting into Montgomery residues. - - * The fat binary mechanism is now more robust in its CPU recognition. - - MISC - * Inclusion of assembly code is now controlled by the configure options - --enable-assembly and --disable-assembly. The "none" CPU target is gone. - - * In C++, the conversions mpq_class->mpz_class, mpf_class->mpz_class and - mpf_class->mpq_class are now explicit. - - * Includes "mini-gmp", a small, portable, but less efficient, implementation - of a subset of GMP's mpn and mpz interfaces. Used in GMP bootstrap, but it - can also be bundled with applications as a fallback when the real GMP - library is unavailable. - - * The ABIs under AIX are no longer called aix32 and aix64, but mode64 and 32. - This is more consistent with other powerpc systems. - - * The coverage of the testsuite has been improved, using the lcov tool. See - also https://gmplib.org/devel/lcov/. - - * It is now possible to compile GMP using a C++ compiler. - - * K&R C compilers are no longer supported. - - * The BSD MP compatibility functions have been removed. - - -Changes between GMP version 5.0.4 and 5.0.5 - - BUGS FIXED - * A bug causing AMD 11h processors to be treated like AMD 10h has been fixed. - The 11h processors do not correctly handle all 10h (aka K10) instructions, - and GMP's use of these instructions results in major miscomputations (not - as one would have hoped CPU traps of some 'illegal instruction' sort). - - * A bug affecting recent Intel Sandy Bridge CPUs resulting in configuration - failures has been fixed. - - SPEEDUPS - * None. - - FEATURES - * A couple of tests added to the self-check suite. - - MISC - * None. - - -Changes between GMP version 5.0.3 and 5.0.4 - - BUGS FIXED - * Thresholds in mpn_powm_sec for both fat and non-fat builds are now used - safely, plugging a one-word buffer overrun introduced in the 5.0.3 release - (for non-fat) and a multi-word buffer overrun that existed since 5.0 (for - fat). (We have not been able to provoke malign stack smashing in any of - the ~100 configurations explored by the GMP nightly builds, but the bug - should be assumed to be exploitable.) - - * Two bugs in multiplication code causing incorrect computation with - extremely low probability have been fixed. - - * A bug in the test suite causing buffer overruns during "make check", - sometimes leading to subsequent malloc crashes, has been fixed. - - * Two bugs in the gcd code have been fixed. They could lead to incorrect - results, but for uniformly distributed random operands, the likelihood for - that is infinitesimally small. (There was also a third bug, but that was - an incorrect ASSERT, which furthermore was not enabled by default.) - - * A bug affecting 32-bit PowerPC division has been fixed. The bug caused - miscomputation for certain divisors in the range 2^32 ... 2^64-1 (about 1 - in 2^30 of these). - - SPEEDUPS - * None, except indirectly through recognition of new CPUs, and through better - tuning parameters. - - FEATURES - * Some more tests added to the self-check suite. - - * The AMD "Bulldozer" CPU is now recognised. - - MISC - * None. - - -Changes between GMP version 5.0.2 and 5.0.3 - - BUGS FIXED - * A few minor bugs related to portability fixed. - - * A slight timing leak of the powm_sec functions have been sealed. (This - leak could possibly be used to extract the most significant few bits of the - exponent. "Few" here means at most 10.) - - * The mpz_nextprime function now runs a safer number of pseudo-random prime - tests. - - * A bug in division code possibly causing incorrect computation was fixed. - - SPEEDUPS - * None, except indirectly through recognition of new CPUs, and through better - tuning parameters. - - FEATURES - * New CPUs recognised. - - * IBM S/390 are now supported in both 31/32-bit and 64-bit mode. (We have - not been able to fully test this on any multilib machine, since IBM expired - our guest account a few days before our release.) - - MISC - * None. - - -Changes between GMP version 5.0.1 and 5.0.2 - - BUGS FIXED - * Many minor bugs related to portability fixed. - - * The support for HPPA 2.0N now works, after an assembly bug fix. - - * A test case type error has been fixed. The symptom of this bug was - spurious 'make check' failures. - - SPEEDUPS - * None, except indirectly through recognition of new CPUs. - - FEATURES - * Fat builds are now supported for 64-bit x86 processors also under Darwin. - - MISC - * None. - - -Changes between GMP version 5.0.0 and 5.0.1 - - BUGS FIXED - * Fat builds fixed. - - * Fixed crash for huge multiplies when old FFT_TABLE2 type of parameter - selection tables' sentinel was smaller than multiplied operands. - - * The solib numbers now reflect the removal of the documented but preliminary - mpn_bdivmod function; we correctly flag incompatibility with GMP 4.3. GMP - 5.0.0 has this wrong, and should perhaps be uninstalled to avoid confusion. - - SPEEDUPS - * Multiplication of large numbers has indirectly been sped up through better - FFT tuning and processor recognition. Since many operations depend on - multiplication, there will be a general speedup. - - FEATURES - * More Core i3, i5 an Core i7 processor models are recognised. - - * Fixes and workarounds for Mac OS quirks should make this GMP version build - using many of the different versions of "Xcode". - - MISC - * The amount of scratch memory needed for multiplication of huge numbers has - been reduced substantially (but is still larger than in GMP 4.3.) - - * Likewise, the amount of scratch memory needed for division of large numbers - has been reduced substantially. - - * The FFT tuning code of tune/tuneup.c has been completely rewritten, and - new, large FFT parameter selection tables are provided for many machines. - - * Upgraded to the latest autoconf, automake, libtool. - - -Changes between GMP version 4.3.X and 5.0.0 - - BUGS FIXED - * None (contains the same fixes as release 4.3.2). - - SPEEDUPS - * Multiplication has been overhauled: - (1) Multiplication of larger same size operands has been improved with - the addition of two new Toom functions and a new internal function - mpn_mulmod_bnm1 (computing U * V mod (B^n-1), B being the word base. - This latter function is used for the largest products, waiting for a - better Schoenhage-Strassen U * V mod (B^n+1) implementation. - (2) Likewise for squaring. - (3) Multiplication of different size operands has been improved with the - addition of many new Toom function, and by selecting underlying - functions better from the main multiply functions. - - * Division and mod have been overhauled: - (1) Plain "schoolbook" division is reimplemented using faster quotient - approximation. - (2) Division Q = N/D, R = N mod D where both the quotient and remainder - are needed now runs in time O(M(log(N))). This is an improvement of - a factor log(log(N)) - (3) Division where just the quotient is needed is now O(M(log(Q))) on - average. - (4) Modulo operations using Montgomery REDC form now take time O(M(n)). - (5) Exact division Q = N/D by means of mpz_divexact has been improved - for all sizes, and now runs in time O(M(log(N))). - - * The function mpz_powm is now faster for all sizes. Its complexity has - gone from O(M(n)log(n)m) to O(M(n)m) where n is the size of the modulo - argument and m is the size of the exponent. It is also radically - faster for even modulus, since it now partially factors such modulus - and performs two smaller modexp operations, then uses CRT. - - * The internal support for multiplication yielding just the lower n limbs - has been improved by using Mulders' algorithm. - - * Computation of inverses, both plain 1/N and 1/N mod B^n have been - improved by using well-tuned Newton iterations, and wrap-around - multiplication using mpn_mulmod_bnm1. - - * A new algorithm makes mpz_perfect_power_p asymptotically faster. - - * The function mpz_remove uses a much faster algorithm, is better tuned, - and also benefits from the division improvements. - - * Intel Atom and VIA Nano specific optimisations. - - * Plus hundreds of smaller improvements and tweaks! - - FEATURES - * New mpz function: mpz_powm_sec for side-channel quiet modexp - computations. - - * New mpn functions: mpn_sqr, mpn_and_n, mpn_ior_n, mpn_xor_n, mpn_nand_n, - mpn_nior_n, mpn_xnor_n, mpn_andn_n, mpn_iorn_n, mpn_com, mpn_neg, - mpn_copyi, mpn_copyd, mpn_zero. - - * The function mpn_tdiv_qr now allows certain argument overlap. - - * Support for fat binaries for 64-bit x86 processors has been added. - - * A new type, mp_bitcnt_t for bignum bit counts, has been introduced. - - * Support for Windows64 through mingw64 has been added. - - * The cofactors of mpz_gcdext and mpn_gcdext are now more strictly - normalised, returning to how GMP 4.2 worked. (Note that also release - 4.3.2 has this change.) - - MISC - * The mpn_mul function should no longer be used for squaring, - instead use the new mpn_sqr. - - * The algorithm selection has been improved, the number of thresholds have - more than doubled, and the tuning and use of existing thresholds have - been improved. - - * The tune/speed program can measure many of new functions. - - * The mpn_bdivmod function has been removed. We do not consider this an - incompatible change, since the function was marked as preliminary. - - * The testsuite has been enhanced in various ways. +Verbatim copying and distribution of this entire article is permitted +in any medium, provided this notice is preserved. Changes between GMP version 4.3.1 and 4.3.2 @@ -589,7 +139,7 @@ Changes between GMP version 4.2.1 and 4.2.2 Features: * New support for x86_64-solaris * New, rudimentary support for x86-apple-darwin and x86_64-apple-darwin. - (Please see https://gmplib.org/macos.html for more information.) + (Please see http://gmplib.org/macos.html for more information.) Changes between GMP version 4.2 and 4.2.1 |