## 0.6 [2021.08.29]
* Allow building with `template-haskell-2.18.0.0` (GHC 9.2).
* Using `deriveEnum` and `deriveIx` on poly-kinded data family instances may
  now require the use of the `TypeInType` extension if using GHC 8.0, 8.2, or
  8.4. (On later versions of GHC, `TypeInType`'s functionality has been folded
  into `PolyKinds`.)
* Support deriving `Eq`, `Ord`, and `Show` instances for data types with fields
  of type `Int32#` or `Word32#` on GHC 9.2 or later.
* `deriveVia` now instantiates "floating" `via` type variables (i.e., type
  variables mentioned in the `via` type that are not mentioned in the instance
  context or the first argument to `Via`) to `Any` in the generated code. As a
  result, `deriveVia` no longer generates code that produces `-Wunused-foralls`
  warnings.

### 0.5.10 [2020.09.30]
* Allow building with `template-haskell-2.17.0.0` (GHC 9.0).

### 0.5.9 [2019.06.08]
* Have `deriveFunctor` and `deriveFoldable` derive implementations of `(<$)`
  and `null`, which GHC starting doing in 8.2 and 8.4, respectively.
* Fix a bug in which `deriveOrd{,1,2}` could generate incorrect code for data
  types with a combination of nullary and non-nullary constructors.
* Fix a bug in which `deriveFunctor` would fail on sufficiently complex uses
  of rank-n types in constructor fields.
* Fix a bug in which `deriveFunctor` and related functions would needlessly
  reject data types whose last type parameters appear as oversaturated
  arguments to a type family.

### 0.5.8 [2019.11.26]
* Allow building with GHC 8.10.

### 0.5.7 [2019.08.27]
* Permit `deriveVia` to use "floating" `via` type variables, such as the `a`
  in:

  ```hs
  deriveVia [t| forall a. Show MyInt `Via` Const Int a |]
  ```

### 0.5.6 [2019.05.02]
* Support deriving `Eq`, `Ord`, and `Show` instances for data types with fields
  of type `Int8#`, `Int16#`, `Word8#`, or `Word16#` on GHC 8.8 or later.

### 0.5.5 [2019.04.26]
* Support `th-abstraction-0.3` or later.

### 0.5.4 [2019.01.21]
* Expose `Internal` modules.

### 0.5.3 [2019.01.20]
* Fix a bug in which `deriveEnum`/`deriveIx` would generate ill-scoped code
  for certain poly-kinded data types.

### 0.5.2 [2018.09.13]
* Fix a bug (on GHC 8.7 and above) in which `deriveGND`/`deriveVia` would
  generate ill-scoped code.

### 0.5.1 [2018.07.11]
* Have `deriveGND`/`deriveVia` throw an error if an incorrect number of
  arguments are supplied to the type class.

