Skip to content

v0.6.0

Choose a tag to compare

@sylvestre sylvestre released this 22 Sep 06:46
· 20 commits to main since this release

num-prime v0.6.0 is mostly a factorization release: big integers no longer fall off a performance cliff, and inputs that used to be reported as unfactorable now complete.

  • Factorization correctness: each cofactor now gets its own Pollard's rho budget, so large semiprime products are no longer returned as failed remainders
  • Factorization performance: Montgomery arithmetic over 64-bit limbs beyond u128 (a 512-bit product of thirteen ~2^39 primes goes from 5.3s to 1.1s), perfect-power peeling, Hart's one-line and SQUFOF restricted to <= 64-bit targets, and ~25% faster factorize64
  • Bug fixes: zero handling in the primitive sqrt_exact
  • Dependencies: criterion 5, num-bigint 0.4.8, lru 0.16.4, either 1.18, bitvec 1.1.1, getrandom 0.4.3, crossbeam-epoch 0.9.21, anyhow 1.0.103; unused dependencies removed and direct-minimal-versions made to work
  • CI: minimal-versions job, updated Clippy configuration, checkout without credential persistence, CodSpeed v5, codecov v7
  • Licensing: COPYRIGHT file added and LICENSE updated

3 new contributors joined the project.

What's Changed

  • ci: use shorter workflow name by @cakebaker in #63
  • Optimize factorization hot paths (~25% speedup on factorize64) by @sylvestre in #67
  • chore(deps): update codecov/codecov-action action to v6 by @renovate[bot] in #68
  • chore(deps): update rust crate codspeed-criterion-compat to v4.4.1 by @xtqqczze in #66
  • Update Rust crate lru to v0.16.4 by @renovate[bot] in #72
  • Update Rust crate rand_core to v0.10.1 by @renovate[bot] in #71
  • chore(deps): removed unused deps by @xtqqczze in #76
  • Update Rust crate criterion to v4.5.0 by @renovate[bot] in #79
  • Bump rand from 0.8.5 to 0.8.6 by @dependabot[bot] in #81
  • Update Rust crate criterion to v4.6.0 by @renovate[bot] in #82
  • chore(deps): update rust crate rand to v0.8.6 by @xtqqczze in #78
  • Cargo.toml: sync profile with coreutils by @oech3 in #69
  • Add COPYRIGHT file and update LICENSE by @xtqqczze in #84
  • Update Rust crate either to v1.16.0 by @renovate[bot] in #86
  • Update Rust crate criterion to v4.7.0 by @renovate[bot] in #87
  • Update codecov/codecov-action action to v7 by @renovate[bot] in #88
  • Update actions/checkout action to v7 by @renovate[bot] in #89
  • Update Rust crate criterion to v5 by @renovate[bot] in #91
  • Update Rust crate criterion to v5.0.1 by @renovate[bot] in #92
  • Bump anyhow from 1.0.101 to 1.0.103 by @cakebaker in #94
  • Update Rust crate either to v1.17.0 by @renovate[bot] in #99
  • Update Rust crate num-bigint to v0.4.8 by @xtqqczze in #101
  • Update CodSpeedHQ/action action to v5 by @renovate[bot] in #102
  • ci: disable credential persistence in checkout steps by @xtqqczze in #85
  • chore: reformat TOML files by @xtqqczze in #83
  • Update Rust crate num-integer to v0.1.47 by @renovate[bot] in #104
  • ci: fix indentation by @cakebaker in #103
  • Update Rust crate either to v1.18.0 by @renovate[bot] in #106
  • Fix typo in README.md by @krakow10 in #108
  • fix: handle zero in primitive sqrt_exact by @haroune-dev in #109
  • ci: update configuration for Clippy by @xtqqczze in #100
  • Bump crossbeam-epoch from 0.9.18 to 0.9.21 by @cakebaker in #98
  • Update Rust crate criterion to v5.0.2 by @renovate[bot] in #112
  • Bump getrandom from 0.4.1 to 0.4.3 by @cakebaker in #110
  • Update Rust crate bitvec to v1.1.1 by @renovate[bot] in #90
  • deps: update for direct-minimal-versions by @xtqqczze in #65
  • bench: cover the factorizations that should take seconds by @sylvestre in #113
  • factor: fix incomplete and pathologically slow factorizations by @sylvestre
  • factor: use Montgomery arithmetic beyond u128 by @sylvestre

New Contributors

Full Changelog: v0.5.0...v0.6.0