Release Notes
This project is versioned according to the PVP, the de facto standard Haskell versioning scheme.
2.4.0.7 (2025-01-06)
- Git: dejafu-2.4.0.7
- Hackage: dejafu-2.4.0.7
Miscellaneous
- The upper bound on random is <1.4.
2.4.0.6 (2024-12-11)
- Git: dejafu-2.4.0.6
- Hackage: dejafu-2.4.0.6
Contributors: telser (pull request #417).
Miscellaneous
- Update documentation link in
Test.DejaFu. - Fix GHC compatibility warning.
- The upper bound on containers is <0.8.
2.4.0.5 (2023-06-17)
- Git: dejafu-2.4.0.5
- Hackage: dejafu-2.4.0.5
Miscellaneous
- The upper bound on transformers is <0.7.
2.4.0.4 (2022-08-22)
- Git: dejafu-2.4.0.4
- Hackage: dejafu-2.4.0.4
Miscellaneous
- Update doctest examples in
Test.DejaFu. - The upper bound on leancheck is <2.
2.4.0.3 (2021-08-15)
- Git: dejafu-2.4.0.3
- Hackage: dejafu-2.4.0.3
Miscellaneous
- Remove reference to freenode in README.
2.4.0.2 (2021-03-14)
- Git: dejafu-2.4.0.2
- Hackage: dejafu-2.4.0.2
Fixed
- (issue #334) Compilation error under GHC 9 due to use of
const.
2.4.0.1 (2020-12-28)
- Git: dejafu-2.4.0.1
- Hackage: dejafu-2.4.0.1
Fixed
- (issue #331) Initial TVar values from setup actions are now restored for subsequent executions.
2.4.0.0 (2020-07-01)
- Git: dejafu-2.4.0.0
- Hackage: dejafu-2.4.0.0
Added
- Thread action constructor for STM transactions which throw an
exception:
Test.DejaFu.Types.ThreadActionThrownSTM
Changed
Test.DejaFu.Types.ThreadAction,Throw, andThrowTonow include the resultant masking state, and no bool.
Fixed
- (issue #324) Jumping out of a restored mask into an exception handler now atomically restores the masking state.
2.3.0.1 (2020-06-24)
- Git: dejafu-2.3.0.1
- Hackage: dejafu-2.3.0.1
Miscellaneous
- The upper bound on random is <1.3.
2.3.0.0 (2020-05-14)
- Git: dejafu-2.3.0.0
- Hackage: dejafu-2.3.0.0
Miscellaneous
- The version bound on concurrency is >=1.11 <1.12.
2.2.0.0 (2020-05-10)
- Git: dejafu-2.2.0.0
- Hackage: dejafu-2.2.0.0
Added
-
Thread action constructors for the
MonadConcgetMaskingStatefunction:Test.DejaFu.Types.ThreadAction,GetMaskingStateTest.DejaFu.Types.Lookahead,WillGetMaskingState
Miscellaneous
- The version bound on concurrency is >=1.10 <1.11.
2.1.0.3 (2020-02-29)
- Git: dejafu-2.1.0.3
- Hackage: dejafu-2.1.0.3
Fixed
- Fixed an internal error message.
2.1.0.2 (2020-02-29)
- Git: dejafu-2.1.0.2
- Hackage: dejafu-2.1.0.2
Miscellaneous
- The upper version bound on concurrency is <1.10.
2.1.0.1 (2019-10-04)
- Git: dejafu-2.1.0.1
- Hackage: dejafu-2.1.0.1
Miscellaneous
- Fixed a compilation error with GHC 8.8
- The upper version bound on concurrency is <1.9.
2.1.0.0 (2019-03-24)
- Git: dejafu-2.1.0.0
- Hackage: dejafu-2.1.0.0
Added
-
The
Test.DejaFu.Types.MonadDejaFutypeclass, containing the primitives needed to run a concurrent program. There are instances for:IO, which is probably theMonadConcinstance people used previously, so there is no breaking change there.CatchT (ST t), meaning that concurrent programs can be run withoutIOonce more.
-
Thread action constructors for
MonadConcsupportsBoundThreadsfunction:Test.DejaFu.Types.ThreadAction,SupportsBoundThreadsTest.DejaFu.Types.Lookahead,WillSupportsBoundThreads
Changed
-
Many functions which had a
MonadConcconstraint now have aMonadDejaFuconstraint:-
In
Test.DejaFuautocheckautocheckWayautocheckWithSettingsdejafudejafuWaydejafuWithSettingsdejafusdejafusWaydejafusWithSettingsrunTestrunTestWayrunTestWithSettings
-
In
Test.DejaFu.ConcrunConcurrentrecordSnapshotrunSnapshot
-
In
Test.DejaFu.SCTrunSCTresultsSetrunSCT'resultsSet'runSCTWithSettingsresultsSetWithSettingsrunSCTWithSettings'resultsSetWithSettings'
-
Miscellaneous
- The version bound on concurrency is >=1.7 and <1.8.
2.0.0.1 (2019-03-14)
- Git: dejafu-2.0.0.1
- Hackage: dejafu-2.0.0.1
Fixed
- (issue #267) Throwing an asynchronous exception to the current thread interrupts the current thread even if it is masked.
2.0.0.0 (2019-02-12)
- Git: dejafu-2.0.0.0
- Hackage: dejafu-2.0.0.0
Added
-
The
Programtypes and their constructors (re-exported fromTest.DejaFu):Test.DejaFu.Conc.ProgramTest.DejaFu.Conc.BasicTest.DejaFu.Conc.WithSetupTest.DejaFu.Conc.WithSetupAndTeardownTest.DejaFu.Conc.withSetupTest.DejaFu.Conc.withTeardownTest.DejaFu.Conc.withSetupAndTeardown
-
The
Invarianttype and associated functions (re-exported fromTest.DejaFu):Test.DejaFu.Conc.InvariantTest.DejaFu.Conc.registerInvariantTest.DejaFu.Conc.inspectIORefTest.DejaFu.Conc.inspectMVarTest.DejaFu.Conc.inspectTVar
-
New snapshotting functions:
Test.DejaFu.Conc.SnapshotTest.DejaFu.Conc.recordSnapshotTest.DejaFu.Conc.runSnapshot
-
Test.DejaFu.Settings.llengthBound, which now applies to all ways of testing. -
Test.DejaFu.Types.isInvariantFailure(re-exported fromTest.DejaFu). -
Test.DejaFu.runTestWithSettingsfunction. -
A simplified form of the concurrency state:
Test.DejaFu.Types.ConcurrencyStateTest.DejaFu.Types.isBufferedTest.DejaFu.Types.numBufferedTest.DejaFu.Types.isFullTest.DejaFu.Types.canInterruptTest.DejaFu.Types.canInterruptLTest.DejaFu.Types.isMaskedInterruptibleTest.DejaFu.Types.isMaskedUninterruptible
Changed
-
Test.DejaFu.Schedule.Schedulerhas aConcurrencyStateparameter. -
Test.DejaFu.alwaysSameByandTest.DejaFu.notAlwaysSameByreturn a representative trace for each unique condition. -
Functions which took a
ConcTnow take aProgram pty:Test.DejaFu.autocheckTest.DejaFu.autocheckWayTest.DejaFu.autocheckWithSettingsTest.DejaFu.dejafuTest.DejaFu.dejafuWayTest.DejaFu.dejafuWithSettingsTest.DejaFu.dejafusTest.DejaFu.dejafusWayTest.DejaFu.dejafusWithSettingsTest.DejaFu.runTestTest.DejaFu.runTestWayTest.DejaFu.runTestWithSettingsTest.DejaFu.Conc.runConcurrentTest.DejaFu.SCT.runSCTTest.DejaFu.SCT.resultsSetTest.DejaFu.SCT.runSCT'Test.DejaFu.SCT.resultsSet'Test.DejaFu.SCT.runSCTWithSettingsTest.DejaFu.SCT.resultsSetWithSettingsTest.DejaFu.SCT.runSCTWithSettings'Test.DejaFu.SCT.resultsSetWithSettings'
-
Test.DejaFu.Conc.ConcTis an alias forProgram Basic. -
Test.DejaFu.Types.Bounds:- Removed
boundLengthfield.
- Removed
-
Test.DejaFu.Types.Condition:- Added
InvariantFailureconstructor - Removed
STMDeadlockconstructor
- Added
-
Test.DejaFu.Types.Error:- Removed
NestedSubconcurrency,MultithreadedSubconcurrency, andLateDontCheckconstructors.
- Removed
-
Test.DejaFu.Types.Lookahead:- Added
WillRegisterInvariantconstructor - Removed
WillSubconcurrency,WillStopSubconcurrency, andWillDontCheckconstructors
- Added
-
Test.DejaFu.Types.ThreadAction:- Added
RegisterInvariantconstructor - Removed
Subconcurrency,StopSubconcurrency, andDontCheckconstructors
- Added
Removed
-
The deprecated functions:
Test.DejaFu.dejafuDiscardTest.DejaFu.SCT.runSCTDiscardTest.DejaFu.SCT.runSCTDiscard'Test.DejaFu.SCT.resultsSetDiscardTest.DejaFu.SCT.resultsSetDiscard'Test.DejaFu.SCT.sctBoundTest.DejaFu.SCT.sctBoundDiscardTest.DejaFu.SCT.sctUniformRandomTest.DejaFu.SCT.sctUniformRandomDiscardTest.DejaFu.SCT.sctWeightedRandomTest.DejaFu.SCT.sctWeightedRandomDiscard
-
The deprecated type
Test.DejaFu.Types.Failure -
Old snapshotting functions:
Test.DejaFu.Conc.DCSnapshotTest.DejaFu.Conc.runForDCSnapshotTest.DejaFu.Conc.runWithDCSnapshotTest.DejaFu.Conc.canDCSnapshotTest.DejaFu.Conc.threadsFromDCSnapshot
-
Test.DejaFu.Conc.dontCheck -
Test.DejaFu.Conc.subconcurrency -
Test.DejaFu.Settings.defaultLengthBound -
Test.DejaFu.Types.isIncorrectUsage
1.12.0.0 (2019-01-20)
- Git: dejafu-1.12.0.0
- Hackage: dejafu-1.12.0.0
Added
-
Test.DejaFu.Types.Errorfor internal errors and misuses, with predicates:Test.DejaFu.Types.isSchedulerErrorTest.DejaFu.Types.isIncorrectUsage
-
Deprecated
Test.DejaFu.Types.Failuretype synonym forCondition. -
The
Test.DejaFu.Settings.lshowAbortsoption, to make SCT functions showAbortconditions. -
Test.DejaFu.Utils.showCondition
Changed
- Renamed
Test.DejaFu.Types.FailuretoTest.DejaFu.Types.Condition. - The SCT functions drop
Left Abortresults by default, restore the old behaviour withTest.DejaFu.Settings.lshowAborts.
Removed
Test.DejaFu.Types.isInternalErrorTest.DejaFu.Types.isIllegalDontCheckTest.DejaFu.Types.isIllegalSubconcurrencyTest.DejaFu.Utils.showFail
1.11.0.5 (2019-01-17)
- Git: dejafu-1.11.0.5
- Hackage: dejafu-1.11.0.5
Miscellaneous
- The upper bound on leancheck is <0.10.
1.11.0.4 (2018-12-02)
- Git: dejafu-1.11.0.4
- Hackage: dejafu-1.11.0.4
Contributors: pepeiborra (pull request #290).
Miscellaneous
- (pull request #290) The upper bound on containers is <0.7.
- (pull request #290) The upper bound on leancheck is <0.9.
1.11.0.3 (2018-07-15)
- Git: dejafu-1.11.0.3
- Hackage: dejafu-1.11.0.3
Fixed
- (issue #275) In trace simplification, only remove a commit if
there are no other buffered writes for that same
IORef.
1.11.0.2 (2018-07-08)
- Git: dejafu-1.11.0.2
- Hackage: dejafu-1.11.0.2
Miscellaneous
- The upper bound on profunctors is <6.
1.11.0.1 (2018-07-02)
- Git: dejafu-1.11.0.1
- Hackage: dejafu-1.11.0.1
Miscellaneous
- The upper bound on contravariant is <1.6.
1.11.0.0 - IORefs (2018-07-01)
- Git: dejafu-1.11.0.0
- Hackage: dejafu-1.11.0.0
Changed
- (issue #274)
CRefis nowIORef: all functions, data constructors, and types have been renamed. - The lower bound on concurrency is 1.6.
1.10.1.0 (2018-06-17)
- Git: dejafu-1.10.1.0
- Hackage: dejafu-1.10.1.0
Added
- (issue #224) The
Test.DejaFu.Settings.lsafeIOoption, for when all lifted IO is thread-safe (such as exclusively managing thread-local state).
1.10.0.0 (2018-06-17)
- Git: dejafu-1.10.0.0
- Hackage: dejafu-1.10.0.0
Added
- The
Test.DejaFu.notAlwaysSameOnandnotAlwaysSameBypredicates, generalisingnotAlwaysSame.
Changed
Test.DejaFu.autocheckand related functions use thesuccessfulpredicate, rather than looking specifically for deadlocks and uncaught exceptions.- (issue #259) The
Test.DejaFu.alwaysSame,alwaysSameOn,alwaysSameBy, andnotAlwaysSamepredicates fail if the computation under test fails.
1.9.1.0 (2018-06-10)
- Git: dejafu-1.9.1.0
- Hackage: dejafu-1.9.1.0
Added
- A
Test.DejaFu.successfulpredicate, to check that a computation never fails.
1.9.0.0 (2018-06-10)
- Git: dejafu-1.9.0.0
- Hackage: dejafu-1.9.0.0
Changed
- (issue #190)
Test.DejaFu.Types.ThrowandThrowTohave aBoolparameter, which isTrueif the exception kills the thread.
1.8.0.0 (2018-06-03)
- Git: dejafu-1.8.0.0
- Hackage: dejafu-1.8.0.0
Changed
- (issue #258) Length bounding is disabled by default. This is not a breaking API change, but it is a breaking semantics change.
1.7.0.0 (2018-06-03)
- Git: dejafu-1.7.0.0
- Hackage: dejafu-1.7.0.0
Changed
- (issue #237)
Test.DejaFu.SCT.sctWeightedRandomandsctWeightedRandomDiscardno longer take the number of executions to use the same weights for as a parameter.
Removed
- (issue #237) The deprecated function
Test.DejaFu.Settings.swarmy.
1.6.0.0 (2018-05-11)
- Git: dejafu-1.6.0.0
- Hackage: dejafu-1.6.0.0
Removed
- The deprecated module
Test.DejaFu.Defaults.
1.5.1.0 (2018-03-29)
- Git: dejafu-1.5.1.0
- Hackage: dejafu-1.5.1.0
Added
- (issue #210)
Test.DejaFu.Types.WeakenandStrengthennewtype wrappers around discard functions, withSemigroup,Monoid,Contravariant, andDivisibleinstances corresponding toweakenDiscardandstrengthenDiscard.
1.5.0.0 - No More 7.10 (2018-03-28)
- Git: dejafu-1.5.0.0
- Hackage: dejafu-1.5.0.0
Miscellaneous
-
GHC 7.10 support is dropped. Dependency lower bounds are:
- base: 4.9
- concurrency: 1.5
- transformers: 0.5
-
The upper bound on concurrency is 1.6.
1.4.0.0 (2018-03-17)
- Git: dejafu-1.4.0.0
- Hackage: dejafu-1.4.0.0
Changed
- (issue #201)
Test.DejaFu.Conc.ConcT r n adrops itsrparameter, becomingConcT n a. - (issue #201) All functions drop the
MonadConcconstraint.
Removed
- (issue #201) The
MonadRefandMonadAtomicRefinstances forTest.DejaFu.Conc.ConcT. - (issue #198) The
Test.DejaFu.Types.Killedthread action, which was unused.
Fixed
- (issue #250) Add missing dependency for
throwToactions.
1.3.2.0 (2018-03-12)
- Git: dejafu-1.3.2.0
- Hackage: dejafu-1.3.2.0
Added
-
(issue #183) SCT settings for trace simplification:
Test.DejaFu.Settings.lequalityTest.DejaFu.Settings.lsimplify
-
(pull request #248)
Test.DejaFu.Utils.toTIdTraceto extract thread IDs from a trace. -
(pull request #248) SCT setting to make some recoverable errors fatal:
Test.DejaFu.Settings.ldebugFatal
Performance
- (pull request #248) Prune some unnecessary interleavings of
CRefactions in systematic testing when using sequential consistency.
1.3.1.0 (2018-03-11)
- Git: dejafu-1.3.1.0
- Hackage: dejafu-1.3.1.0
Added
-
(pull request #246)
Genericinstances for:Test.DejaFu.Types.ThreadIdTest.DejaFu.Types.CRefIdTest.DejaFu.Types.MVarIdTest.DejaFu.Types.TVarIdTest.DejaFu.Types.IdTest.DejaFu.Types.ThreadActionTest.DejaFu.Types.LookaheadTest.DejaFu.Types.TActionTest.DejaFu.Types.DecisionTest.DejaFu.Types.FailureTest.DejaFu.Types.BoundsTest.DejaFu.Types.PreemptionBoundTest.DejaFu.Types.FairBoundTest.DejaFu.Types.LengthBoundTest.DejaFu.Types.DiscardTest.DejaFu.Types.MemTypeTest.DejaFu.Types.MonadFailException
-
(pull request #246)
NFDatainstance forTest.DejaFu.Types.MonadFailException
Fixed
- (issue #199) Missing cases in the
NFDatainstances forTest.DejaFu.Types.ThreadActionandTAction
1.3.0.3 (2018-03-11)
- Git: dejafu-1.3.0.3
- Hackage: dejafu-1.3.0.3
Miscellaneous
- (pull request #245) The upper bound on exceptions is <0.11.
1.3.0.2 (2018-03-11)
- Git: dejafu-1.3.0.2
- Hackage: dejafu-1.3.0.2
Fixed
- (pull request #244) Add missing dependency for
setNumCapabilitiesactions.
1.3.0.1 (2018-03-08)
- Git: dejafu-1.3.0.1
- Hackage: dejafu-1.3.0.1
Fixed
- (pull request #242) A compilation error when building with exceptions-0.9.0.
1.3.0.0 (2018-03-06)
- Git: dejafu-1.3.0.0
- Hackage: dejafu-1.3.0.0
Deprecated
- (pull request #240)
Test.DejaFu.Settings.swarmy
1.2.0.0 - The Settings Release (2018-03-06)
- Git: dejafu-1.2.0.0
- Hackage: dejafu-1.2.0.0
Contributors: qrilka (pull request #236).
Added
-
(pull request #238) A record-based approach to SCT configuration:
-
Test.DejaFu.Settings(re-exported fromTest.DejafuandTest.DejaFu.SCT) -
Test.DejaFu.Settings.Settings -
Test.DejaFu.Settings.defaultSettings -
Test.DejaFu.Settings.fromWayAndMemType -
Lenses:
Test.DejaFu.Settings.lwayTest.DejaFu.Settings.lmemtypeTest.DejaFu.Settings.ldiscardTest.DejaFu.Settings.learlyExitTest.DejaFu.Settings.ldebugShowTest.DejaFu.Settings.ldebugPrint
-
Lens helpers:
Test.DejaFu.Settings.getTest.DejaFu.Settings.set
-
Runners:
Test.DejaFu.SCT.runSCTWithSettingsTest.DejaFu.SCT.runSCTWithSettings'Test.DejaFu.SCT.resultsSetWithSettingsTest.DejaFu.SCT.resultsSetWithSettings'
-
-
(pull request #238) Settings-based test functions:
Test.DejaFu.autocheckWithSettingsTest.DejaFu.dejafuWithSettingsTest.DejaFu.dejafusWithSettingsTest.DejaFu.runTestWithSettings
Deprecated
-
(pull request #238) SCT function variants:
Test.DejaFu.SCT.runSCTDiscardTest.DejaFu.SCT.resultSetDiscardTest.DejaFu.SCT.runSCTDiscard'Test.DejaFu.SCT.resultSetDiscard'Test.DejaFu.SCT.sctBoundTest.DejaFu.SCT.sctBoundDiscardTest.DejaFu.SCT.sctUniformRandomTest.DejaFu.SCT.sctUniformRandomDiscardTest.DejaFu.SCT.sctWeightedRandomTest.DejaFu.SCT.sctWeightedRandomDiscard
-
(pull request #238) The
Test.DejaFu.Defaultsmodule. ImportTest.DejaFu.Settingsinstead. -
(pull request #238)
Test.DejaFu.dejafuDiscard.
Removed
- (pull request #238)
Test.DejaFu.Defaults.defaultDiscarder, as the discard function is optional.
1.1.0.2 (2018-03-01)
- Git: dejafu-1.1.0.2
- Hackage: dejafu-1.1.0.2
Miscellaneous
- (pull request #235) The documentation for
Test.DejaFu.Conc.dontCheckandsubconcurrencyclarify that an illegal use does not necessarily cause a failing test.
1.1.0.1 (2018-02-26)
- Git: dejafu-1.1.0.1
- Hackage: dejafu-1.1.0.1
Contributors: qrilka (pull request #229).
Miscellaneous
- The upper bound on exceptions is <0.10.
1.1.0.0 (2018-02-22)
- Git: dejafu-1.1.0.0
- Hackage: dejafu-1.1.0.0
Contributors: qrilka (pull request #228).
Added
-
(pull request #219) The testing-only
Test.DejaFu.Conc.dontCheckfunction, and associated definitions:Test.DejaFu.Types.DontCheckTest.DejaFu.Types.WillDontCheckTest.DejaFu.Types.IllegalDontCheckTest.DejaFu.Types.isIllegalDontCheck
-
(pull request #219) A snapshotting approach based on
Test.DejaFu.Conc.dontCheck:Test.DejaFu.Conc.runForDCSnapshotTest.DejaFu.Conc.runWithDCSnapshotTest.DejaFu.Conc.canDCSnapshotTest.DejaFu.Conc.threadsFromDCSnapshot
Changed
- (pull request #219) SCT functions automatically use the snapshotting mechanism when possible.
1.0.0.2 (2018-02-18)
- Git: dejafu-1.0.0.2
- Hackage: dejafu-1.0.0.2
Contributors: qrilka (pull request #214).
Changed
- (issue #193) Deterministically assign commit thread IDs.
Fixed
- (issue #189) Remove an incorrect optimisation in systematic
testing for
getNumCapabilitiesandsetNumCapabilities. - (issue #204) Fix missed interleavings in systematic testing with some uses of STM.
- (issue #205) Fix
forkOSbeing recorded in an execution trace as if it were afork.
Miscellaneous
- (pull request #180) Doctest Haddock examples in
Test.DejaFuandTest.DejaFu.Refinement. - (pull request #185, pull request #215) Check some more internal invariants and throw on error.
- (pull request #214) Remove unnecessary use of
head.
1.0.0.1 (2018-01-19)
- Git: dejafu-1.0.0.1
- Hackage: dejafu-1.0.0.1
Miscellaneous
- The upper bound on concurrency is <1.5.
1.0.0.0 - The API Friendliness Release (2017-12-23)
- Git: dejafu-1.0.0.0
- Hackage: dejafu-1.0.0.0
Added
-
Test.DejaFu.alwaysSameOnandalwaysSameBypredicate helpers. -
Test.DejaFu.SCT.strengthenDiscardandweakenDiscardfunctions to combine discard functions. -
(issue #124) The
Test.DejaFu.ProPredicatetype, which contains both an old-stylePredicateand a discard function. It is also aProfunctor, parameterised by the input and output types. -
(issue #124)
Test.DejaFu.alwaysNothingandsomewhereNothingpredicate helpers, likealwaysTrueandsomewhereTrue, to lift regular functions into aProPredicate. -
(issue #137) The
Test.DejaFu.Types.Idtype. -
(pull request #145) Thread action and lookahead values for bound threads:
Test.DejaFu.Types.ForkOSTest.DejaFu.Types.IsCurrentThreadBoundTest.DejaFu.Types.WillForkOSTest.DejaFu.Types.WillIsCurrentThreadBound
-
(issue #155)
Test.DejaFu.TypesandTest.DejaFu.Utilsmodules, each containing some of what was inTest.DejaFu.Common.
Changed
- All testing functions require
MonadConc,MonadRef, andMonadIOconstraints. Testing withSTis no longer possible. - The
Test.DejaFu.alwaysSamepredicate helper gives the simplest trace leading to each distinct result. - The
MonadIO Test.DejaFu.Conc.ConcIOinstance is now the more generalMonadIO n => MonadIO (ConcT r n). - (issue #121) The chosen thread is no longer redundantly included in trace lookahead.
- (issue #123) All testing functions in
Test.DejaFutake the action to run as the final parameter. - (issue #124) All testing functions in
Test.DejaFuhave been generalised to take aProPredicateinstead of aPredicate. - (issue #124) The
Test.DejaFu.Predicatetype is an alias forProPredicate a a. - (issue #124) The
Test.DejaFu.Resulttype no longer includes a number of cases checked. - (issue #137) The
Test.DejaFu.Types.ThreadId,CRefId,MVarId, andTVarIdtypes are now wrappers for anId. - (pull request #145) If built with the threaded runtime, the main thread in a test is executed as a bound thread.
- (issue #155) The
Test.DejaFu.SCT.Discardtype is defined inTest.DejaFu.Types, and re-exported fromTest.DejaFu.SCT. - (issue #155) The
Test.DejaFu.Schedule.tidOfanddecisionOffunctions are defined inTest.DejaFu.Utils, but not re-exported fromTest.DejaFu.Schedule.
Removed
-
The
IOspecific testing functions:Test.DejaFu.autocheckIOTest.DejaFu.dejafuIOTest.DejaFu.dejafusIOTest.DejaFu.autocheckWayIOTest.DejaFu.dejafuWayIOTest.DejaFu.dejafusWayIOTest.DejaFu.dejafuDiscardIOTest.DejaFu.runTestMTest.DejaFu.runTestWayM
-
The
Test.DejaFu.Conc.ConcSTtype alias. -
The
MonadBaseControl IO Test.DejaFu.Conc.ConcIOtypeclass instance. -
The
Test.DejaFu.alwaysTrue2function, which had confusing behaviour. -
The
Test.DejaFu.Common.TTracetype synonym for[TAction]. -
The
Test.DejaFu.Common.preEmpCountfunction. -
Re-exports of
DecisionandNonEmptyfromTest.DejaFu.Schedule. -
(issue #155) The
Test.DejaFu.CommonandTest.DejaFu.STMmodules.
Fixed
- In refinement property testing, a blocking interference function is not reported as a deadlocking execution.
Performance
- (issue #124) Passing tests should use substantially less memory.
- (issue #168) Prune some unnecessary interleavings of
MVaractions in systematic testing.
Miscellaneous
- The lower bound on concurrency is >=1.3.
0.9.1.2 (2017-12-12)
- Git: dejafu-0.9.1.2
- Hackage: dejafu-0.9.1.2
Miscellaneous
- The upper bound on leancheck is <0.8.
0.9.1.1 (2017-12-08)
- Git: dejafu-0.9.1.1
- Hackage: dejafu-0.9.1.1
Fixed
- (issue #160) Fix an off-by-one issue with nested masks during systematic testing.
0.9.1.0 (2017-11-26)
- Git: dejafu-0.9.1.0
- Hackage: dejafu-0.9.1.0
Added
MonadFailinstance forTest.DejaFu.Conc.ConcT.MonadFailinstance forTest.DejaFu.STM.STMLike.
Changed
- Pretty-printed traces display a pre-emption following a yield with a little "p".
Fixed
- Some incorrect Haddock
@sincecomments.
0.9.0.3 (2017-11-06)
- Git: dejafu-0.9.0.3
- Hackage: dejafu-0.9.0.3
Fixed
- (issue #138) Fix missed interleavings in systematic testing with some relaxed memory programs.
0.9.0.2 (2017-11-02)
- Git: dejafu-0.9.0.2
- Hackage: dejafu-0.9.0.2
Changed
- A fair bound of 0 prevents yielding or delaying.
Performance
- Prune some unnecessary interleavings of STM transactions in systematic testing.
0.9.0.1 (2017-10-28)
- Git: dejafu-0.9.0.1
- Hackage: dejafu-0.9.0.1
Fixed
- (issue #139) Fix double pop of exception handler stack.
0.9.0.0 (2017-10-11)
- Git: dejafu-0.9.0.0
- Hackage: dejafu-0.9.0.0
Added
-
Failure predicates (also exported from
Test.DejaFu):Test.DejaFu.Common.isAbortTest.DejaFu.Common.isDeadlockTest.DejaFu.Common.isIllegalSubconcurrencyTest.DejaFu.Common.isInternalErrorTest.DejaFu.Common.isUncaughtException
-
Thread action and lookahead values for
threadDelay:Test.DejaFu.Common.ThreadDelayTest.DejaFu.Common.WillThreadDelay
Changed
- The
UncaughtExceptionconstructor forTest.DejaFu.Common.Failurenow includes the exception value. - Uses of
threadDelayare no longer reported in the trace as a use ofyield.
Removed
- The
Bounded,Enum, andReadinstances forTest.DejaFu.Common.Failure.
0.8.0.0 (2017-09-26)
- Git: dejafu-0.8.0.0
- Hackage: dejafu-0.8.0.0
Changed
- (issue #80) STM traces now include the ID of a newly-created
TVar. - (issue #106) Schedulers are not given the execution trace so far.
- (issue #120) Traces only include a single action of lookahead.
- (issue #122) The
Test.DejaFu.Scheduler.Schedulertype is now a newtype, rather than a type synonym.
0.7.3.0 (2017-09-26)
- Git: dejafu-0.7.3.0
- Hackage: dejafu-0.7.3.0
Added
- The
Test.DejaFu.Common.threadNamesfunction.
Fixed
- (issue #101) Named threads which are only started by a pre-emption are shown in the pretty-printed trace key.
- (issue #118) Escaping a mask by raising an exception correctly restores the masking state (#118).
0.7.2.0 (2017-09-16)
- Git: dejafu-0.7.2.0
- Hackage: dejafu-0.7.2.0
Added
AlternativeandMonadPlusinstances forTest.DejaFu.STM.STM.
Fixed
- The
EqandOrdinstances forTest.DejaFu.Common.ThreadId,CRefId,MVarId, andTVarIdare consistent.
Miscellaneous
- The upper bound on concurrency is <1.2.
0.7.1.3 (2017-09-08)
- Git: dejafu-0.7.1.3
- Hackage: dejafu-0.7.1.3
Fixed
- (issue #111) Aborted STM transactions are correctly rolled back.
Performance
- (issue #105) Use a more efficient approach for an internal component of the systematic testing.
0.7.1.2 (2017-08-21)
- Git: dejafu-0.7.1.2
- Hackage: dejafu-0.7.1.2
Fixed
- (issue #110) Errors thrown with
Control.Monad.failare correctly treated as asynchronous exceptions.
0.7.1.1 (2017-08-16)
- Git: dejafu-0.7.1.1
- Hackage: dejafu-0.7.1.1
Performance
-
(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:
0.7.1.0 - The Discard Release (2017-08-10)
- Git: dejafu-0.7.1.0
- Hackage: dejafu-0.7.1.0
Added
-
(issue #90) A way to selectively discard results or traces:
- Type:
Test.DejaFu.SCT.Discard - Functions:
Test.DejaFu.SCT.runSCTDiscard,resultsSetDiscard,sctBoundDiscard,sctUniformRandomDiscard, andsctWeightedRandomDiscard.
- Type:
-
(issue #90) Discarding variants of the testing functions:
Test.DejaFu.dejafuDiscardTest.DejaFu.dejafuDiscardIO
-
(issue #90)
Test.DejaFu.Defaults.defaultDiscarder.
Performance
- (issue #90) The
Test.DejaFu.SCT.resultsSetandresultsSet'functions discard traces as they are produced, rather than all at the end.
0.7.0.2 (2017-06-12)
- Git: dejafu-0.7.0.2
- Hackage: dejafu-0.7.0.2
Changed
- Remove unnecessary typeclass constraints from
Test.DejaFu.Refinement.check,check',checkFor, andcounterExamples.
Miscellaneous
- Remove an unnecessary dependency on monad-loops.
0.7.0.1 (2017-06-09)
- Git: dejafu-0.7.0.1
- Hackage: dejafu-0.7.0.1
Performance
- The
Test.DejaFu.Refinement.check,check', andcheckForfunctions no longer need to compute all counterexamples before showing only one. - The above and
counterExamplesare now faster even if there is only a single counterexample in some cases.
0.7.0.0 - The Refinement Release (2017-06-07)
- Git: dejafu-0.7.0.0
- Hackage: dejafu-0.7.0.0
Added
-
The
Test.DejaFu.Refinementmodule, re-exported fromTest.DejaFu. -
The
Test.DejaFu.SCT.sctUniformRandomfunction for SCT via random scheduling. -
Smart constructors for
Test.DejaFu.SCT.Way(also re-exported fromTest.DejaFu):Test.DejaFu.SCT.systematically, like the oldSystematically.Test.DejaFu.SCT.randomly, like the oldRandomly.Test.DejaFu.SCT.uniformly, a new uniform (as opposed to weighted) random scheduler.Test.DejaFu.SCT.swarmy, like the oldRandomlybut which can use the same weights for multiple executions.
Changed
- The
default*values are defined inTest.DejaFu.Defaultsand re-exported fromTest.DejaFu. - The
Test.DejaFu.SCT.sctRandomfunction is now calledsctWeightedRandomand can re-use the same weights for multiple executions.
Removed
-
The
Test.DejaFu.SCT.Waytype is now abstract, so its constructors are no longer exported:Test.DejaFu.SCT.SystematicallyTest.DejaFu.SCT.Randomly
-
The
Test.DejaFu.SCT.sctPreBound,sctFairBound, andsctLengthBoundfunctions.
Fixed
- (issue #81)
Test.DejaFu.Conc.subconcurrencyno longer re-uses IDs.
0.6.0.0 (2017-04-08)
- Git: dejafu-0.6.0.0
- Hackage: dejafu-0.6.0.0
Changed
- The
Test.DejaFu.Conc.Conc n r atype isConcT r n a, and has aMonadTransinstance. - The
Test.DejaFu.SCT.Waytype is a GADT, and does not expose the type parameter of the random generator.
Removed
- The
NFDatainstance forTest.DejaFu.SCT.Way.
Miscellaneous
Test.DejaFu.Commonforms part of the public API.- Every definition, class, and instance now has a Haddock
@sinceannotation.
0.5.1.3 (2017-04-05)
- Git: dejafu-0.5.1.3
- Hackage: dejafu-0.5.1.3
Miscellaneous
- The version bounds on concurrency are 1.1.*.
0.5.1.2 (2017-03-04)
- Git: dejafu-0.5.1.2
- Hackage: dejafu-0.5.1.2
Note: this version was misnumbered! It should have caused a minor
: version bump!
Added
MonadRefandMonadAtomicRefinstances forTest.DejaFu.Conc.ConcusingCRef.
Fixed
- A long-standing bug where if the main thread is killed with a
throwTo, the throwing neither appears in the trace nor correctly terminates the execution.
Miscellaneous
- The upper bound on concurrency is <1.1.1.
0.5.1.1 (2017-02-25)
- Git: dejafu-0.5.1.1
- Hackage: dejafu-0.5.1.1
Fixed
- Fix using incorrect correct scheduler state after a
subconcurrencyaction. - Fix infinite loop in SCT of subconcurrency.
0.5.1.0 (2017-02-25)
- Git: dejafu-0.5.1.0
- Hackage: dejafu-0.5.1.0
Added
-
NFDatainstances for:Test.DejaFu.ResultTest.DejaFu.Common.ThreadIdTest.DejaFu.Common.CRefIdTest.DejaFu.Common.MVarIdTest.DejaFu.Common.TVarIdTest.DejaFu.Common.IdSourceTest.DejaFu.Common.ThreadActionTest.DejaFu.Common.LookaheadTest.DejaFu.Common.ActionTypeTest.DejaFu.Common.TActionTest.DejaFu.Common.DecisionTest.DejaFu.Common.FailureTest.DejaFu.Common.MemTypeTest.DejaFu.SCT.BoundsTest.DejaFu.SCT.PreemptionBoundTest.DejaFu.SCT.FairBoundTest.DejaFu.SCT.LengthBoundTest.DejaFu.SCT.WayTest.DejaFu.STM.Result
-
Eq,Ord, andShowinstances forTest.DejaFu.Common.IdSource. -
Strict variants of
Test.DejaFu.SCT.runSCTandresultsSet:runSCT'andresultsSet'.
0.5.0.2 (2017-02-22)
- Git: dejafu-0.5.0.2
- Hackage: dejafu-0.5.0.2
Note: this version was misnumbered! It should have caused a major
: version bump!
Added
StopSubconcurrencyconstructor forTest.DejaFu.Common.ThreadAction.
Changed
- A
Test.DejaFu.Common.StopConcurrencyaction appears in the execution trace immediately after the end of aTest.DejaFu.Conc.subconcurrencyaction.
Fixed
- A
Test.DejaFu.Conc.subconcurrencyaction inherits the number of capabilities from the outer computation.
Miscellaneous
Test.DejaFu.SCTcompiles withMonoLocalBindsenabled (implied byGADTsandTypeFamilies), which may be relevant to hackers.
0.5.0.1 (2017-02-21)
- Git: dejafu-0.5.0.1
- Hackage: ps!**
Fixed
readMVaris considered a "release action" for the purposes of fair-bounding.
0.5.0.0 - The Way Release (2017-02-21)
- Git: dejafu-0.5.0.0
- Hackage: dejafu-0.5.0.0
Added
-
Eqinstances forTest.DejaFu.Common.ThreadActionandLookahead. -
Thread action and lookahead values for
tryReadMVar:Test.DejaFu.Common.TryReadMVarTest.DejaFu.Common.WillTryReadMVar
-
The testing-only
Test.DejaFu.Conc.subconcurrencyfunction. -
SCT through weighted random scheduling:
Test.DejaFu.SCT.sctRandom. -
The
Test.DejaFu.SCT.Waytype, used by the new functionsrunSCTandresultsSet.
Changed
- All the functions which took a
Test.DejaFu.SCT.Boundsnow take aWayinstead.
Fixed
- Some previously-missed
CRefaction dependencies are no longer missed.
Miscellaneous
- The version bounds on concurrency are 1.1.0.*.
- A bunch of things were called "Var" or "Ref", these are now consistently "MVar" and "CRef".
- Significant performance improvements in both time and space.
- The dpor package has been merged back into this, as it turned out not to be very generally useful.
0.4.0.0 - The Packaging Release (2016-09-10)
- Git: dejafu-0.4.0.0
- Hackage: dejafu-0.4.0.0
Added
- The
Test.DejaFu.runTestMandrunTestM'functions. - The
Test.DejaFu.Conc.runConcurrentfunction. - The
Test.DejaFu.STM.runTransactionfunction. - The
Test.DejaFu.Commonmodule.
Changed
- The
Control.*modules have all been split out into a separate concurrency package. - The
Test.DejaFu.Deterministicmodule has been renamed toTest.DejaFu.Conc. - Many definitions from other modules have been moved to the
Test.DejaFu.Commonmodule. - The
Test.DejaFu.autocheck'function takes the schedule bounds as a parameter. - The
Test.DejaFu.Conc.Conctype no longer has the STM type as a parameter. - The
STspecific functions inTest.DejaFu.SCTare polymorphic in the monad. - The termination of the main thread in execution traces appears as a
single
Stop, rather than the previousLift, Stop. - Execution traces printed by the helpful functions in
Test.DejaFuinclude a key of thread names.
Removed
- The
Test.DejaFu.runTestIOandrunTestIO'functions: userunTestMandrunTestM'instead. - The
Test.DejaFu.Conc.runConcSTandrunConcIOfunctions: userunConcurrentinstead. - The
Test.DejaFu.STM.runTransactionSTandrunTransactionIOfunctions: userunTransactioninstead. - The
IOspecific functions inTest.DejaFu.SCT.
0.3.2.1 (2016-07-21)
- Git: dejafu-0.3.2.1
- Hackage: dejafu-0.3.2.1
Fixed
- (issue #55) Fix incorrect detection of deadlocks with some nested STM transactions.
0.3.2.0 (2016-06-06)
- Git: dejafu-0.3.2.0
- Hackage: dejafu-0.3.2.0
Fixed
- (issue #40) Fix missing executions with daemon threads with uninteresting first actions. This is significantly faster with dpor-0.2.0.0.
Performance
- When using dpor-0.2.0.0, greatly improve dependency inference of exceptions during systematic testing.
- Improve dependency inference of STM transactions during systematic testing.
0.3.1.1 (2016-05-26)
- Git: dejafu-0.3.1.1
- Hackage: dejafu-0.3.1.1
Miscellaneous
- Now supports GHC 8.
0.3.1.0 (2016-05-02)
- Git: dejafu-0.3.1.0
- Hackage: dejafu-0.3.1.0
Fixed
- Fix inaccurate counting of pre-emptions in an execution trace when relaxed memory commit actions are present.
0.3.0.0 (2016-04-03)
- Git: dejafu-0.3.0.0
- Hackage: dejafu-0.3.0.0
The minimum supported version of GHC is now 7.10.
I didn't write proper release notes, and this is so far back I don't really care to dig through the logs.
0.2.0.0 (2015-12-01)
- Git: 0.2.0.0
- Hackage: dejafu-0.2.0.0
I didn't write proper release notes, and this is so far back I don't really care to dig through the logs.
0.1.0.0 - The Initial Release (2015-08-27)
- Git: 0.1.0.0
- Hackage: dejafu-0.1.0.0
Added
- Everything.