Hi Internals.

I apologize for the discussion outside the ML. Here's a brief history.

https://github.com/php/php-src/pull/7079

- To test the implementation, I sent a Pull-Request to php-src on GitHub.
- An excellent point was made, and we ended up having a discussion about it
on GitHub.
- I was going to change the current implementation RFC to Under Discussion,
but decided against it.

Also, sorry for the delay in answering your questions. I am not very good
at English and it is taking me a long time.

The current implementation and RFC:

- https://github.com/php/php-src/pull/7079
- https://wiki.php.net/rfc/rng_extension

However, the implementation of this user-defined class is very ugly and we
intend to improve it as follows.

Before:
```php

class Random
{
    public function __construct(string $algo = RANDOM_XORSHIFT128PLUS, ?int
$seed = null) {}
    //....
}

class UserDefinedRandom extends Random
{
    protected function next(): int
    {
        return 1;
     }
}
```

After:
```php
interface RandomNumberGenerator
{
    public function generate(): int;
}


final class Random
{
    public function __construct(string|RandomNumberGenerator $algo =
RANDOM_XORSHIFT128PLUS, ?int $seed = null) {}
}
```

2021年5月26日(水) 0:35 Go Kudo <zeriyo...@gmail.com>:

> Hi, Thanks for the response.
>
> The RFC has been revised based on the points you pointed out.
>
> https://wiki.php.net/rfc/rng_extension
>
> The main changes are as follows:
>
> - Class name has been changed from `Randomizer` to `Random` .
> - Added a static method `getNonBiasedMax()` to get the safe range.
> - `int()` and `bytes()` have been renamed to `getInt()` and `getBytes()`
> for avoid future reserved words.
> - `getInt()` arguments no longer accept null.
> - `shuffle(array|string $target): array|string` has been separated into
> `arrayShuffle(array $array)` and `stringShuffle(string $string): string`
> for more comfortable static-analysis.
> - fix: php_random_algo struct (included uint64_t -> int64_t)
>
> Answer a few questions:
>
> > When $seed is null, what is used for the seed value?
>
> Depends on the algo's implementation, but basically it is using internal
> `php_random_int()`.
> It is similar to `mt_srand()` on PHP 8.1.
>
>
> https://github.com/php/php-src/commit/53ee3f7f897f7ee33a4c45210014648043386e13
>
> > Why cancelled RNG Extension?
>
> As a result of discussions during the draft, the functions became a single
> class and no longer need to be separated. The functionality for random
> numbers is now included in ext/standard and will conform to this. (e.g.
> rand.c random.c)
>
> > Deprecation
>
> Dropped in the last RFC update.
> These were premature and should not have been included with the RFCs that
> add new features.
>
> If the direction seems generally okay, I'd like to start implementing it
> to show more details.
>
> Regards,
> Go Kudo
>
> 2021年5月23日(日) 5:56 Go Kudo <zeriyo...@gmail.com>:
>
>> Hi, Internals and all participated in the previous discussion.
>>
>> RFCs have been cleaned up and the proposal has been substantially changed.
>>
>> https://wiki.php.net/rfc/rng_extension
>>
>> First of all, I apologize for not checking out the implementation of
>> password_hash(), which is a precedent to learn from.
>>
>> I think I've answered all the questions I've been getting on Open Issues.
>> If I have left anything out, please let me know.
>>
>> Regards,
>> Go Kudo
>>
>

Reply via email to