IntersectMBO / IntersectMBO/io-sim
Make it possible to generate schedules
- Dominant language
- Haskell
- Stars
- 54
- Forks
- 25
- Avg merge
- 3h 9m
- Merged PRs (30d)
- 1
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?**
* [x] Are you? :smiley:
Contributor guide
Assessment
This issue has not been assessed yet.