Changelog for io-sim-1.9.0.0
Revision history of io-sim
next release
Breaking changes
Non-breaking changes
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.