-
Notifications
You must be signed in to change notification settings - Fork 21

Description
I understand that running IOSim s
computations is purely deterministic: Every run will trigger the exact same scheduling of threads. This is great as it provides fast execution, but unless one wants to invest time and energy in IOSimPOR
it does not actually help us spot the kind of problems in concurrent code stemming from "surprising" reordering of executions.
It seems to me that quick-checking code with IOSim
would be even more powerful if the runtime was able to randomly select among runnable actions, generating and covering more possible execution schedules. I have only a vague understanding of io-sim's internals but this could be exposed at the API level through a function with an additional argument, like:
runSimTraceRandom :: forall g a . RandomGen g => g -> (forall s . IOSim s a) -> Trace a
Are you willing to implement it?
- Are you? 😃