IntersectMBO / IntersectMBO/io-sim

Make it possible to generate schedules

Open
#125 5 comments 0 reactions 0 assignees View on GitHub
enhancement
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.