ArgParse modifies global random state?
Closed this issue · 2 comments
veddox commented
I've just noticed that calling parse_args()
changes the state of the GLOBAL_RNG
:
julia> using ArgParse, Random
julia> Random.seed!(1)
TaskLocalRNG()
julia> rand()
0.07336635446929285 # <- expected value when seeding the GLOBAL_RNG with 1
julia> Random.seed!(1)
TaskLocalRNG()
julia> s = ArgParseSettings()
ArgParseSettings(
...
)
julia> rand()
0.07336635446929285 # <- this is still correct
julia> Random.seed!(1)
TaskLocalRNG()
julia> parse_args(s)
Dict{String, Any}()
julia> rand()
0.6702639583444937 # <- not the expected value
Is there a reason for this? Since ArgParse doesn't even import Random, I don't understand why this happens, but it's giving me some problems with my own code.
veddox commented
I think this has to do with a Julia issue, where the state of the RNG is changed when a new task is spawned: JuliaLang/julia#49110
ArgParse does work with tasks (see here), so this is probably the root cause of the issue. If so, it should be fixed with Julia 1.10.
carlobaldassi commented
Indeed this was fixed in Julia