This RFC has been moved to Decline, as it is no longer needed due to changes in the proposal.
This is due to the historical background, starting with lcg.c / php_lcg.h, the first implementation of the linear congruential generator (LCG), followed by rand.c / php_rand.c, which calls the libc random number implementation, and the Mersenne Twister implementation. mt_rand.c / php_mt_rand.h, an implementation of the Mersenne Twister, and random.c / php_random.h, a CSPRNG implementation, respectively, in the ext/standard extension.
The rand.c / php_rand.h to call the libc implementation is no longer relevant due to its alias to the Mersenne Twister in PHP 7.1, and is left for compatibility only.
RNGs are a frequently used feature in various implementations, and it is suggested that RNG-related functionality be carved out of the ext/standard extension and kindly made into an ext/random extension to reduce complexity and allow for future extensibility.
Create a new ext/random extension and move all the following functions of the ext/standard extension.
Userland Functions:
Internal APIs:
These features are provided in a single random.c / php_random.h, and ext/random is always bundled with all builds of PHP, as is ext/standard.
In addition, header files containing the following contents will continue to be provided for extensions and downstream projects that previously depended on ext/standard features. These are a transitional measure until the next major version and will be removed in the future.
none
PHP 8.2
none
Will need to change the including header file.
none
none
none
none