Re: [RFC] Object-scope RNG implementation
| From: | Go Kudo | Date: | Sun, 17 Jan 2021 11:02:51 +0000 |
| Subject: | Re: [RFC] Object-scope RNG implementation | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-112912@lists.php.net to get a copy of this message | ||
Updated the RFC and fixed the implementation.
Also made some additions to the RFC about when this feature might be useful..
RFC: https://wiki.php.net/rfc/object_scope_prng
Implementation PR: https://github.com/php/php-src/pull/6568 (All CI
passed)
The main points are as follows:
- The implementation now meets all requirements. (maybe)
- Implemented MT19937, which is compatible with PHP standard MT. The
consistency of these is ensured by tests.
- The implementation is now what we used to call TypeII.
- All RNG implementations can now be inherited like regular classes. Use
faster calls only if the class is an internal class.
- The implementation has been heavily modified and the quality of the code
has been improved.
Currently, there are a few concerns:
- MT19937 returns a signed 32bit number as a result of the
next() method;
the mt_rand() function returns a bit-shifted unsigned 31bit number, so the
results are not identical.
- You can get the equivalent result with `$rng->next() << 1 &
PHP_INT_MAX, but maybe you should have a nextUnsigned31()` method.
- Currently, the test uses $rng->next() << 1 & PHP_INT_MAX.
- The implementation of MT19937 is redundant. This can be merged.
Anyway, I think the code is finally ready for review.
Once that is done, we will start voting on RFCs.
Regards,
Go Kudo
2021年1月9日(土) 19:00 Go Kudo <zeriyoshi@gmail..com>:
> Hi internals.
>
> I think I'm ready to discuss this RFC.
> https://wiki.php.net/rfc/object_scope_prng
>
> Previous internals thread: https://externals.io/message/112525
>
> Now is the time to let me know what you think.
>
> Regards,
> Go Kudo
>