1# Release 0.2.6 (2020-01-27) 2 3- [Fix the promotion of negative `isize` in `BigInt` assign-ops][133]. 4 5**Contributors**: @cuviper, @HactarCE 6 7[133]: https://github.com/rust-num/num-bigint/pull/133 8 9# Release 0.2.5 (2020-01-09) 10 11- [Updated the `autocfg` build dependency to 1.0][126]. 12 13**Contributors**: @cuviper, @tspiteri 14 15[126]: https://github.com/rust-num/num-bigint/pull/126 16 17# Release 0.2.4 (2020-01-01) 18 19- [The new `BigUint::to_u32_digits` method][104] returns the number as a 20 little-endian vector of base-2<sup>32</sup> digits. The same method on 21 `BigInt` also returns the sign. 22- [`BigUint::modpow` now applies a modulus even for exponent 1][113], which 23 also affects `BigInt::modpow`. 24- [`BigInt::modpow` now returns the correct sign for negative bases with even 25 exponents][114]. 26 27[104]: https://github.com/rust-num/num-bigint/pull/104 28[113]: https://github.com/rust-num/num-bigint/pull/113 29[114]: https://github.com/rust-num/num-bigint/pull/114 30 31**Contributors**: @alex-ozdemir, @cuviper, @dingelish, @Speedy37, @youknowone 32 33# Release 0.2.3 (2019-09-03) 34 35- [`Pow` is now implemented for `BigUint` exponents][77]. 36- [The optional `quickcheck` feature enables implementations of `Arbitrary`][99]. 37- See the [full comparison][compare-0.2.3] for performance enhancements and more! 38 39[77]: https://github.com/rust-num/num-bigint/pull/77 40[99]: https://github.com/rust-num/num-bigint/pull/99 41[compare-0.2.3]: https://github.com/rust-num/num-bigint/compare/num-bigint-0.2.2...num-bigint-0.2.3 42 43**Contributors**: @cuviper, @lcnr, @maxbla, @mikelodder7, @mikong, 44@TheLetterTheta, @tspiteri, @XAMPPRocky, @youknowone 45 46# Release 0.2.2 (2018-12-14) 47 48- [The `Roots` implementations now use better initial guesses][71]. 49- [Fixed `to_signed_bytes_*` for some positive numbers][72], where the 50 most-significant byte is `0x80` and the rest are `0`. 51 52[71]: https://github.com/rust-num/num-bigint/pull/71 53[72]: https://github.com/rust-num/num-bigint/pull/72 54 55**Contributors**: @cuviper, @leodasvacas 56 57# Release 0.2.1 (2018-11-02) 58 59- [`RandBigInt` now uses `Rng::fill_bytes`][53] to improve performance, instead 60 of repeated `gen::<u32>` calls. The also affects the implementations of the 61 other `rand` traits. This may potentially change the values produced by some 62 seeded RNGs on previous versions, but the values were tested to be stable 63 with `ChaChaRng`, `IsaacRng`, and `XorShiftRng`. 64- [`BigInt` and `BigUint` now implement `num_integer::Roots`][56]. 65- [`BigInt` and `BigUint` now implement `num_traits::Pow`][54]. 66- [`BigInt` and `BigUint` now implement operators with 128-bit integers][64]. 67 68**Contributors**: @cuviper, @dignifiedquire, @mancabizjak, @Robbepop, 69@TheIronBorn, @thomwiggers 70 71[53]: https://github.com/rust-num/num-bigint/pull/53 72[54]: https://github.com/rust-num/num-bigint/pull/54 73[56]: https://github.com/rust-num/num-bigint/pull/56 74[64]: https://github.com/rust-num/num-bigint/pull/64 75 76# Release 0.2.0 (2018-05-25) 77 78### Enhancements 79 80- [`BigInt` and `BigUint` now implement `Product` and `Sum`][22] for iterators 81 of any item that we can `Mul` and `Add`, respectively. For example, a 82 factorial can now be simply: `let f: BigUint = (1u32..1000).product();` 83- [`BigInt` now supports two's-complement logic operations][26], namely 84 `BitAnd`, `BitOr`, `BitXor`, and `Not`. These act conceptually as if each 85 number had an infinite prefix of `0` or `1` bits for positive or negative. 86- [`BigInt` now supports assignment operators][41] like `AddAssign`. 87- [`BigInt` and `BigUint` now support conversions with `i128` and `u128`][44], 88 if sufficient compiler support is detected. 89- [`BigInt` and `BigUint` now implement rand's `SampleUniform` trait][48], and 90 [a custom `RandomBits` distribution samples by bit size][49]. 91- The release also includes other miscellaneous improvements to performance. 92 93### Breaking Changes 94 95- [`num-bigint` now requires rustc 1.15 or greater][23]. 96- [The crate now has a `std` feature, and won't build without it][46]. This is 97 in preparation for someday supporting `#![no_std]` with `alloc`. 98- [The `serde` dependency has been updated to 1.0][24], still disabled by 99 default. The `rustc-serialize` crate is no longer supported by `num-bigint`. 100- [The `rand` dependency has been updated to 0.5][48], now disabled by default. 101 This requires rustc 1.22 or greater for `rand`'s own requirement. 102- [`Shr for BigInt` now rounds down][8] rather than toward zero, matching the 103 behavior of the primitive integers for negative values. 104- [`ParseBigIntError` is now an opaque type][37]. 105- [The `big_digit` module is no longer public][38], nor are the `BigDigit` and 106 `DoubleBigDigit` types and `ZERO_BIG_DIGIT` constant that were re-exported in 107 the crate root. Public APIs which deal in digits, like `BigUint::from_slice`, 108 will now always be base-`u32`. 109 110**Contributors**: @clarcharr, @cuviper, @dodomorandi, @tiehuis, @tspiteri 111 112[8]: https://github.com/rust-num/num-bigint/pull/8 113[22]: https://github.com/rust-num/num-bigint/pull/22 114[23]: https://github.com/rust-num/num-bigint/pull/23 115[24]: https://github.com/rust-num/num-bigint/pull/24 116[26]: https://github.com/rust-num/num-bigint/pull/26 117[37]: https://github.com/rust-num/num-bigint/pull/37 118[38]: https://github.com/rust-num/num-bigint/pull/38 119[41]: https://github.com/rust-num/num-bigint/pull/41 120[44]: https://github.com/rust-num/num-bigint/pull/44 121[46]: https://github.com/rust-num/num-bigint/pull/46 122[48]: https://github.com/rust-num/num-bigint/pull/48 123[49]: https://github.com/rust-num/num-bigint/pull/49 124 125# Release 0.1.44 (2018-05-14) 126 127- [Division with single-digit divisors is now much faster.][42] 128- The README now compares [`ramp`, `rug`, `rust-gmp`][20], and [`apint`][21]. 129 130**Contributors**: @cuviper, @Robbepop 131 132[20]: https://github.com/rust-num/num-bigint/pull/20 133[21]: https://github.com/rust-num/num-bigint/pull/21 134[42]: https://github.com/rust-num/num-bigint/pull/42 135 136# Release 0.1.43 (2018-02-08) 137 138- [The new `BigInt::modpow`][18] performs signed modular exponentiation, using 139 the existing `BigUint::modpow` and rounding negatives similar to `mod_floor`. 140 141**Contributors**: @cuviper 142 143[18]: https://github.com/rust-num/num-bigint/pull/18 144 145 146# Release 0.1.42 (2018-02-07) 147 148- [num-bigint now has its own source repository][num-356] at [rust-num/num-bigint][home]. 149- [`lcm` now avoids creating a large intermediate product][num-350]. 150- [`gcd` now uses Stein's algorithm][15] with faster shifts instead of division. 151- [`rand` support is now extended to 0.4][11] (while still allowing 0.3). 152 153**Contributors**: @cuviper, @Emerentius, @ignatenkobrain, @mhogrefe 154 155[home]: https://github.com/rust-num/num-bigint 156[num-350]: https://github.com/rust-num/num/pull/350 157[num-356]: https://github.com/rust-num/num/pull/356 158[11]: https://github.com/rust-num/num-bigint/pull/11 159[15]: https://github.com/rust-num/num-bigint/pull/15 160 161 162# Prior releases 163 164No prior release notes were kept. Thanks all the same to the many 165contributors that have made this crate what it is! 166 167