coot
coot
@jasagredo we came up with an idea to add an operator: ```hs withRaces :: Sim s a -> Sim s a ``` which enables race discovery for thread that runs...
Hmm, I actually need to look at the default `IOSimPOR` scheduler if it will allow us to solve your issue.
I looked at [my presentation](https://coot.me/presentations/iosimpor.pdf). Each thread is rescheduled in these conditions (regardless if a thread is racy or not) * forking a new thread * thread termination * setting...
But it will deschedule the current thread and it might pick another one, isn't it?
`IOSim` scheduler runs a thread until it blocks, `IOSimPOR` uses different scheduler.
If we have `promptly :: IOSim s a -> IOSim s b -> IOSim s (a, b)` then the second argument, e.g. `IOSim s b`, could be non-atomic (e.g. run...
`IOSimPOR` is using: ```hs type RunQueue = OrdPSQ (Down IOSimThreadId) (Down IOSimThreadId) () ``` to pick the next thread to run. If a thread was forked in the previous step,...
There are two subtly different things: 1. forcing the scheduler to run something right after an action (which can be seen as extending the duration of a step) 2. not...
@dcoutts we already have a form of tracing in `IOSim`'s `STM` monad: [`traceSTM`](https://input-output-hk.github.io/io-sim/io-sim/Control-Monad-IOSim.html#v:traceSTM).
We also have [`MonadSay`](https://github.com/input-output-hk/io-sim/blob/b0a280e028775ebdb0c8b7f8675e71b49fc5c0ed/io-sim/src/Control/Monad/IOSim/Types.hs#L486-L487) instance for `STMSim` monad. Unfortunately, it's not discoverable in haddocks - at least I cannot find a list of instances for associated types.