Changelog for QuickCheck-2.9

QuickCheck 2.9 (released 2016-07-10) * Arbitrary, CoArbitrary and Function instances for more types * Generics for automatic Function instances * A new combinator "again" which undoes the effect of "once" * Remove "exhaustive" from Testable typeclass; instead, combinators which are nonexhaustive (such as forAll) call "again", which should be more robust * Drop support for GHC 6.x * Fixed bugs: * arbitrarySizedBoundedIntegral wasn't generating huge integers * verboseCheck failed with Test.QuickCheck.Function * label had a space leak QuickCheck 2.8.2 (released 2016-01-15) * GHC 8 support * Add Arbitrary and CoArbitrary instances for types in containers package * Improve speed of shuffle combinator * Only print to stderr if it's a terminal. * Small changes: slightly improve documentation, remove redundant constraints from some functions' types, small improvements to Test.QuickCheck.All. QuickCheck 2.8.1 (released 2015-04-03) * Fix bug where exceptions thrown printing counterexamples weren't being caught when terminal output was disabled * Don't export Test.QuickCheck.Property.result QuickCheck 2.8 (released 2015-03-18) * New features: * Support for GHC 7.10 * Arbitrary instance for Natural * New generators shuffle and sublistOf * Support for generic coarbitrary * When using the cover combinator, insufficient coverage now causes the property to fail * API changes: * Test.QuickCheck.Function: new pattern synonym Fn * genericShrink no longer requires Typeable * Result has a new constructor InsufficientCoverage * resize throws an error if the size is negative * Bug fixes: * Fix memory leaks * Exceptions thrown by callbacks now cause the test to fail * Fixed a bug where the cover combinator wouldn't give a warning if coverage was 0% QuickCheck 2.7.3 (released 2014-03-24) * Add annotations for Safe Haskell. QuickCheck 2.7.2 (released 2014-03-22) * Fix bug in cabal file which broke cabal test QuickCheck 2.7.1 (released 2014-03-20) * Fixed bug - the Small modifier didn't work on unsigned types * Changed arbitrarySizedIntegral to have an Integral constraint instead of just Num QuickCheck 2.7 (released 2014-03-19) * New features: * New genericShrink function provides generic shrinking with GHC. * New combinator x === y: fails if x /= y, but also prints their values * New function generate :: Gen a -> IO a for running a generator. * New combinators infiniteList and infiniteListOf for generating infinite lists. * Several combinators added to the main Test.QuickCheck module which were previously languishing in other modules. Of particular interest: quickCheckAll, ioProperty. * New combinators delay and capture which can be used (unsafely!) to reuse the random number seed. Useful for generating polymorphic (rank-2) values. * A new Discard data type and a Testable instance for discarding test cases. * All modifiers now have Functor instances and accessor functions. * Pressing ctrl-C during shrinking now shows the last failed test case, rather than the current shrinking candidate. * Experimental support for UHC. You will need the latest version of Cabal from git. * Better distribution of test data: * The Int generator now only generates fairly small numbers. * The new Small and Large modifiers control the distribution of integers (Small generates small numbers, Large from the whole range). * Floating-point numbers shrink better. * Improved random number generation: * QuickCheck now uses TFGen rather than StdGen on newer versions of GHC, because StdGen's random numbers aren't always random. * 'variant' now uses a prefix code. This should prevent some potential bananaskins with coarbitrary. * API changes: * The Gen monad now uses an abstract type QCGen rather than StdGen. * The Result type now returns the thrown exception and number of failed shrink attempts. * Property is now a newtype rather than Gen Prop as it was before. * promote is moved into the new module Test.QuickCheck.Gen.Unsafe. * 'printTestCase' is deprecated - its new name is 'counterexample' * 'morallyDubiousIOProperty' is deprecated - its new name is 'ioProperty', no moral judgement involved :) QuickCheck 2.6, released 2013-03-07 * Add convenience Function instances for up to 7-tuples * Make stderr line buffered to reduce console I/O. * Return a flag to say whether the test case was interrupted. QuickCheck 2.5, released 2012-06-18 * Replace maxDiscard with maxDiscardRatio * Remove Testable () instance. * Added a 'discard' exception that discards the current test case * Add accessors for modifiers (where it makes sense) * Rename 'stop' to 'abort' to avoid a name clash * Added a 'once' combinator * If a property is of type Bool, only run it once * Add coarbitraryEnum to Test.QuickCheck module. * Add 'coarbitrary' helper for Enums. * Rejiggled the formatting code to support multi-line error messages * Add instances for Ordering and Fixed. * Added arbitraryBoundedEnum generator (thanks to Antoine Latter). * Add verboseCheckAll and polyverboseCheck function for usability.