Changelog for quickcheck-dynamic-3.4.0
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
As a minor extension, we also keep a semantic version for the UNRELEASED
changes.
3.4.0 - 2024-03-01
- Added some lightweight negative-shrinking based on a simple dependency analysis.
- Added the option to return errors from actions by defining
type Error state
. When this is definedperform
has return typem (Either (Error state) (Realized m a))
, when it is left as the default the type remainsm (Realized m a)
. - Changed
withGenQ
to require a predicate when defining aQuantification
. Note: This is technically a breaking change as the interface changed
3.3.1
- Adapt code to not constrain mtl version too much
3.3.0
- Added suppport for GHC 9.6.2 compiler
3.2.0
- Added support for negative testing via
validFailingAction
andpostconditionOnFailure
callbacks inStateModel
andRunModel
.
3.1.1 - 2023-06-26
- Added instances for
HasVariables
with custom error messages to avoid the issue of missingGeneric
instances causing difficult to understand type errors.
3.1.0 - 2023-04-10
- BREAKING: Change the type of
postcondition
to allow you to express property monitoring (e.g. stats or counterexamples) in the postcondition itself - rather than duplicating code for counterexamples in themonitoring
function.
3.0.3 - 2023-04-18
- Added
hasNoVariablesQ
andforAllNonVariableDL
functions to help make quantification require less boilerplate inDL
properties.
3.0.2 - 2023-02-17
- Added instances of
HasVariables
for Word types - Exported definition of
HasNoVariables
to make it useable with deriving via in downstream packages (whoops!) - Fixed impossible to use
nextVar
arguments toforAllUniqueDL
3.0.1 - 2023-02-15
- Remove template haskell dependency
3.0.0 - 2023-02-14
- BREAKING: Add
HasVariables
class to keep track of symbolic variables and automatically insert precondition checks for well-scopedness of variables. - BREAKING: Remove some unnecessary and unusead features in dynamic logic, including re-running tests from a counterexample directly.
- Improved printing of counterexamples in DL - they are now printed as code that can be copied more-or-less verbatim to create a runnable counterexample in code.
- Made the variable context explicit to avoid having to keep track of symbolic variables in the model
- This introduces the
ctxAtType
andarbitraryVar
functions to use in action generators (c.f. theRegistryModel.hs
example).
- This introduces the
2.0.0 - 2022-10-11
- BREAKING: Add
Realized
type family to distinguish between the model- and real type of an action - BREAKING: Introduce
RunModel
type class to interpret Model-generated sequence of actions against real-world implementation- Move
perform
method fromStateModel
to this new type-class - Also split
postcondition
andmonitoring
out from theStateModel
to theRunModel
type class
- Move
- Added Thread registry example based on io-sim concurrency simulation library
1.1.0 - 2022-08-27
- Fix broken links in Hackage-generated documentation and link to other Quviq papers
- Add
Show a
constraint onmonitoring
1.0.0
- Initial publication of quickcheck-dynamic library on Hackage
- Provide base
StateModel
andDynamicLogic
tools to write quickcheck-based models, express properties, and test them