GMP «Arithmetic without limitations» GMP incompatible changes
Last modified: 2020-05-09

Considered change Motive S B
Remove old_size argument from gmp_realloc and gmp_free cleanness; less confusing interface; very slight speedup
Somehow extend allocation interface to support efficient _mpz_newalloc performance; useless to have realloc copy data which will not be used
Clean up gmp_randstate_t struct from apparent mpz dependencies, unused fields cleanness; memory use; allow randstate-based mpn functions
Add return value to mpz_sqrt (analogous to mpz_root) usefulness
Add return value to mpz_gcd and mpz_gcdext, to indicate if inputs are coprime. Allow null gcd output argument. usefulness; for usecases which don't care about the actual gcd, e.g., mpz_invert
Clean up *_str functions to forbid spaces sense
Allow for mpz operands of up to 250 by combining the _mp_size and _mp_alloc fieds into one 64-bit bitfield, encoding _mp_alloc as a custom float. usefulness
Add unsigned long long functions, mpX_func_uj. (Note that this requires C99 for library compilation, while we should allow user code to be compiled by any C90 compiler but then #define away the uj interfaces.) usefulness
Consider making mp_bitcnt_t a 64-bit integer also on 32-bit hosts. avoiding overflow for certain interfaces for otherwise in-range numbers
Consider changing return value for gmp_*printf* from int to long. Likewise, change * width arguments' type. allow printing of huge numbers while still returning sensible values.