Changelog for io-sim-1.9.1.0
Revision history of io-sim
1.9.1.0
Non-breaking changes
- Reverted rounding of
si-timersAPI to microsecond to matchIObehaviour. It may cause surprising issues downstream when time is not advancing as expected because of rounding to0.
1.9.0.0
The version is bumped to 1.9 in sync with io-classes-1.9.
Non-breaking changes
- Added support for unique symbol generation à la
Data.Unique. - Removed a misleading internal comment.
- Fixed error handling in
traceResultso one can combine it (or ather APIs which are based on it:runSim,runSimOrThrow, orrunSimStrictShutdown) withwithinordiscardAfterfromQuickCheck. See the test suite how to usediscardAfterwithIOSim. - Round
si-timersAPI (MonadDelay,MonadTimer) to microsecond to matchIObehaviour.
1.8.0.1
- Added support for
ghc-9.2.
1.8.0.0
- Provided
MonadTraceMVar - Renamed
InspectMonadtoInspectMonadSTM - Support
threadLabel(io-classes-1.8) IOSimPOR'sEffecttraces now will correctly show labels on read/writtenTVars.Showinstance forScheduleModnow printsThreadIds in a slightly nicer way, matching the way those steps would be traced in theSimTrace.- Implement
MonadLabelledMVarinstance for(IOSim s) TVarIdis now a sum type with one constructor perTVarrole, e.g.TVar,TMVar,MVarand a few others - except forTChan.- A blocked
takeTVaris now safe in the presence of exceptions. It will relay the value to other waiting threads. - Faster handling of timeouts and timers by using a more efficient internal representation.
- The signature of:
selectTraceEvents',selectTraceEventsDynamic',selectTraceEventsDynamicWithTime',selectTraceEventsSay'andselectTraceEventsSayWithTime'is more general. These functions now accepts trace with any result, rather than one that finishes withSimResult.
- More polymorphic
ppTrace_type signature. - Fixed
tryReadTBQueuewhen returningNothing. - Support ghc 9.12
- Export
TimefromControl.Monad.IOSim.
1.6.0.0
- Upgraded to
io-classes-1.6.0.0
1.5.0.0
Breaking changes
- Generalised the type of
traceSelectTraceEvents& co.
Non-breaking changes
- Added
writeTMVartoMonadSTMinstance for(IOSim s). - Fixes IOSimPOR test failure (see issue #154).
- Reverted commit 4534b6eae64072a87bd81584f479a123681358a3 which uses
unsafePerformIOinstead of ST, to regain lazyness on infinite simulations. - Added a test to check for lazyness on infinite simulations
1.4.1.0
Non-breaking changes
- QuickCheck monadic combinators:
monadicIOSim,monadicIOSim_andrunIOSimGen(#140). - New dependency on
primitive - Provides an instance for
PrimMonad, giving access to most functionality from theprimitivepackage (#141). - Prevented STM waking up threads blocked on
threadDelay(#142).
1.4.0.0
Breaking changes
- Removed
EventTimerUpdatedconstructor (not used anymore).
Non-breaking changes
Alternative&MonadPlusinstances forIOSim.- Fixed
flushTQueueimplemetation.
1.3.1.0
Non-breaking changes
- Optimised
io-simperformance (improved memory footprint). - Fixed a bug in
io-sim-por:execAtomically'should not commit tvars.
1.3.0.0
Breaking changes
MainReturn,MainExceptionand the pattern synonymsTraceMainReturn,TraceMainExceptionchanged their signature. They will now also show the main thread id.- Renamed
ThreadIdtoIOSimThreadIdto avoid a clash withThreadIdassociated type family ofMonadFork. It makes it much simpler to paste failingScheduleControlinghcior tests. BlockedReasonwas modified:BlockedOnOtherwas removed, in favour ofBlockedOnDelayandBlockOnThrowTo.- The
Failuretype (for example returned byrunSim) now also contains a constructor for internal failures. This improved error reporting when there's a bug inIOSimPOR. Currently it's only used by some of the assertions inIOSimPOR.
Non-breaking changes
- Refactored the internal API to avoid
unsafePerformIO. - Fixed bugs which lead to discovery of schedules which are impossible to run.
- Added haddocks, refactored the code base to improve readability.
- Fixed reported
stepinEventTxWakup - Added debugging information schedule, (
explorationDebugLeveloption). Mostly useful for debuggingIOSimPORitself. This information will containsEffect, discovered races and schedules. - Addded or improved pretty printers for
SimTrace. Among other changes, a racyStepId:(RacyThreadId [1,2], 2), is now pretty printed asThread {1,2}.2, a non racy step is printed asThread [1,2].2. - Fixed trace of calls to the
deschedulefunction. - Exposed
Timeouttype as part of thenewTimeoutAPI. - When
explorationDebugLevelis set, avoid printing the same trace twice. - Reimplemented
labelTVarIOandtraceTVarIOinSTmonad, which simplifies trace of these calls. - Fixed
traceTVarforTVar's created withregisterDelay. - Added pretty printer for
SimResult, and other pretty printer improvements. - Support
ghc-9.8.
1.2.0.0
Breaking changes
selectTraceEvents,selectTraceEvents'catpure time of events.- Added select function which capture the time of the trace events:
selectTraceEventsDynamicWithTimeselectTraceEventsDynamicWithTime'selectTraceEventsSayWithTimeselectTraceEventsSayWithTime'
Non-breaking changes
- Provide
MonadInspectMVarinstance forIOSim.
- Added NFData & NoThunks instances for
ThreadId
1.1.0.0
Non-breaking changes
io-classes-1.1.0.0
1.0.0.1
Non-breaking changes
- Support
ghc-9.6.
1.0.0.0
Breaking changes
- Support refactored
MonadTimer, and newMonadTimerFancy,MonadTimeNSecmonad classes.
0.6.0.0
Breaking changes
- Added
TimeoutIdtoEventThreadDelayandEventThreadFiredevents.
Non-breaking changes
- Fixed
threadDelayin presence of asynchronous exceptions (inIOSimandIOSimPOR) (#80). - Fixed bug in
IOSim&IOSimPORwhich resulted in reusing existingThreadIds (#80).
0.5.0.0
MVartype family is not injective anymore.- Removed default implementation of
readMVarin theMonadMVartype class. - Moved
MVarDefaulttoio-simpackage.
0.4.0.0
- support
ghc-9.4(except on Windows input-output-hk/io-sim#51) MonadCatchinstance forSTM (IOSim s)monad- fixed
isEmptyTBQueeuDefault(thanks to @EMQ-YangM) - refactored internal implementation of timeouts, changed
SimEventTypeconstructors
0.3.0.0
- added
Functorinstance forSimResult - added
MonadFixinstance forSTM (IOSim s) - support
ghc-9.2&ghc-9.4
0.2.0.0
- First version published on Hackage.
- Depends on
io-classes-0.2.0.0.
0.1.0.0
- Initial version, not released on Hackage.