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
nativegenerator against others (#953)
8.1.0
Features
- 99b7b16 โจ Add
uniformFloat64distribution (#907) - ea5bca4 โจ Add
uniformFloat32distribution (#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.x | 8.0 |
|---|---|
unsafeUniformIntDistribution | uniformInt |
unsafeUniformBigIntDistribution | uniformBigInt |
uniformIntDistribution | purify(uniformInt) |
uniformBigIntDistribution | purify(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
fromStatein dedicated export (#848) - 67cb28c ๐ฅ Make unsafe the default (#846)
- a51c7df ๐ฅ Drop pure versions, rename others (#833)
- 423e6d6 ๐ฅ Drop main entry point (#832)
- a766210 ๐ฅ Move
rngas first argument (#831)
Features
- 5c3c618 โก๏ธ Drop useless array access in
mersenne(#894) - 34406f8 โจ Add
jumptocongruential32(#882) - b0262ca โก๏ธ Faster
uniformInton large ranges (#869) - bd76869 โจ Add
purifyutils - 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
assertbyexpect(#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)