Changelog for quickcheck-lockstep-0.8.2
Revision history for quickcheck-lockstep
0.8.2 -- 2025-10-29
- PATCH: support
QuickCheck-2.17
0.8.1 -- 2025-07-18
- PATCH: support
QuickCheck-2.16
0.8.0 -- 2025-07-03
-
BREAKING: Support
quickcheck-dynamic-4. Going from version 3 to 4, some breaking changes were introduced inquickcheck-dynamic, which cascades into changes forquickcheck-lockstep. The changes to the latter are listed below together with hints as to how to migrate fromquickcheck-lockstep-0.7toquickcheck-lockstep-0.8. For migrating fromquickcheck-dynamic-3toquickcheck-dynamic-4, see thequickcheck-dynamic-4changelog.-
The
Realizedtype family is removed.-
Types of the form
Realized m aare replaced byaeverywhere.Users should make this change in their own code as well.
-
Types of the form
LookUp mare replaced byLookUpeverywhere.Users should make this change in their own code as well.
-
The
RealLookUptype synonym no longer has anmtype argument, and theProxy mtype is removed from the right-hand side of the definition. Types of the formRealLookup m opare replaced byRealLookup opeverywhere.Users should make this change in their own code as well. (Any values of) the type
Proxy mthat were previously passed to functions of theRealLookuptype can be removed. -
WrapRealized mis replaced byIdentity. TheWrapRealized mtype and its helper functions (intOpRealizedId,intOpTransformer) are removed completely. A new helper function calledintOpIdentityis added. For theOpfrom theSumProdmodule, the instancesInterpretOp Op (WrapRealized IO),InterpretOp Op (WrapRealized (StateT s m)), andInterpretOp Op (WrapRealized (ReaderT r m))are removed and replaced by anInterpretOp Op Identityinstance.Instead of providing an
InterpretOp op (WrapRealized m)instance, users should now provide anInterpretOp op Identityinstance ifopis a custom type that is not included inquickcheck-lockstep(likeSumProd.Op, which comes an instance already defined). UseintOpIdentityto help define this instance for customoptypes.
-
-
The
Errortype family is moved fromStateModeltoRunModel, and now requires an additionalmtype paramer. Forquickcheck-lockstep, types of the formError stare replaced byError st meverywhere.The user should make this change in their own code as well.
-
-
PATCH: enable a bunch of GHC warnings
-
PATCH: use GHC2021, and if not available, enable all GHC2021 language extensions explicitly.
0.7.0 -- 2025-05-09
- BREAKING: Rename
lookupGVartorealLookupVar, and add aRealLookupconvenience alias that is used in the type ofRealLookupVar. The type ofrealLookupVaris slightly different than the type oflookupGVar, but only in the positions of universal quantification over types. - NON-BREAKING: improved error messages for
realLookupVarandlookupVar, which might throw an error when variables are ill-defined or unevaluable. - PATCH: some documentation is moved from convenience aliases like
ModelFindVariablesto the functions have these aliases in their type, likefindVars. - BREAKING: Enable verbose counterexamples by default in the 'postcondition' function using 'postconditionWith'.
- NON-BREAKING: Add a new 'postconditionWith' function that can be configured to produce more verbose counterexamples. With verbosity disabled, all states of the model are printed in a counterexample. If verbosity is enabled, the counterexample will also include all responses from the real system and the model.
- NON-BREAKING: Add a new
shrinkVarfunction andModelShrinkVartype alias. UseshrinkVarto shrink variables to earlier variables of the same type. - PATCH: allow building with
ghc-9.12 - PATCH: support
containers-0.8
0.6.0 -- 2024-12-03
- BREAKING: Generalise
ModelFindVariablesandModelLookuptoModelVarContext. Occurrences ofModelFindVariablesandModelLookupin theInLockstepclass are replaced by the newly exposedModelVarContext. AModelFindVariablescan be recovered from aModelVarContextusing the newfindVarsfunctions. AModelLookupcan be recovered from aModelVarContextusing the newlookupVarsfunction. Since these functions can be recovered fromModelVarContext, existing tests are guaranteed to be adaptable to the newInLockstepAPI. This breaking changes means that, for example ...
... should be changed to ...arbitraryWithVars lookupVars = ... (lookupVars ...)arbitraryWithVars vctx = ... (lookupVars vctx ...)
0.5.1 -- 2024-08-27
- PATCH: allow building with
ghc-9.10 - PATCH: bump dependency versions for
containersandQuickCheck
0.5.0 -- 2024-03-25
- BREAKING: Update
quickcheck-dynamicdependency to>=3.4.1. The main change is thatquickcheck-dynamic'sStateModelclass now has an associated typeError, the use of which is optional. However, as a result, some functions inquickcheck-lockstepchange type signatures: the defaultmonitoringfunction,runActions, andrunActionsBracket.
0.4.1 -- 2024-03-20
- PATCH: fix compilation failures when using
mtl ^>=2.3
0.4.0 -- 2024-02-17
- BREAKING: Counter-examples now produce valid code. To facilitate this,
HasVariablesandShowinstances have changed, and a newunsafeMkGVarsmart constructor is exposed. - Add compatibility with ghc-9.8
0.3.0 -- 2023-10-17
- BREAKING: Update
quickcheck-dynamicdependency to>=3.3. - Add compatibility with ghc-9.6 (Javier Sagredo)
0.2.1 -- 2022-12-06
- Expose necessary definitions for custom
Operationinstances (Joris Dral)
0.2.0 -- 2022-11-11
- Relax bounds on
base(support up to ghc 9.4) - Show real/mock response in addition to observable response
(see
showRealResponse) - Add
labelActionsfunction - Generalise
runActionsBracket(Joris Dral) - Expose getter for the model in
Lockstep(Joris Dral)
0.1.0 -- 2022-10-11
- First release