-
Notifications
You must be signed in to change notification settings - Fork 567
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Yves/wellrng512a support #23032
Draft
demerphq
wants to merge
7
commits into
blead
Choose a base branch
from
yves/wellrng512a_support
base: blead
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Yves/wellrng512a support #23032
Conversation
This file contains 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
05b9934
to
a2de3a5
Compare
If we have a symbol which has a different definition depending on a c pre-processor condition, include the condition when de-duping. For instance if in intrpvar.h we had #ifdef HAS_QUAD PERLVAR(I, SomeField, U64TYPE) #else PERLVAR(I, SomeField, U32) #endif We don't want to throw warnings about duplicate SomeField, as only one of the definitions will be active at a time. This includes changes to regen/HeaderParser.pl to facilitate this, by adding a cond_as_str() method to the HeaderLine objects.
I am not sure what we should do with the internal_random_state in perl_clone() but it should either be treated the same as random_state or it should be independently intialized somehow. We shouldn't leave the states content undefined.
This makes it so that the internal RNG support functions and variables are named the same as their non-internal equivalents, but with _internal as a suffix. This should make it easier to find them. For instance PL_internal_random_state will not show up when searching for PL_random_state, but PL_random_state_internal will.
Same for &PL_random_state_internal, which gets replaced with PL_PTR_RANDOM_STATE_INTERNAL. We also create a similar define for &(proto_perl->Irandom_state) which gets replaced by PL_PTR_PROTO_RANDOM_STATE, and &(proto_perl->Irandom_state_internal) which gets replaced by PL_PTR_PROTO_RANDOM_STATE_INTERNAL.
We provide our own RNG, we do not need any information from Configure about the system RNG. Configure basically should not be involved in such things, just like it isn't with regard to hash functions. This is a placeholder commit so that Tux knows what need to be done and for discussion purposes. It isn't intended for direct merging. The change needs to be done the normal way for Configure changes.
a370c14
to
7f22457
Compare
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.
This patch sequence adds support for building Perl with WELLRNG512a, a modern random number generator by Matsumoto (co-creator of the Mersenne Twister), L’Ecuyer (a major RNG researcher), and Panneton. It is considered superior to the MT family of RNG's. It is suitable for 32 bit and 64 bit builds.
See:
https://en.wikipedia.org/wiki/Well_equidistributed_long-period_linear
http://www.iro.umontreal.ca/~lecuyer/myftp/papers/wellrng.pdf
You can access the new behavior by adding
-Accflags=-DPERL_USE_WELL512A_RNG
to your favourite Configure invocation. Eg: