5.2 KiB
5.2 KiB
Release 0.2.2 (2018-12-14)
- The
Rootsimplementations now use better initial guesses. - Fixed
to_signed_bytes_*for some positive numbers, where the most-significant byte is0x80and the rest are0.
Contributors: @cuviper, @leodasvacas
Release 0.2.1 (2018-11-02)
RandBigIntnow usesRng::fill_bytesto improve performance, instead of repeatedgen::<u32>calls. The also affects the implementations of the otherrandtraits. This may potentially change the values produced by some seeded RNGs on previous versions, but the values were tested to be stable withChaChaRng,IsaacRng, andXorShiftRng.BigIntandBigUintnow implementnum_integer::Roots.BigIntandBigUintnow implementnum_traits::Pow.BigIntandBigUintnow implement operators with 128-bit integers.
Contributors: @cuviper, @dignifiedquire, @mancabizjak, @Robbepop, @TheIronBorn, @thomwiggers
Release 0.2.0 (2018-05-25)
Enhancements
BigIntandBigUintnow implementProductandSumfor iterators of any item that we canMulandAdd, respectively. For example, a factorial can now be simply:let f: BigUint = (1u32..1000).product();BigIntnow supports two's-complement logic operations, namelyBitAnd,BitOr,BitXor, andNot. These act conceptually as if each number had an infinite prefix of0or1bits for positive or negative.BigIntnow supports assignment operators likeAddAssign.BigIntandBigUintnow support conversions withi128andu128, if sufficient compiler support is detected.BigIntandBigUintnow implement rand'sSampleUniformtrait, and a customRandomBitsdistribution samples by bit size.- The release also includes other miscellaneous improvements to performance.
Breaking Changes
num-bigintnow requires rustc 1.15 or greater.- The crate now has a
stdfeature, and won't build without it. This is in preparation for someday supporting#![no_std]withalloc. - The
serdedependency has been updated to 1.0, still disabled by default. Therustc-serializecrate is no longer supported bynum-bigint. - The
randdependency has been updated to 0.5, now disabled by default. This requires rustc 1.22 or greater forrand's own requirement. Shr for BigIntnow rounds down rather than toward zero, matching the behavior of the primitive integers for negative values.ParseBigIntErroris now an opaque type.- The
big_digitmodule is no longer public, nor are theBigDigitandDoubleBigDigittypes andZERO_BIG_DIGITconstant that were re-exported in the crate root. Public APIs which deal in digits, likeBigUint::from_slice, will now always be base-u32.
Contributors: @clarcharr, @cuviper, @dodomorandi, @tiehuis, @tspiteri
Release 0.1.44 (2018-05-14)
- Division with single-digit divisors is now much faster.
- The README now compares
ramp,rug,rust-gmp, andapint.
Contributors: @cuviper, @Robbepop
Release 0.1.43 (2018-02-08)
- The new
BigInt::modpowperforms signed modular exponentiation, using the existingBigUint::modpowand rounding negatives similar tomod_floor.
Contributors: @cuviper
Release 0.1.42 (2018-02-07)
- num-bigint now has its own source repository at rust-num/num-bigint.
lcmnow avoids creating a large intermediate product.gcdnow uses Stein's algorithm with faster shifts instead of division.randsupport is now extended to 0.4 (while still allowing 0.3).
Contributors: @cuviper, @Emerentius, @ignatenkobrain, @mhogrefe
Prior releases
No prior release notes were kept. Thanks all the same to the many contributors that have made this crate what it is!