Changelog for dejafu-0.6.0.0
Release Notes
All notable changes to this project will be documented in this file.
This project is versioned according to the Package Versioning Policy, the de facto standard Haskell versioning scheme.
0.6.0.0 [2017-04-08] (git tag: dejafu-0.6.0.0)
https://hackage.haskell.org/package/dejafu-0.6.0.0
Test.DejaFu.Conc
- The
Conc n r atype is nowConcT r n a, and has been given aMonadTransinstance. Uses ofliftappear in the execution trace in the same way asliftBaseandliftIO.- The
ConcIOandConcSTaliases have been updated, so this should be an invisible change to most users.
- The
Test.DejaFu.SCT
Wayis now a GADT, no longer taking a type parameter. This greatly improves type inference when theSystematicallyconstructor is used.- The
NFDatainstance forWayis now gone. The alternative was requiring that anyRandomGenused also implementNFData, which is very restrictive
- The
Miscellaneous
- There is now a changelog.
- Test.DejaFu.Common is now considered to form part of the public API of the library.
- Every definition and instance now has a Haddock "@since" annotation.
0.5.1.3 [2017-04-05] (git tag: dejafu-0.5.1.3)
https://hackage.haskell.org/package/dejafu-0.5.1.3
Miscellaneous
- The version range on the concurrency package has been changed to 1.1.*.
0.5.1.2 [2017-03-04] (git tag: dejafu-0.5.1.2)
https://hackage.haskell.org/package/dejafu-0.5.1.2
This version was misnumbered! It should have caused a minor version bump!
Test.DejaFu.Conc
- New
MonadRefandMonadAtomicRefinstances for theConctype usingCRef.
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 maximum supported version of the concurrency package has been changed to 1.1.1.*.
0.5.1.1 [2017-02-25] (git tag: dejafu-0.5.1.1)
https://hackage.haskell.org/package/dejafu-0.5.1.1
Fixed
- The correct scheduler state is now passed to the scheduler immediately after the termination of a
subconcurrencyaction. - SCT of subconcurrency no longer loops infinitely.
0.5.1.0 [2017-02-25] (git tag: dejafu-0.5.1.0)
https://hackage.haskell.org/package/dejafu-0.5.1.0
Test.DejaFu
- A new
NFDatainstance forResult.
Test.DejaFu.Common
- New instances:
NFDataforThreadId,CRefId,MVarId,TVarId,IdSource,ThreadAction,Lookahead,ActionType,TAction,Decision,Failure, andMemType.Eq,Ord, andShowinstances forIdSource.
Test.DejaFu.SCT
- New
NFDatainstances forWay,Bounds,PreemptionBound,FairBound, andLengthBound. - New strict variants of
runSCTandresultsSet:runSCT'andresultsSet'.
Test.DejaFu.STM
- A new
NFDatainstance forResult.
0.5.0.2 [2017-02-22] (git tag: dejafu-0.5.0.2)
https://hackage.haskell.org/package/dejafu-0.5.0.2
This version was misnumbered! It should have caused a major version bump!
Test.DejaFu.Common
- A new
StopSubconcurrencyconstructor ofThreadAction.
Changed
- A
StopConcurrencyaction appears in the execution trace immediately after the end of asubconcurrencyaction (much like thePopCatchingandResetMaskingactions which appear after a catch and mask). - A
subconcurrencyaction now inherits the number of capabilities from the outer computation, rather than being reset to 2 as before.
Miscellaneous
- Test.DejaFu.SCT now compiles with MonoLocalBinds enabled (implied by GADTs and TypeFamilies), which may be relevant to hackers.
0.5.0.1 [2017-02-21] (git tag: dejafu-0.5.0.1)
This version was never pushed to hackage, whoops!
Fixed
readMVaris once again considered a "release action" for the purposes of fair-bounding.
0.5.0.0 [2017-02-21] (git tag: dejafu-0.5.0.0)
https://hackage.haskell.org/package/dejafu-0.5.0.0
Test.DejaFu
- All the functions which did take a
Boundsnow take aWayinstead and support random scheduling as well.
Test.DejaFu.Common
- New
Eqinstances forThreadActionandLookahead. - A
TryReadMVarconstructor forThreadActionand a correspondingWillTryReadMVarconstructor forLookahead.
Test.DejaFu.Conc
- A new testing-only
subconcurrencyfunction, to run a concurrent action and do something with its result in the same concurrent context, even if it fails.
Test.DejaFu.SCT
- An
sctRandomfunction to run a fixed number of randomly-scheduled executions of a program. - The
Waytype, to abstract over how to run a concurrent program, used by new functionsrunSCTandresultsSet.
Fixed
- Some previously-missed
CRefaction dependencies are no longer missed.
Miscellaneous
- The supported version of the concurrency package was bumped to 1.1.0.0, introducing
tryReadMVar. - 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. There is no direct replacement, but I have no intent to update it, so the dpor package is now deprecated.
0.4.0.0 [2016-09-10] (git tag: dejafu-0.4.0.0)
https://hackage.haskell.org/package/dejafu-0.4.0.0
Test.DejaFu
- The
autocheck'function now takes the schedule bounds as a parameter. - New
runTestMandrunTestM'functions, monad-polymorphic variants of the now-removedrunTestIOandrunTestIO'functions.
Test.DejaFu.Conc
- The
Conctype no longer has the STM type as a parameter. - A new
runConcurrentfunction, a monad-polymorphic version of the now-removedrunConcSTandrunConcIOfunctions.
Test.DejaFu.SCT
- The
ST-specific functions are now monad-polymorphic. - The
IOfunction variants have been removed.
Test.DejaFu.STM
- A new
runTransactionfunction, a monad-polymorphic version of the now-removedrunTransactionSTandrunTransactionIOfunctions.
Changed
- The termination of the main thread in execution traces now appears as a single
Stop, rather than the sequenceLift, Stop. - Execution traces printed by the helpful functions in Test.DejaFu now include a key of thread names.
Miscellaneous
- Remodularisation:
- The Control.* modules have all been split out into a separate "concurrency" package.
- Many definitions from other modules have been moved to the new Test.DejaFu.Common module.
- The Test.DejaFu.Deterministic module has been renamed to Test.DejaFu.Conc
0.3.2.1 [2016-07-21] (git tag: dejafu-0.3.2.1)
https://hackage.haskell.org/package/dejafu-0.3.2.1
Fixed
- The implementation of the STM
orElseforSTMLikeincorrectly handled some state non-associatively, leading to false deadlocks being reported in some cases.
0.3.2.0 [2016-06-06] (git tag: dejafu-0.3.2.0)
https://hackage.haskell.org/package/dejafu-0.3.2.0
Builds with both dpor-0.1 and dpor-0.2, however some improvements require dpor-0.2.
Fixed
- (faster with dpor-0.2) Executions missed due to daemon threads with uninteresting first actions are no longer missed.
Changed
- (requires dpor-0.2) Significantly improved dependency inference of exceptions, greatly improving performance of testcases using exceptions.
- Significantly improved dependency inference of STM transactions, greatly improving performance of testcases using STM.
0.3.1.1 [2016-05-26] (git tag: dejafu-0.3.1.1)
https://hackage.haskell.org/package/dejafu-0.3.1.1
Miscellaneous
- Now supports GHC 8.
0.3.1.0 [2016-05-02] (git tag: dejafu-0.3.1.0)
https://hackage.haskell.org/package/dejafu-0.3.1.0
Fixed
- Context switches around relaxed memory commit actions could cause the number of pre-emptions in an execution to be miscounted, leading to the pre-emption bounding being too lenient.
0.3.0.0 [2016-04-03] (git tag: dejafu-0.3.0.0)
https://hackage.haskell.org/package/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 tag: 0.2.0.0)
https://hackage.haskell.org/package/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 [2015-08-27] (git tag: 0.1.0.0)
https://hackage.haskell.org/package/dejafu-0.1.0.0
Initial release. Go read the API docs.