## 0.5 [2018.07.01]
* Backport the changes to `GeneralizedNewtypeDeriving` and `DerivingVia` code
  generation from
  [Trac #15290](https://ghc.haskell.org/trac/ghc/ticket/15290).

  As a result, code generated by `deriveGND` or `deriveVia` now requires the
  `InstanceSigs` and `ScopedTypeVariables` language extensions. On the other
  hand, the generated code no longer requires the `ImpredicativeTypes`
  extension (unless any class methods use higher-rank types).
* Allow building with `containers-0.6` and `template-haskell-2.14`.

### 0.4.3 [2018.06.16]
* Fix a bug that caused debug-enabled GHC builds to panic when generating
  code from this library (see
  [Trac #15270](https://ghc.haskell.org/trac/ghc/ticket/15270)).
  The fix only affects the library's internals, so no changes are user-facing.

### 0.4.2 [2018.05.14]
* Backport the fixes for GHC Trac
  [#14364](https://ghc.haskell.org/trac/ghc/ticket/14364)
  and
  [#14918](https://ghc.haskell.org/trac/ghc/ticket/14918),
  which significantly improve the compliation times of derived `Read`
  instances.

### 0.4.1 [2018.02.04]
* Add `Data.Deriving.Via`, which allows emulating the behavior of the
  `GeneralizedNewtypeDeriving` and `DerivingVia` extensions.
* Test suite fixes for GHC 8.4.

## 0.4 [2017.12.07]
* Incorporate changes from the `EmptyDataDeriving` proposal (which is in GHC
  as of 8.4):
  * For derived `Eq` and `Ord` instances for empty data types, simply return
    `True` and `EQ`, respectively, without inspecting the arguments.
  * For derived `Read` instances for empty data types, simply return `pfail`
    (without `parens`).
  * For derived `Show` instances for empty data types, inspect the argument
    (instead of `error`ing). In addition, add `showEmptyCaseBehavior` to
    `ShowOptions`, which configures whether derived instances for empty data
    types should use the `EmptyCase` extension (this is disabled by default).
  * For derived `Functor` and `Traversable` instances for empty data
    types, make `fmap` and `traverse` strict in its argument.
  * For derived `Foldable` instances, do not error on empty data types.
    Instead, simply return the folded state (for `foldr`) or `mempty` (for
    `foldMap`), without inspecting the arguments.
  * Add `FFTOptions` (`Functor`/`Foldable`/`Traversable` options) to
    `Data.Functor.Deriving`, along with variants of existing functions that
    take `FFTOptions` as an argument. For now, the only configurable option is
    whether derived instances for empty data types should use the `EmptyCase`
    extension (this is disabled by default).
* Backport the fix to #13328. That is, when deriving `Functor` or
  `Traversable` instances for data types where the last type variable is at
  phantom role, generated `fmap`/`traverse` implementations now use `coerce`
  for efficiency.
* Rename `emptyCaseBehavior` from `Data.Functor.Deriving` to
  `fftEmptyCaseBehavior`.

### 0.3.6 [2017.04.10]
* Make `deriveTraversable` use `liftA2` in derived implementations of
  `traverse` when possible, now that `liftA2` is a class method of
  `Applicative` (as of GHC 8.2)
* Make `deriveShow` use `showCommaSpace`, a change introduced in GHC 8.2

### 0.3.5 [2016.12.12]
* Fix bug in which derived `Ord` instances for datatypes with many constructors
  would fail to typecheck

### 0.3.4 [2016.10.20]
* Fix bug in which infix record selectors weren't shown with parentheses in derived `Show` instances
* Fix bug in which record selectors weren't parsed correctly in derived `Read` instances

### 0.3.3 [2016.09.11]
* Add `Data.Bounded.Deriving`, which allows deriving `Bounded` with TH.
* Add `Data.Enum.Deriving`, which allows deriving `Enum` with TH.
* Add `Data.Ix.Deriving`, which allows deriving `Ix` with TH.
* Fix bug in which derived `Show` instance would parenthesize the output too eagerly

### 0.3.2
* Incorporate a fix to GHC Trac #10858, which will be introduced in GHC 8.2
* Fix bug in which derived `Ord` instances accidentally swapped their less-than(-or-equal-to) and greater-than(-or-equal-to) methods
* Fix GHC HEAD build

### 0.3.1
* Allow deriving `Functor` and `Foldable` instances for datatypes containing unboxed tuples
* Microoptimization in derived instances of higher-order versions of `Eq`, `Ord`, `Read`, and `Show`

## 0.3
* Added `Data.Eq.Deriving`, which allows deriving `Eq`, `Eq1`, and `Eq2` with TH.
* Added `Data.Ord.Deriving`, which allows deriving `Ord`, `Ord1`, and `Ord2` with TH.
* Added `Data.Read.Deriving`, which allows deriving `Read`, `Read1`, and `Eq2` with TH.
* Renamed `Text.Show.Deriving.Options` to `ShowOptions` so as to disambiguate it from the options datatypes in other `deriving-compat` modules.

### 0.2.2
* Fixed a bug in `Text.Show.Deriving`'s treatment of unlifted types

### 0.2.1
* Added `Text.Show.Deriving`, which allows deriving `Show`, `Show1`, and `Show2` with TH.

## 0.2
* Added support for GHC 8.0
* Added `Data.Functor.Deriving` and `Data.Traversable.Deriving`, which allow deriving `Functor` and `Traversable` with TH.
* Added `Data.Deriving`, which reexports all other modules

## 0.1
* Initial commit
