Provisional: extensible random generators and splitting for Gecode 7 (breaking changes) - #241
Draft
zayenz wants to merge 7 commits into
Draft
Provisional: extensible random generators and splitting for Gecode 7 (breaking changes)#241zayenz wants to merge 7 commits into
zayenz wants to merge 7 commits into
Conversation
added 6 commits
September 10, 2026 10:04
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Provisional draft — future breaking-change release only
Add modern, user-extensible random number generators with reproducible stream splitting. Splittable SplitMix replaces the old default; xorshift64* provides a smaller-state alternative. The build selects the default engine, while users can supply their own engines through the generic branching APIs.
This is a provisional Gecode 7 design, intended only for a future release that explicitly permits breaking changes. It is not ready for merge and must not ship in Gecode 6.x or any compatibility-preserving release. The default engine, APIs, and performance tradeoffs remain under review.
Generator and search behavior
Source and binary compatibility, seeded sequences, bounded-draw consumption, random search trees, and randomized choice archives change. No legacy sequence mode is provided. Version and ABI-number changes remain release preparation.
The custom-engine example, engine contracts, migration guidance, and measurements are in examples/random-engine.cpp, docs/random.md, and plans/random.md.
Measured tradeoffs
Local arm64 macOS Release measurements against main (6b7de57), five measured repetitions after warmup:
These are local measurements, not general performance guarantees. RNG replay along a recorded path does not guarantee parallel scheduling or solution order.
Verification and cleanup
Other platforms' CI has not been verified locally. Passing these checks does not change the provisional draft status.