Bug 6593 – final class random generators?

Status
NEW
Severity
enhancement
Priority
P4
Component
phobos
Product
D
Version
D2
Platform
All
OS
All
Creation time
2011-09-02T02:30:49Z
Last change time
2024-12-01T16:14:20Z
Assigned to
No Owner
Creator
bearophile_hugs
Moved to GitHub: phobos#9910 →

Comments

Comment #0 by bearophile_hugs — 2011-09-02T02:30:49Z
This is a _potential_ enhancement request. A wrong D2 program: import std.stdio, std.random; void foo(RND)(RND rnd) { foreach (i; 0 .. 5) write(uniform(0, 10, rnd), " "); writeln(); } void main() { auto rnd = Xorshift(1); foo(rnd); foo(rnd); } DMD 2.054 output: 3 1 2 7 5 3 1 2 7 5 The mistake is a missing ref, that causes foo to not return an updated random generator, so it always generate the same random values: void foo(RND)(ref RND rnd) { To avoid this bug (that I think is common enough), I suggest to experiment if it's performance-wide possibile to turn all random generators into reference things, that is final class instances, that don't require that "ref".
Comment #1 by bearophile_hugs — 2011-12-05T04:09:43Z
See also issue 7067
Comment #2 by greensunny12 — 2017-07-11T18:36:29Z
Joe has done an excellent talk about this problem on DConf15: http://dconf.org/2015/talks/wakeling.html
Comment #3 by robert.schadek — 2024-12-01T16:14:20Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/phobos/issues/9910 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB