packages feed

quickcheck-lockstep-0.7.0: CHANGELOG.md

# Revision history for quickcheck-lockstep

## 0.7.0 -- 2025-05-09

* BREAKING: Rename `lookupGVar` to `realLookupVar`, and add a `RealLookup`
  convenience alias that is used in the type of `RealLookupVar`. The type of
  `realLookupVar` is slightly different than the type of `lookupGVar`, but only
  in the positions of universal quantification over types.
* NON-BREAKING: improved error messages for `realLookupVar` and `lookupVar`,
  which might throw an error when variables are ill-defined or unevaluable.
* PATCH: some documentation is moved from convenience aliases like
  `ModelFindVariables` to the functions have these aliases in their type, like
  `findVars`.
* 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 `shrinkVar` function and `ModelShrinkVar` type alias.
  Use `shrinkVar` to 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 `ModelFindVariables` and `ModelLookup` to
  `ModelVarContext`. Occurrences of `ModelFindVariables` and `ModelLookup` in
  the `InLockstep` class are replaced by the newly exposed `ModelVarContext`. A
  `ModelFindVariables` can be recovered from a `ModelVarContext` using the new
  `findVars` functions. A `ModelLookup` can be recovered from a
  `ModelVarContext` using the new `lookupVars` function. Since these functions
  can be recovered from `ModelVarContext`, existing tests are guaranteed to be
  adaptable to the new `InLockstep` API. This breaking changes means that, for
  example ...
  ```haskell
  arbitraryWithVars lookupVars = ...
    (lookupVars ...)
  ```
  ... should be changed to ...
  ```haskell
  arbitraryWithVars vctx = ...
    (lookupVars vctx ...)
  ```

## 0.5.1 -- 2024-08-27

* PATCH: allow building with `ghc-9.10`
* PATCH: bump dependency versions for `containers` and `QuickCheck`

## 0.5.0 -- 2024-03-25

* BREAKING: Update `quickcheck-dynamic` dependency to `>=3.4.1`. The main change
  is that `quickcheck-dynamic`'s `StateModel` class now has an associated type
  `Error`, the use of which is optional. However, as a result, some functions in
  `quickcheck-lockstep` change type signatures: the default `monitoring`
  function, `runActions`, and `runActionsBracket`.

## 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,
  `HasVariables` and `Show` instances have changed, and a new `unsafeMkGVar`
  smart constructor is exposed.
* Add compatibility with ghc-9.8

## 0.3.0 -- 2023-10-17

* BREAKING: Update `quickcheck-dynamic` dependency to `>=3.3`.
* Add compatibility with ghc-9.6 (Javier Sagredo)

## 0.2.1 -- 2022-12-06

* Expose necessary definitions for custom `Operation` instances (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 `labelActions` function
* Generalise `runActionsBracket` (Joris Dral)
* Expose getter for the model in `Lockstep` (Joris Dral)

## 0.1.0 -- 2022-10-11

* First release