[ANN] termination of maintenance: sfmt-erlang and tinymt-erlang

Kenji Rikitake kenji@REDACTED
Thu Jan 20 02:56:29 CET 2022

This is the public announcement of maintenance termination of sfmt-erlang
and tinymt-erlang software.

I, Kenji Rikitake, will no longer maintain sfmt-erlang and tinymt-erlang
pseudo-random number generators (PRNGs) for Erlang.

PRNG algorithms of SFMT and TinyMT had their advantage in 2010 when I first
started implementing them to Erlang/OTP as alternative modules of the
random module (deprecated since OTP 18). After the emergence of xorshift,
xoroshiro, and xoshiro algorithms by Sebastiano Vigna, however, the
advantage of SFMT and TinyMT has been mostly eradicated. Please refer to
the following paper preprint by Sebastiano Vigna for the further
explanation of the known issues of SFMT and TinyMT:

Sebastiano Vigna, “It is high time we let go of the Mersenne Twister”,
arXiv, 2019, eprint: 1910.06437, https://arxiv.org/abs/1910.06437

Fortunately, the rand module, current PRNG of Erlang/OTP, has already
employed variations of xorshift and xoroshiro algorithms called exsss and
exro928ss, with the help of Sebastiano Vigna and the effort of Raimo
Niskanen and other people in the OTP Team. So the general alternative
solution is to use the rand module functions.

sfmt-erlang has the NIFs to generate many random numbers at once. For
writing PRNG NIFs, the following repository will be helpful:

* Vigna has provided CC0-licensed reference implementations in C at his
website: https://prng.di.unimi.it
* An MIT-licensed C++ header implementation set of Vigna’s algorithms is
available here: https://github.com/Reputeless/Xoshiro-cpp

However, it would help if you remembered that Erlang/OTP rand module uses
the 58-bit specialized version of Vigna’s PRNG algorithms, so the C and C++
implementations which are shown above are not a direct replacement of the
rand module functions.

The following related repositories are in archive mode.

* sfmt-erlang: https://github.com/jj1bdx/sfmt-erlang
* tinymt-erlang: https://github.com/jj1bdx/tinymt-erlang
* tinymtdc-longbatch: https://github.com/jj1bdx/tinymtdc-longbatch

Kenji Rikitake
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20220120/3a6003aa/attachment.htm>

More information about the erlang-questions mailing list