CHANGELOG 8.X

March 27, 2026 ยท View on GitHub

8.4.0

Features

  • c309120 โšก๏ธ Compress Mersenne jump coefficients (#970)

Fixes

  • c8ce85d ๐Ÿ‘ท Skip bench job on non-PR events (#968)

8.3.0

Features

  • cca8ab6 โšก๏ธ No compute at import time (pre-computed) (#959)
  • faf00dc โšก๏ธ Faster congruential32 with imul (#958)
  • 9e85ec7 โœจ Implement jump for mersenne (#947)

Fixes

  • 5c0d815 โœ… More benchmarks on generators (#961)
  • 3c578fd โœ… Default Vitest setup to interrupt fast-check (#957)
  • 7d0393a โœ… Rework benchmark on generators (#956)

8.2.0

Features

  • d9aa940 โšก Faster init for mersenne (#952)
  • 48b0393 โšก๏ธ Faster twist in mersenne (#951)
  • 95ff082 โšก๏ธ Less memory allocations for mersenne (#948)

Fixes

  • 40b4894 โœ… Compare native generator against others (#953)

8.1.0

Features

  • 99b7b16 โœจ Add uniformFloat64 distribution (#907)
  • ea5bca4 โœจ Add uniformFloat32 distribution (#906)

Fixes

  • eccea24 ๐Ÿ”จ Add utility script to list commits for changelog (#949)
  • 118db91 ๐Ÿ‘ท Reconfigure review agent (#939)
  • 5bc32e2 ๐Ÿ‘ท Delete claude-review.yml (#938)
  • eb7a2e3 ๐Ÿ‘ท Add review prompt to Claude review action (#937)
  • ba9a380 ๐Ÿ‘ท Refactor claude-review conditions and parameters (#936)
  • be8917e ๐Ÿ‘ท Fix plugins configuration in claude-review.yml (#935)
  • c751e31 ๐Ÿ‘ท Configure review agent (#934)
  • 0c85094 ๐Ÿ‘ท Reduce permissions and drop prompt (#933)
  • 1301a0f ๐Ÿ‘ท Add back hardcoded prompt (#932)
  • 7a138a3 ๐Ÿ‘ท Drop hardcoded prompt (#931)
  • afae304 ๐Ÿ‘ท Unlock permissions for reviews from Claude (#930)
  • 1758d7d ๐Ÿ‘ท Add Claude Review workflow for PR comments (#929)
  • b07989f ๐Ÿ”ง Change Claude flow to append (not replace) system prompt (#921)
  • 3f48c14 โœ… Check for missing imports in test-bundle (#920)
  • d623bb1 ๐Ÿ”ง Refactor Claude workflow configuration format (#919)
  • 9b8e092 ๐Ÿ”ง Change the model for Claude action (#916)
  • d37ebe3 ๐Ÿ”ง Refine the GH Action triggering Claude (#915)
  • 73ca19b โœ… Run distributions against native (#914)
  • 043ac19 ๐Ÿ‘ท Restrict Claude workflow to dubzzz actor only (#913)
  • 3c49194 ๐Ÿ‘ท Switch to OAuth for GH Action on Claude (#908)

8.0.0

Migration from 7.x to 8.0

No more main entry point โ€” Replace barrel imports with subpath imports:

-import { uniformIntDistribution, xoroshiro128plus } from 'pure-rand';
+import { uniformInt } from 'pure-rand/distribution/uniformInt';
+import { xoroshiro128plus } from 'pure-rand/generator/xoroshiro128plus';

rng is now the first argument โ€” All functions now take the generator as the first parameter:

-uniformIntDistribution(1, 6, rng);
+uniformInt(rng, 1, 6);

Functions mutate rng in-place by default โ€” The old "pure" functions (returning [value, nextRng] tuples) have been removed. Functions now directly return the generated value and mutate the generator. To get the old pure behavior, wrap with purify:

-const [value, nextRng] = uniformIntDistribution(1, 6, rng);
+import { purify } from 'pure-rand/utils/purify';
+const pureUniformInt = purify(uniformInt);
+const [value, nextRng] = pureUniformInt(rng, 1, 6);

Renamed distributions โ€” Pure distribution names have been shortened:

7.x8.0
unsafeUniformIntDistributionuniformInt
unsafeUniformBigIntDistributionuniformBigInt
uniformIntDistributionpurify(uniformInt)
uniformBigIntDistributionpurify(uniformBigInt)
uniformArrayIntDistribution / unsafeUniformArrayIntDistribution(removed)

fromState moved to dedicated exports โ€” Restoring a generator from its state now uses a separate function:

-import prand from 'pure-rand';
-const rng = prand.xoroshiro128plus.fromState(state);
+import { xoroshiro128plusFromState } from 'pure-rand/generator/xoroshiro128plus';
+const rng = xoroshiro128plusFromState(state);

Dedicated JumpableRandomGenerator type โ€” Generators supporting jump() now implement a separate JumpableRandomGenerator interface (extends RandomGenerator). If you need generators with jump() method, update the type:

-import type { RandomGenerator } from 'pure-rand/types/RandomGenerator';
+import type { JumpableRandomGenerator } from 'pure-rand/types/JumpableRandomGenerator';

Breaking Changes

  • 1838e5e ๐Ÿ’ฅ Drop uniformArrayInt (#868)
  • 09b403a ๐Ÿ’ฅ Introduce dedicated Jumpable type (#864)
  • 6b5dd37 ๐Ÿ’ฅ Move fromState in dedicated export (#848)
  • 67cb28c ๐Ÿ’ฅ Make unsafe the default (#846)
  • a51c7df ๐Ÿ’ฅ Drop pure versions, rename others (#833)
  • 423e6d6 ๐Ÿ’ฅ Drop main entry point (#832)
  • a766210 ๐Ÿ’ฅ Move rng as first argument (#831)

Features

  • 5c3c618 โšก๏ธ Drop useless array access in mersenne (#894)
  • 34406f8 โœจ Add jump to congruential32 (#882)
  • b0262ca โšก๏ธ Faster uniformInt on large ranges (#869)
  • bd76869 โœจ Add purify utils
  • c651a0d โšก Slightly faster UniformArrayIntDistribution (#763)
  • 7a07f86 โšก Slightly faster UniformBigIntDistribution (#764)
  • bd0d721 โšก Slightly faster UniformIntDistribution

Fixes

  • abe1b84 ๐Ÿ“ Replace Twitter share badge with Bluesky in README (#900)
  • 950e5ca ๐Ÿ‘ท Rework formatting of bundle report (#903)
  • 484a59e ๐Ÿ”จ Add Claude settings with pnpm hooks and post-edit automation (#896)
  • dbe3a36 ๐Ÿ‘ท Add OTP authentication to npm package publishing (#897)
  • 59e7eea ๐Ÿ‘ท Add main branch bundle comparison to size reports (#890)
  • b2c6036 ๐Ÿ“ Extract comparison section from README into separate document (#880)
  • 10da9d1 ๐Ÿ”ง Pinning Claude action to 1.0.51 (#888)
  • e90191a ๐Ÿ”ง Restrict Claude Code to dubzzz (#887)
  • bc2ba70 ๐Ÿ”ง Add Claude Code GitHub Actions workflow (#886)
  • 2249bc7 ๐Ÿ“ Fix GitHub Actions badge in README (#881)
  • 33052bc ๐Ÿšš Rename generator files to match generator function names (#876)
  • b44c246 ๐Ÿ”ฅ Drop useless .npmignore (#878)
  • 6781423 ๐Ÿ”ฅ Drop unwantingly committed file (#877)
  • 7467833 ๐Ÿ‘ท Add diff column to package size comment tables (#875)
  • f3a95ea ๐Ÿ‘ท Merge per-file size tables into single combined table in PR comment (#874)
  • 797bfbd ๐Ÿ‘ท Add package size reporting on PRs with ๐Ÿ—œ๏ธ emoji (#873)
  • 958aba8 โœ… Publish coverage (#872)
  • 969beaf โœ… Only check on last LTS and latest (#871)
  • 38c3eb8 โœ… Add checks of bundle integrity against Node 12.17 (#870)
  • e53608f ๐Ÿ‘ท Send bench results on PR (#860)
  • 00ebe83 โœ… Rework bench on distributions (#859)
  • 762eb02 ๐Ÿ”ง Explicitely list all exports (#856)
  • 7d19082 ๐Ÿ‘ท End CI jobs with a terminal job (#855)
  • f5770fb โœ… Benchmark checks in CI (#853)
  • 0787104 โœ… Collocate tests with sources (#852)
  • aedace9 โ™ป๏ธ Consider full bigint support (#851)
  • 5cfb9c8 ๐Ÿ”ง Switch to "isolatedDeclarations" (#850)
  • c0cdfaa โœ… Replace assert by expect (#849)
  • 2cfdaad ๐Ÿ”ง Modern config for TypeScript (#847)
  • eb9a7e8 ๐Ÿ‘ท Setup publint in CI (#844)
  • 0b4affc ๐Ÿ‘ท Add package preview in CI (#843)
  • c1dd44f ๐Ÿ”ง Simpler exports in package.json (#840)
  • 366172b ๐Ÿ‘ท Check no dedupe in CI (#842)
  • c11afd9 ๐Ÿ”ง Drop useless deps (#841)
  • 56d4098 ๐Ÿ‘ท Drop legacy build scripts (#836)
  • 9a9ed2e ๐Ÿ‘ท Adopt longer term build script (#834)
  • 3745f0f โœ… Cover more versions of node (#829)
  • 5f95bf1 ๐Ÿ“ Drop Snyk badge (#830)
  • fc6e12e ๐Ÿ‘ท Strictly lock deps in GH Actions (#828)
  • 8eccd3b ๐Ÿ‘ท Run tests against self (no build) (#827)
  • f87f382 ๐Ÿ‘ท Move to rolldown (#824)
  • be1bac5 โ™ป๏ธ Rewrite without static (#825)
  • f2fde1c ๐Ÿ‘ท Move to oxfmt (#823)
  • 3ff5ccb ๐Ÿ‘ท Move to pnpm (#821)
  • 3785897 โœ… Move to Vitest (#820)
  • 43afceb โœ… Add legacy checks for jump (#762)
  • 2571c6d โœ… Add legacy checks for array distributions (#761)
  • cccf4c4 โœ… Add legacy checks for other generators (#760)