[Development] What to do with qrand/qsrand?
Thiago Macieira
thiago.macieira at intel.com
Tue Jun 13 21:52:34 CEST 2017
I've changed almost all uses of qrand in Qt sources to QRandomGenerator and
eliminated the use of qsrand. That is actually the biggest advantage: not
needing to seed the generator. I was quite surprised how much use of qrand we
have in our own source code, and not just in examples. (See commits with
Change-Id Icd0e0d4b27cb4e5eb892fffd14b5285d43f4afbf).
Obviously those functions need to remain in Qt 5, but what should we do to
them long-term? See
https://lxr.kde.org/ident?_i=qrand&_remember=1
With this many references, I'm not sure we should even add a QT_DEPRECATED
warning to it, since that would make trigger-happy "warning--" developers in
KDE wholesale moving to something else.
Options:
1) do nothing, leave as-is (in Qt 6, use thread_local)
2) deprecate and provide no replacement. That is, tell people to either:
- use QRandomGenerator if they need true random, non-bulk
- use <random> engines if they need bulk
- use <stdlib.h> rand() if they need C library compatibility
3) deprecate and provide a thread-safe PRNG, which can be used in bulk
a) with no seed; or
b) with an access to seeding
4) same as #3, but actually use the qrand/qsrand names
for (a), qsrand would be empty
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
More information about the Development
mailing list