When using Data.Bifunctor.TH to derive Bifunctor or Bitraversable
instances for data types where the last two type variables are at phantom
roles, generated bimap/bitraverse implementations now use coerce for
efficiency.

Add Options to Data.Bifunctor.TH, along with variants of existing
functions that take Options 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).

5.4.2

Make deriveBitraversable use liftA2 in derived implementations of bitraverse when possible, now that liftA2 is a class method of Applicative (as of GHC 8.2)

Backport slightly more efficient implementations of bimapDefault and bifoldMapDefault

5.4.1

Add explicit Safe, Trustworthy, and Unsafe annotations. In particular, annotate the Data.Bifoldable module as Trustworthy (previously, it was inferred to be Unsafe).

5.4

Only export Data.Bifoldable and Data.Bitraversable when building on GHC < 8.1, otherwise they come from base