• Show log

    Commit

  • Hash : 3c53796c
    Author : Edward Thomson
    Date : 2022-02-07T19:38:32

    rand: introduce git_rand PRNG
    
    Introduce `git_rand`, a PRNG based on xoroshiro256**, a fast,
    all-purpose pseudo-random number generator: https://prng.di.unimi.it
    
    The PRNG will be seeded by the system's entropy store when possible,
    falling back to current time and system data (pid, uptime, etc).
    Inspiration for this was taken from libressl, but since our PRNG is
    not used for cryptographic purposes (and indeed currently only generates
    a unique temp file name that is written in a protected directory),
    this should be more than sufficient.
    
    Our implementation of xoroshiro256** was taken almost strictly from
    the original author's sources, but was tested against PractRand to
    ensure that there were no foolish mistranslations:
    
    ```
    RNG_test using PractRand version 0.94
    RNG = RNG_stdin64, seed = unknown
    test set = core, folding = standard (64 bit)
    
    rng=RNG_stdin64, seed=unknown
    length= 256 megabytes (2^28 bytes), time= 2.9 seconds
      no anomalies in 210 test result(s)
    
    rng=RNG_stdin64, seed=unknown
    length= 512 megabytes (2^29 bytes), time= 6.2 seconds
      no anomalies in 226 test result(s)
    
    rng=RNG_stdin64, seed=unknown
    length= 1 gigabyte (2^30 bytes), time= 12.7 seconds
      no anomalies in 243 test result(s)
    
    rng=RNG_stdin64, seed=unknown
    length= 2 gigabytes (2^31 bytes), time= 25.4 seconds
      no anomalies in 261 test result(s)
    
    rng=RNG_stdin64, seed=unknown
    length= 4 gigabytes (2^32 bytes), time= 50.6 seconds
      no anomalies in 277 test result(s)
    
    rng=RNG_stdin64, seed=unknown
    length= 8 gigabytes (2^33 bytes), time= 104 seconds
      no anomalies in 294 test result(s)
    ```