dejafu 2.4.0.5 → 2.4.0.6
raw patch · 6 files changed
+290/−246 lines, 6 filesdep ~containersPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: containers
API changes (from Hackage documentation)
- Test.DejaFu.Conc: data MaskingState
+ Test.DejaFu.Conc: data () => MaskingState
- Test.DejaFu.Refinement: class Listable a
+ Test.DejaFu.Refinement: class () => Listable a
Files
- CHANGELOG.rst +278/−236
- README.markdown +1/−1
- Test/DejaFu.hs +1/−1
- Test/DejaFu/Conc/Internal/Common.hs +1/−0
- Test/DejaFu/Conc/Internal/Program.hs +1/−0
- dejafu.cabal +8/−8
CHANGELOG.rst view
@@ -7,6 +7,22 @@ .. _PVP: https://pvp.haskell.org/ +2.4.0.6 (2024-12-11)+--------------------++* Git: :tag:`dejafu-2.4.0.6`+* Hackage: :hackage:`dejafu-2.4.0.6`++**Contributors:** :u:`telser` (:pull:`417`).++Miscellaneous+~~~~~~~~~~~~~++* Update documentation link in ``Test.DejaFu``.+* Fix GHC compatibility warning.+* The upper bound on :hackage:`containers` is <0.8.++ 2.4.0.5 (2023-06-17) -------------------- @@ -130,9 +146,10 @@ * Thread action constructors for the ``MonadConc`` ``getMaskingState`` function:- * ``Test.DejaFu.Types.ThreadAction``, ``GetMaskingState``- * ``Test.DejaFu.Types.Lookahead``, ``WillGetMaskingState`` + * ``Test.DejaFu.Types.ThreadAction``, ``GetMaskingState``+ * ``Test.DejaFu.Types.Lookahead``, ``WillGetMaskingState``+ Miscellaneous ~~~~~~~~~~~~~ @@ -185,51 +202,58 @@ Added ~~~~~ -* The ``Test.DejaFu.Types.MonadDejaFu`` typeclass, containing the- primitives needed to run a concurrent program. There are instances- for:- * ``IO``, which is probably the ``MonadConc`` instance people used- previously, so there is no breaking change there.- * ``CatchT (ST t)``, meaning that concurrent programs can be run- without ``IO`` once more.+* The ``Test.DejaFu.Types.MonadDejaFu`` typeclass, containing the primitives+ needed to run a concurrent program. There are instances for: -* Thread action constructors for ``MonadConc``- ``supportsBoundThreads`` function:- * ``Test.DejaFu.Types.ThreadAction``, ``SupportsBoundThreads``- * ``Test.DejaFu.Types.Lookahead``, ``WillSupportsBoundThreads``+ * ``IO``, which is probably the ``MonadConc`` instance people used previously,+ so there is no breaking change there.+ * ``CatchT (ST t)``, meaning that concurrent programs can be run without+ ``IO`` once more. +* Thread action constructors for ``MonadConc`` ``supportsBoundThreads``+ function:++ * ``Test.DejaFu.Types.ThreadAction``, ``SupportsBoundThreads``+ * ``Test.DejaFu.Types.Lookahead``, ``WillSupportsBoundThreads``+ Changed ~~~~~~~ -* Many functions which had a ``MonadConc`` constraint now have a- ``MonadDejaFu`` constraint:- * In ``Test.DejaFu``- * ``autocheck``- * ``autocheckWay``- * ``autocheckWithSettings``- * ``dejafu``- * ``dejafuWay``- * ``dejafuWithSettings``- * ``dejafus``- * ``dejafusWay``- * ``dejafusWithSettings``- * ``runTest``- * ``runTestWay``- * ``runTestWithSettings``- * In ``Test.DejaFu.Conc``- * ``runConcurrent``- * ``recordSnapshot``- * ``runSnapshot``- * In ``Test.DejaFu.SCT``- * ``runSCT``- * ``resultsSet``- * ``runSCT'``- * ``resultsSet'``- * ``runSCTWithSettings``- * ``resultsSetWithSettings``- * ``runSCTWithSettings'``- * ``resultsSetWithSettings'``+* Many functions which had a ``MonadConc`` constraint now have a ``MonadDejaFu``+ constraint: + * In ``Test.DejaFu``++ * ``autocheck``+ * ``autocheckWay``+ * ``autocheckWithSettings``+ * ``dejafu``+ * ``dejafuWay``+ * ``dejafuWithSettings``+ * ``dejafus``+ * ``dejafusWay``+ * ``dejafusWithSettings``+ * ``runTest``+ * ``runTestWay``+ * ``runTestWithSettings``++ * In ``Test.DejaFu.Conc``++ * ``runConcurrent``+ * ``recordSnapshot``+ * ``runSnapshot``++ * In ``Test.DejaFu.SCT``++ * ``runSCT``+ * ``resultsSet``+ * ``runSCT'``+ * ``resultsSet'``+ * ``runSCTWithSettings``+ * ``resultsSetWithSettings``+ * ``runSCTWithSettings'``+ * ``resultsSetWithSettings'``+ Miscellaneous ~~~~~~~~~~~~~ @@ -260,27 +284,30 @@ * The ``Program`` types and their constructors (re-exported from ``Test.DejaFu``):- * ``Test.DejaFu.Conc.Program``- * ``Test.DejaFu.Conc.Basic``- * ``Test.DejaFu.Conc.WithSetup``- * ``Test.DejaFu.Conc.WithSetupAndTeardown``- * ``Test.DejaFu.Conc.withSetup``- * ``Test.DejaFu.Conc.withTeardown``- * ``Test.DejaFu.Conc.withSetupAndTeardown`` + * ``Test.DejaFu.Conc.Program``+ * ``Test.DejaFu.Conc.Basic``+ * ``Test.DejaFu.Conc.WithSetup``+ * ``Test.DejaFu.Conc.WithSetupAndTeardown``+ * ``Test.DejaFu.Conc.withSetup``+ * ``Test.DejaFu.Conc.withTeardown``+ * ``Test.DejaFu.Conc.withSetupAndTeardown``+ * The ``Invariant`` type and associated functions (re-exported from ``Test.DejaFu``):- * ``Test.DejaFu.Conc.Invariant``- * ``Test.DejaFu.Conc.registerInvariant``- * ``Test.DejaFu.Conc.inspectIORef``- * ``Test.DejaFu.Conc.inspectMVar``- * ``Test.DejaFu.Conc.inspectTVar`` + * ``Test.DejaFu.Conc.Invariant``+ * ``Test.DejaFu.Conc.registerInvariant``+ * ``Test.DejaFu.Conc.inspectIORef``+ * ``Test.DejaFu.Conc.inspectMVar``+ * ``Test.DejaFu.Conc.inspectTVar``+ * New snapshotting functions:- * ``Test.DejaFu.Conc.Snapshot``- * ``Test.DejaFu.Conc.recordSnapshot``- * ``Test.DejaFu.Conc.runSnapshot`` + * ``Test.DejaFu.Conc.Snapshot``+ * ``Test.DejaFu.Conc.recordSnapshot``+ * ``Test.DejaFu.Conc.runSnapshot``+ * ``Test.DejaFu.Settings.llengthBound``, which now applies to all ways of testing. @@ -290,15 +317,16 @@ * ``Test.DejaFu.runTestWithSettings`` function. * A simplified form of the concurrency state:- * ``Test.DejaFu.Types.ConcurrencyState``- * ``Test.DejaFu.Types.isBuffered``- * ``Test.DejaFu.Types.numBuffered``- * ``Test.DejaFu.Types.isFull``- * ``Test.DejaFu.Types.canInterrupt``- * ``Test.DejaFu.Types.canInterruptL``- * ``Test.DejaFu.Types.isMaskedInterruptible``- * ``Test.DejaFu.Types.isMaskedUninterruptible`` + * ``Test.DejaFu.Types.ConcurrencyState``+ * ``Test.DejaFu.Types.isBuffered``+ * ``Test.DejaFu.Types.numBuffered``+ * ``Test.DejaFu.Types.isFull``+ * ``Test.DejaFu.Types.canInterrupt``+ * ``Test.DejaFu.Types.canInterruptL``+ * ``Test.DejaFu.Types.isMaskedInterruptible``+ * ``Test.DejaFu.Types.isMaskedUninterruptible``+ Changed ~~~~~~~ @@ -309,76 +337,84 @@ return a representative trace for each unique condition. * Functions which took a ``ConcT`` now take a ``Program pty``:- * ``Test.DejaFu.autocheck``- * ``Test.DejaFu.autocheckWay``- * ``Test.DejaFu.autocheckWithSettings``- * ``Test.DejaFu.dejafu``- * ``Test.DejaFu.dejafuWay``- * ``Test.DejaFu.dejafuWithSettings``- * ``Test.DejaFu.dejafus``- * ``Test.DejaFu.dejafusWay``- * ``Test.DejaFu.dejafusWithSettings``- * ``Test.DejaFu.runTest``- * ``Test.DejaFu.runTestWay``- * ``Test.DejaFu.runTestWithSettings``- * ``Test.DejaFu.Conc.runConcurrent``- * ``Test.DejaFu.SCT.runSCT``- * ``Test.DejaFu.SCT.resultsSet``- * ``Test.DejaFu.SCT.runSCT'``- * ``Test.DejaFu.SCT.resultsSet'``- * ``Test.DejaFu.SCT.runSCTWithSettings``- * ``Test.DejaFu.SCT.resultsSetWithSettings``- * ``Test.DejaFu.SCT.runSCTWithSettings'``- * ``Test.DejaFu.SCT.resultsSetWithSettings'`` + * ``Test.DejaFu.autocheck``+ * ``Test.DejaFu.autocheckWay``+ * ``Test.DejaFu.autocheckWithSettings``+ * ``Test.DejaFu.dejafu``+ * ``Test.DejaFu.dejafuWay``+ * ``Test.DejaFu.dejafuWithSettings``+ * ``Test.DejaFu.dejafus``+ * ``Test.DejaFu.dejafusWay``+ * ``Test.DejaFu.dejafusWithSettings``+ * ``Test.DejaFu.runTest``+ * ``Test.DejaFu.runTestWay``+ * ``Test.DejaFu.runTestWithSettings``+ * ``Test.DejaFu.Conc.runConcurrent``+ * ``Test.DejaFu.SCT.runSCT``+ * ``Test.DejaFu.SCT.resultsSet``+ * ``Test.DejaFu.SCT.runSCT'``+ * ``Test.DejaFu.SCT.resultsSet'``+ * ``Test.DejaFu.SCT.runSCTWithSettings``+ * ``Test.DejaFu.SCT.resultsSetWithSettings``+ * ``Test.DejaFu.SCT.runSCTWithSettings'``+ * ``Test.DejaFu.SCT.resultsSetWithSettings'``+ * ``Test.DejaFu.Conc.ConcT`` is an alias for ``Program Basic``. * ``Test.DejaFu.Types.Bounds``:- * Removed ``boundLength`` field. + * Removed ``boundLength`` field.+ * ``Test.DejaFu.Types.Condition``:- * Added ``InvariantFailure`` constructor- * Removed ``STMDeadlock`` constructor + * Added ``InvariantFailure`` constructor+ * Removed ``STMDeadlock`` constructor+ * ``Test.DejaFu.Types.Error``:- * Removed ``NestedSubconcurrency``, ``MultithreadedSubconcurrency``,- and ``LateDontCheck`` constructors. + * Removed ``NestedSubconcurrency``, ``MultithreadedSubconcurrency``, and+ ``LateDontCheck`` constructors.+ * ``Test.DejaFu.Types.Lookahead``:- * Added ``WillRegisterInvariant`` constructor- * Removed ``WillSubconcurrency``, ``WillStopSubconcurrency``, and- ``WillDontCheck`` constructors + * Added ``WillRegisterInvariant`` constructor+ * Removed ``WillSubconcurrency``, ``WillStopSubconcurrency``, and+ ``WillDontCheck`` constructors+ * ``Test.DejaFu.Types.ThreadAction``:- * Added ``RegisterInvariant`` constructor- * Removed ``Subconcurrency``, ``StopSubconcurrency``, and- ``DontCheck`` constructors + * Added ``RegisterInvariant`` constructor+ * Removed ``Subconcurrency``, ``StopSubconcurrency``, and+ ``DontCheck`` constructors+ Removed ~~~~~~~ * The deprecated functions:- * ``Test.DejaFu.dejafuDiscard``- * ``Test.DejaFu.SCT.runSCTDiscard``- * ``Test.DejaFu.SCT.runSCTDiscard'``- * ``Test.DejaFu.SCT.resultsSetDiscard``- * ``Test.DejaFu.SCT.resultsSetDiscard'``- * ``Test.DejaFu.SCT.sctBound``- * ``Test.DejaFu.SCT.sctBoundDiscard``- * ``Test.DejaFu.SCT.sctUniformRandom``- * ``Test.DejaFu.SCT.sctUniformRandomDiscard``- * ``Test.DejaFu.SCT.sctWeightedRandom``- * ``Test.DejaFu.SCT.sctWeightedRandomDiscard`` + * ``Test.DejaFu.dejafuDiscard``+ * ``Test.DejaFu.SCT.runSCTDiscard``+ * ``Test.DejaFu.SCT.runSCTDiscard'``+ * ``Test.DejaFu.SCT.resultsSetDiscard``+ * ``Test.DejaFu.SCT.resultsSetDiscard'``+ * ``Test.DejaFu.SCT.sctBound``+ * ``Test.DejaFu.SCT.sctBoundDiscard``+ * ``Test.DejaFu.SCT.sctUniformRandom``+ * ``Test.DejaFu.SCT.sctUniformRandomDiscard``+ * ``Test.DejaFu.SCT.sctWeightedRandom``+ * ``Test.DejaFu.SCT.sctWeightedRandomDiscard``+ * The deprecated type ``Test.DejaFu.Types.Failure`` * Old snapshotting functions:- * ``Test.DejaFu.Conc.DCSnapshot``- * ``Test.DejaFu.Conc.runForDCSnapshot``- * ``Test.DejaFu.Conc.runWithDCSnapshot``- * ``Test.DejaFu.Conc.canDCSnapshot``- * ``Test.DejaFu.Conc.threadsFromDCSnapshot`` + * ``Test.DejaFu.Conc.DCSnapshot``+ * ``Test.DejaFu.Conc.runForDCSnapshot``+ * ``Test.DejaFu.Conc.runWithDCSnapshot``+ * ``Test.DejaFu.Conc.canDCSnapshot``+ * ``Test.DejaFu.Conc.threadsFromDCSnapshot``+ * ``Test.DejaFu.Conc.dontCheck`` * ``Test.DejaFu.Conc.subconcurrency``@@ -399,9 +435,10 @@ * ``Test.DejaFu.Types.Error`` for internal errors and misuses, with predicates:- * ``Test.DejaFu.Types.isSchedulerError``- * ``Test.DejaFu.Types.isIncorrectUsage`` + * ``Test.DejaFu.Types.isSchedulerError``+ * ``Test.DejaFu.Types.isIncorrectUsage``+ * Deprecated ``Test.DejaFu.Types.Failure`` type synonym for ``Condition``. @@ -643,9 +680,9 @@ * GHC 7.10 support is dropped. Dependency lower bounds are: - * :hackage:`base`: 4.9- * :hackage:`concurrency`: 1.5- * :hackage:`transformers`: 0.5+ * :hackage:`base`: 4.9+ * :hackage:`concurrency`: 1.5+ * :hackage:`transformers`: 0.5 * The upper bound on :hackage:`concurrency` is 1.6. @@ -690,8 +727,8 @@ * (:issue:`183`) SCT settings for trace simplification: - * ``Test.DejaFu.Settings.lequality``- * ``Test.DejaFu.Settings.lsimplify``+ * ``Test.DejaFu.Settings.lequality``+ * ``Test.DejaFu.Settings.lsimplify`` * (:pull:`248`) ``Test.DejaFu.Utils.toTIdTrace`` to extract thread IDs from a trace.@@ -717,23 +754,23 @@ * (:pull:`246`) ``Generic`` instances for: - * ``Test.DejaFu.Types.ThreadId``- * ``Test.DejaFu.Types.CRefId``- * ``Test.DejaFu.Types.MVarId``- * ``Test.DejaFu.Types.TVarId``- * ``Test.DejaFu.Types.Id``- * ``Test.DejaFu.Types.ThreadAction``- * ``Test.DejaFu.Types.Lookahead``- * ``Test.DejaFu.Types.TAction``- * ``Test.DejaFu.Types.Decision``- * ``Test.DejaFu.Types.Failure``- * ``Test.DejaFu.Types.Bounds``- * ``Test.DejaFu.Types.PreemptionBound``- * ``Test.DejaFu.Types.FairBound``- * ``Test.DejaFu.Types.LengthBound``- * ``Test.DejaFu.Types.Discard``- * ``Test.DejaFu.Types.MemType``- * ``Test.DejaFu.Types.MonadFailException``+ * ``Test.DejaFu.Types.ThreadId``+ * ``Test.DejaFu.Types.CRefId``+ * ``Test.DejaFu.Types.MVarId``+ * ``Test.DejaFu.Types.TVarId``+ * ``Test.DejaFu.Types.Id``+ * ``Test.DejaFu.Types.ThreadAction``+ * ``Test.DejaFu.Types.Lookahead``+ * ``Test.DejaFu.Types.TAction``+ * ``Test.DejaFu.Types.Decision``+ * ``Test.DejaFu.Types.Failure``+ * ``Test.DejaFu.Types.Bounds``+ * ``Test.DejaFu.Types.PreemptionBound``+ * ``Test.DejaFu.Types.FairBound``+ * ``Test.DejaFu.Types.LengthBound``+ * ``Test.DejaFu.Types.Discard``+ * ``Test.DejaFu.Types.MemType``+ * ``Test.DejaFu.Types.MonadFailException`` * (:pull:`246`) ``NFData`` instance for ``Test.DejaFu.Types.MonadFailException``@@ -808,49 +845,55 @@ * (:pull:`238`) A record-based approach to SCT configuration: - * ``Test.DejaFu.Settings``- (re-exported from ``Test.Dejafu`` and ``Test.DejaFu.SCT``)- * ``Test.DejaFu.Settings.Settings``- * ``Test.DejaFu.Settings.defaultSettings``- * ``Test.DejaFu.Settings.fromWayAndMemType``- * Lenses:- * ``Test.DejaFu.Settings.lway``- * ``Test.DejaFu.Settings.lmemtype``- * ``Test.DejaFu.Settings.ldiscard``- * ``Test.DejaFu.Settings.learlyExit``- * ``Test.DejaFu.Settings.ldebugShow``- * ``Test.DejaFu.Settings.ldebugPrint``- * Lens helpers:- * ``Test.DejaFu.Settings.get``- * ``Test.DejaFu.Settings.set``- * Runners:- * ``Test.DejaFu.SCT.runSCTWithSettings``- * ``Test.DejaFu.SCT.runSCTWithSettings'``- * ``Test.DejaFu.SCT.resultsSetWithSettings``- * ``Test.DejaFu.SCT.resultsSetWithSettings'``+ * ``Test.DejaFu.Settings`` (re-exported from ``Test.Dejafu`` and+ ``Test.DejaFu.SCT``)+ * ``Test.DejaFu.Settings.Settings``+ * ``Test.DejaFu.Settings.defaultSettings``+ * ``Test.DejaFu.Settings.fromWayAndMemType`` + * Lenses:++ * ``Test.DejaFu.Settings.lway``+ * ``Test.DejaFu.Settings.lmemtype``+ * ``Test.DejaFu.Settings.ldiscard``+ * ``Test.DejaFu.Settings.learlyExit``+ * ``Test.DejaFu.Settings.ldebugShow``+ * ``Test.DejaFu.Settings.ldebugPrint``++ * Lens helpers:++ * ``Test.DejaFu.Settings.get``+ * ``Test.DejaFu.Settings.set``++ * Runners:++ * ``Test.DejaFu.SCT.runSCTWithSettings``+ * ``Test.DejaFu.SCT.runSCTWithSettings'``+ * ``Test.DejaFu.SCT.resultsSetWithSettings``+ * ``Test.DejaFu.SCT.resultsSetWithSettings'``+ * (:pull:`238`) Settings-based test functions: - * ``Test.DejaFu.autocheckWithSettings``- * ``Test.DejaFu.dejafuWithSettings``- * ``Test.DejaFu.dejafusWithSettings``- * ``Test.DejaFu.runTestWithSettings``+ * ``Test.DejaFu.autocheckWithSettings``+ * ``Test.DejaFu.dejafuWithSettings``+ * ``Test.DejaFu.dejafusWithSettings``+ * ``Test.DejaFu.runTestWithSettings`` Deprecated ~~~~~~~~~~ * (:pull:`238`) SCT function variants: - * ``Test.DejaFu.SCT.runSCTDiscard``- * ``Test.DejaFu.SCT.resultSetDiscard``- * ``Test.DejaFu.SCT.runSCTDiscard'``- * ``Test.DejaFu.SCT.resultSetDiscard'``- * ``Test.DejaFu.SCT.sctBound``- * ``Test.DejaFu.SCT.sctBoundDiscard``- * ``Test.DejaFu.SCT.sctUniformRandom``- * ``Test.DejaFu.SCT.sctUniformRandomDiscard``- * ``Test.DejaFu.SCT.sctWeightedRandom``- * ``Test.DejaFu.SCT.sctWeightedRandomDiscard``+ * ``Test.DejaFu.SCT.runSCTDiscard``+ * ``Test.DejaFu.SCT.resultSetDiscard``+ * ``Test.DejaFu.SCT.runSCTDiscard'``+ * ``Test.DejaFu.SCT.resultSetDiscard'``+ * ``Test.DejaFu.SCT.sctBound``+ * ``Test.DejaFu.SCT.sctBoundDiscard``+ * ``Test.DejaFu.SCT.sctUniformRandom``+ * ``Test.DejaFu.SCT.sctUniformRandomDiscard``+ * ``Test.DejaFu.SCT.sctWeightedRandom``+ * ``Test.DejaFu.SCT.sctWeightedRandomDiscard`` * (:pull:`238`) The ``Test.DejaFu.Defaults`` module. Import ``Test.DejaFu.Settings`` instead.@@ -906,18 +949,18 @@ * (:pull:`219`) The testing-only ``Test.DejaFu.Conc.dontCheck`` function, and associated definitions: - * ``Test.DejaFu.Types.DontCheck``- * ``Test.DejaFu.Types.WillDontCheck``- * ``Test.DejaFu.Types.IllegalDontCheck``- * ``Test.DejaFu.Types.isIllegalDontCheck``+ * ``Test.DejaFu.Types.DontCheck``+ * ``Test.DejaFu.Types.WillDontCheck``+ * ``Test.DejaFu.Types.IllegalDontCheck``+ * ``Test.DejaFu.Types.isIllegalDontCheck`` * (:pull:`219`) A snapshotting approach based on ``Test.DejaFu.Conc.dontCheck``: - * ``Test.DejaFu.Conc.runForDCSnapshot``- * ``Test.DejaFu.Conc.runWithDCSnapshot``- * ``Test.DejaFu.Conc.canDCSnapshot``- * ``Test.DejaFu.Conc.threadsFromDCSnapshot``+ * ``Test.DejaFu.Conc.runForDCSnapshot``+ * ``Test.DejaFu.Conc.runWithDCSnapshot``+ * ``Test.DejaFu.Conc.canDCSnapshot``+ * ``Test.DejaFu.Conc.threadsFromDCSnapshot`` Changed ~~~~~~~@@ -1002,10 +1045,10 @@ * (:pull:`145`) Thread action and lookahead values for bound threads: - * ``Test.DejaFu.Types.ForkOS``- * ``Test.DejaFu.Types.IsCurrentThreadBound``- * ``Test.DejaFu.Types.WillForkOS``- * ``Test.DejaFu.Types.WillIsCurrentThreadBound``+ * ``Test.DejaFu.Types.ForkOS``+ * ``Test.DejaFu.Types.IsCurrentThreadBound``+ * ``Test.DejaFu.Types.WillForkOS``+ * ``Test.DejaFu.Types.WillIsCurrentThreadBound`` * (:issue:`155`) ``Test.DejaFu.Types`` and ``Test.DejaFu.Utils`` modules, each containing some of what was in ``Test.DejaFu.Common``.@@ -1055,15 +1098,15 @@ * The ``IO`` specific testing functions: - * ``Test.DejaFu.autocheckIO``- * ``Test.DejaFu.dejafuIO``- * ``Test.DejaFu.dejafusIO``- * ``Test.DejaFu.autocheckWayIO``- * ``Test.DejaFu.dejafuWayIO``- * ``Test.DejaFu.dejafusWayIO``- * ``Test.DejaFu.dejafuDiscardIO``- * ``Test.DejaFu.runTestM``- * ``Test.DejaFu.runTestWayM``+ * ``Test.DejaFu.autocheckIO``+ * ``Test.DejaFu.dejafuIO``+ * ``Test.DejaFu.dejafusIO``+ * ``Test.DejaFu.autocheckWayIO``+ * ``Test.DejaFu.dejafuWayIO``+ * ``Test.DejaFu.dejafusWayIO``+ * ``Test.DejaFu.dejafuDiscardIO``+ * ``Test.DejaFu.runTestM``+ * ``Test.DejaFu.runTestWayM`` * The ``Test.DejaFu.Conc.ConcST`` type alias. @@ -1205,16 +1248,16 @@ * Failure predicates (also exported from ``Test.DejaFu``): - * ``Test.DejaFu.Common.isAbort``- * ``Test.DejaFu.Common.isDeadlock``- * ``Test.DejaFu.Common.isIllegalSubconcurrency``- * ``Test.DejaFu.Common.isInternalError``- * ``Test.DejaFu.Common.isUncaughtException``+ * ``Test.DejaFu.Common.isAbort``+ * ``Test.DejaFu.Common.isDeadlock``+ * ``Test.DejaFu.Common.isIllegalSubconcurrency``+ * ``Test.DejaFu.Common.isInternalError``+ * ``Test.DejaFu.Common.isUncaughtException`` * Thread action and lookahead values for ``threadDelay``: - * ``Test.DejaFu.Common.ThreadDelay``- * ``Test.DejaFu.Common.WillThreadDelay``+ * ``Test.DejaFu.Common.ThreadDelay``+ * ``Test.DejaFu.Common.WillThreadDelay`` Changed ~~~~~~~@@ -1341,8 +1384,8 @@ * (:issue:`64`) Greatly reduce memory usage in systematic testing when discarding traces by using an alternative data structure. - * Old: ``O(max trace length * number of executions)``- * New: ``O(max trace length * number of traces kept)``+ * Old: ``O(max trace length * number of executions)``+ * New: ``O(max trace length * number of traces kept)`` 0.7.1.0 - The Discard Release (2017-08-10)@@ -1356,15 +1399,15 @@ * (:issue:`90`) A way to selectively discard results or traces: - * Type: ``Test.DejaFu.SCT.Discard``- * Functions: ``Test.DejaFu.SCT.runSCTDiscard``,- ``resultsSetDiscard``, ``sctBoundDiscard``,- ``sctUniformRandomDiscard``, and ``sctWeightedRandomDiscard``.+ * Type: ``Test.DejaFu.SCT.Discard``+ * Functions: ``Test.DejaFu.SCT.runSCTDiscard``, ``resultsSetDiscard``,+ ``sctBoundDiscard``, ``sctUniformRandomDiscard``, and+ ``sctWeightedRandomDiscard``. * (:issue:`90`) Discarding variants of the testing functions: - * ``Test.DejaFu.dejafuDiscard``- * ``Test.DejaFu.dejafuDiscardIO``+ * ``Test.DejaFu.dejafuDiscard``+ * ``Test.DejaFu.dejafuDiscardIO`` * (:issue:`90`) ``Test.DejaFu.Defaults.defaultDiscarder``. @@ -1430,13 +1473,12 @@ * Smart constructors for ``Test.DejaFu.SCT.Way`` (also re-exported from ``Test.DejaFu``): - * ``Test.DejaFu.SCT.systematically``, like the old- ``Systematically``.- * ``Test.DejaFu.SCT.randomly``, like the old ``Randomly``.- * ``Test.DejaFu.SCT.uniformly``, a new uniform (as opposed to- weighted) random scheduler.- * ``Test.DejaFu.SCT.swarmy``, like the old ``Randomly`` but which- can use the same weights for multiple executions.+ * ``Test.DejaFu.SCT.systematically``, like the old ``Systematically``.+ * ``Test.DejaFu.SCT.randomly``, like the old ``Randomly``.+ * ``Test.DejaFu.SCT.uniformly``, a new uniform (as opposed to weighted) random+ scheduler.+ * ``Test.DejaFu.SCT.swarmy``, like the old ``Randomly`` but which can use the+ same weights for multiple executions. Changed ~~~~~~~@@ -1454,8 +1496,8 @@ * The ``Test.DejaFu.SCT.Way`` type is now abstract, so its constructors are no longer exported: - * ``Test.DejaFu.SCT.Systematically``- * ``Test.DejaFu.SCT.Randomly``+ * ``Test.DejaFu.SCT.Systematically``+ * ``Test.DejaFu.SCT.Randomly`` * The ``Test.DejaFu.SCT.sctPreBound``, ``sctFairBound``, and ``sctLengthBound`` functions.@@ -1562,25 +1604,25 @@ * ``NFData`` instances for: - * ``Test.DejaFu.Result``- * ``Test.DejaFu.Common.ThreadId``- * ``Test.DejaFu.Common.CRefId``- * ``Test.DejaFu.Common.MVarId``- * ``Test.DejaFu.Common.TVarId``- * ``Test.DejaFu.Common.IdSource``- * ``Test.DejaFu.Common.ThreadAction``- * ``Test.DejaFu.Common.Lookahead``- * ``Test.DejaFu.Common.ActionType``- * ``Test.DejaFu.Common.TAction``- * ``Test.DejaFu.Common.Decision``- * ``Test.DejaFu.Common.Failure``- * ``Test.DejaFu.Common.MemType``- * ``Test.DejaFu.SCT.Bounds``- * ``Test.DejaFu.SCT.PreemptionBound``- * ``Test.DejaFu.SCT.FairBound``- * ``Test.DejaFu.SCT.LengthBound``- * ``Test.DejaFu.SCT.Way``- * ``Test.DejaFu.STM.Result``+ * ``Test.DejaFu.Result``+ * ``Test.DejaFu.Common.ThreadId``+ * ``Test.DejaFu.Common.CRefId``+ * ``Test.DejaFu.Common.MVarId``+ * ``Test.DejaFu.Common.TVarId``+ * ``Test.DejaFu.Common.IdSource``+ * ``Test.DejaFu.Common.ThreadAction``+ * ``Test.DejaFu.Common.Lookahead``+ * ``Test.DejaFu.Common.ActionType``+ * ``Test.DejaFu.Common.TAction``+ * ``Test.DejaFu.Common.Decision``+ * ``Test.DejaFu.Common.Failure``+ * ``Test.DejaFu.Common.MemType``+ * ``Test.DejaFu.SCT.Bounds``+ * ``Test.DejaFu.SCT.PreemptionBound``+ * ``Test.DejaFu.SCT.FairBound``+ * ``Test.DejaFu.SCT.LengthBound``+ * ``Test.DejaFu.SCT.Way``+ * ``Test.DejaFu.STM.Result`` * ``Eq``, ``Ord``, and ``Show`` instances for ``Test.DejaFu.Common.IdSource``.@@ -1652,8 +1694,8 @@ * Thread action and lookahead values for ``tryReadMVar``: - * ``Test.DejaFu.Common.TryReadMVar``- * ``Test.DejaFu.Common.WillTryReadMVar``+ * ``Test.DejaFu.Common.TryReadMVar``+ * ``Test.DejaFu.Common.WillTryReadMVar`` * The testing-only ``Test.DejaFu.Conc.subconcurrency`` function.
README.markdown view
@@ -14,7 +14,7 @@ - [Release notes](#release-notes) - [Questions, feedback, discussion](#questions-feedback-discussion) - [Bibliography](#bibliography)-- **[The website!](http://dejafu.readthedocs.io/)**+- **[The website!](https://dejafu.docs.barrucadu.co.uk/)** Déjà Fu is a unit-testing library for concurrent Haskell programs. Tests are deterministic and expressive, making it easy and convenient
Test/DejaFu.hs view
@@ -13,7 +13,7 @@ concurrency> package's 'MonadConc' typeclass. For more in-depth documentation, including migration guides from-earlier versions of dejafu, see the <https://dejafu.readthedocs.io+earlier versions of dejafu, see the <https://dejafu.docs.barrucadu.co.uk/ website>. __A first test:__ This is a simple concurrent program which forks two
Test/DejaFu/Conc/Internal/Common.hs view
@@ -2,6 +2,7 @@ {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE RankNTypes #-}+{-# LANGUAGE TypeOperators #-} -- | -- Module : Test.DejaFu.Conc.Internal.Common
Test/DejaFu/Conc/Internal/Program.hs view
@@ -5,6 +5,7 @@ {-# LANGUAGE LambdaCase #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-} -- GHC doesn't need this to compile the module, but stylish-haskell -- does to format it.
dejafu.cabal view
@@ -1,8 +1,8 @@--- Initial monad-conc.cabal generated by cabal init. For further +-- Initial monad-conc.cabal generated by cabal init. For further -- documentation, see http://haskell.org/cabal/users-guide/ name: dejafu-version: 2.4.0.5+version: 2.4.0.6 synopsis: A library for unit-testing concurrent programs. description:@@ -13,7 +13,7 @@ package by enabling you to deterministically test your concurrent programs. .- See the <https://dejafu.readthedocs.io website> or README for more.+ See the <https://dejafu.docs.barrucadu.co.uk/ website> or README for more. homepage: https://github.com/barrucadu/dejafu license: MIT@@ -33,7 +33,7 @@ source-repository this type: git location: https://github.com/barrucadu/dejafu.git- tag: dejafu-2.4.0.5+ tag: dejafu-2.4.0.6 library exposed-modules: Test.DejaFu@@ -56,11 +56,11 @@ , Test.DejaFu.SCT.Internal.DPOR , Test.DejaFu.SCT.Internal.Weighted - -- other-modules: - -- other-extensions: + -- other-modules:+ -- other-extensions: build-depends: base >=4.9 && <5 , concurrency >=1.11 && <1.12- , containers >=0.5 && <0.7+ , containers >=0.5 && <0.8 , contravariant >=1.2 && <1.6 , deepseq >=1.1 && <2 , exceptions >=0.7 && <0.11@@ -68,6 +68,6 @@ , profunctors >=4.0 && <6 , random >=1.0 && <1.3 , transformers >=0.5 && <0.7- -- hs-source-dirs: + -- hs-source-dirs: default-language: Haskell2010 ghc-options: -Wall