[m-rev.] for post-commit review: add an arc4random() based system RNG implementation
Peter Wang
novalazy at gmail.com
Tue Feb 2 15:14:10 AEDT 2021
On Tue, 02 Feb 2021 00:51:58 +1100 Julien Fischer <jfischer at opturion.com> wrote:
>
> I assume no-one wants to run Mercury on old (circa 2014) versions of
> NetBSD or OpenBSD. The macOS stuff is a little ugly, but it will have
> to be that way until we drop support for 10.{9,10,11}.
>
> ------------------------------------------
>
> Add an arc4random() based system RNG implementation.
>
> library/random.system_rng.m:
> As above.
>
> Use the arc4random() based implementation on FreeBSD >= 12.0
> and macOS >= 10.12, falling back to the urandom approach on earlier
> versions.
>
> Always use the arc4random() approach on NetBSD and OpenBSD,
> both of which have used ChaCha20 in their implementation
> of arc4random() since 2014.
> @@ -142,6 +152,23 @@
>
> #if defined(__linux__) || defined(MR_SOLARIS) || defined(_AIX)
> #define ML_SYSRAND_IMPL_URANDOM
> +#elif defined(__OpenBSD__) || defined(__NetBSD__)
> + #define ML_SYSRAND_IMPL_ARC4RANDOM
> +#elif __FreeBSD__ >= 12
> + // arc4random() on FreeBSD used RC4 until version 12.
> + #define ML_SYSRAND_IMPL_ARC4RANDOM
> +#elif defined(__FreeBSD__)
> + #define ML_SYSRAND_IMPL_URANDOM
> +#elif defined(MR_MAC_OSX)
> + // arc4random() on macOS used RC4 until version 10.12.
> + // XXX this will be unnecessary when we stop supporting versions
> + // of macOS before 10.12.
> + #if defined(MAC_OS_X_VERSION_10_12) && \
> + MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
> + #define ML_SYSRAND_IMPL_ARC4RANDOM
You might want to escape the backslash there.
Otherwise it looks fine.
Peter
More information about the reviews
mailing list