packages feed

store-0.7.22: ChangeLog.md

# ChangeLog

## 0.7.22

* Fix test compilation on platforms where libc lacks POSIX `timer_t`
  (e.g. macOS), so `System.Posix.Types.CTimer` is not exported. The test
  guarded `[t| CTimer |]` with `#if MIN_VERSION_base(4,10,0)`, but
  `CTimer`'s availability is platform-dependent (gated on `HTYPE_TIMER_T`
  by base's `configure`), not base-version-dependent. Use `lookupTypeName`
  to detect the symbol at splice time.
  See [#185][].

[#185]: https://github.com/mgsloan/store/pull/185

## 0.7.21

* Fix test compilation on GHC 9.10+, where `template-haskell` types
  (`Type`, `TySynEqn`, `PkgName`, etc.) live in `GHC.Internal.TH.Syntax`
  rather than `Language.Haskell.TH.Syntax`. The `isThName` filter that
  skips TH AST types from the auto-generated `Store` roundtrip enumeration
  was matching only the old module name and silently let the TH types
  through, causing `No instance for 'Serial IO Type'` style errors.
  See [#182][].

[#182]: https://github.com/mgsloan/store/issues/182

## 0.7.20

* Fixes build of test with `vector-0.13.2.0`. See [#181][].

[#181]: https://github.com/mgsloan/store/issues/181

## 0.7.19

* Adds support for `vector-0.13.2.0`. See [#179][].

[#174]: https://github.com/mgsloan/store/issues/179

## 0.7.16

* Adds support for `vector-0.13.0.0`. See [#174][].

[#174]: https://github.com/mgsloan/store/issues/174


## 0.7.15

* Adds support for `text >= 2`. See [#170][].

[#170]: https://github.com/mgsloan/store/issues/170


## 0.7.14

* Fixes build with ghc-8.10 (broken in last release due to differences
  in TH API). See [#165][].

[#165]: https://github.com/mgsloan/store/issues/165


## 0.7.13

* Fix build with `time >= 1.11`. See [#162][].

* Adds missing `liftTyped` method for `Lift TypeHash`. See [#163][].

[#162]: https://github.com/mgsloan/store/issues/162
[#163]: https://github.com/mgsloan/store/issues/163

## 0.7.12

* Build with ghc-9.0.1

## 0.7.11

* Fixes testsuite compilation with `network >= 3.1.2`. See [#159][].

## 0.7.10

* Adds `Store` instances for all serializable datatypes exported by
  the `time` library. See [#158][].

[#158]: https://github.com/mgsloan/store/issues/158

## 0.7.9

* Attempts to fix build on ghc-7.8.4. See [#157][].

[#157]: https://github.com/mgsloan/store/issues/157

## 0.7.8

* Adds a `Store` instance for `Natural`. See [#154][].

[#154]: https://github.com/mgsloan/store/issues/154

## 0.7.7

* Test now compiles with `smallcheck >= 1.2` and `base >= 4.14`.
  See [#153][].

[#153]: https://github.com/fpco/store/issues/153

## 0.7.6

* Now only depends on `fail` / `semigroups` shim for `ghc < 8`.

## 0.7.4

* Fix for compilation with `ghc-8.10` in `0.7.3` did not use enough
  CPP, and so broke builds for older versions. This release fixes
  that.

## 0.7.3

* Fixes compilation with `ghc-8.10`, particularly
  `template-haskell-2.16.0.0`. See [#149][].

[#149]: https://github.com/fpco/store/issues/149

## 0.7.2

* Fixes compilation with `vector >= 0.12.1.1` by making
  `deriveManyStoreUnboxVector` capable of handling more complex
  instance constraints. In particular, it now correctly generates
  instances `Store (Vector (f (g a))) => Store (Vector (Compose f g
  a))` and `Store (Vector (f a)) => Store (Vector (Alt f a))`.

## 0.7.1

* Fixes compilation with GHC-7.10 due to it not defining `Generic`
  instances for `Complex` and `Identity`. See [#142][].

* Documents some gotchas about using store vs other libraries

[#142]: https://github.com/fpco/store/issues/142

## 0.7.0

* Fixes a bug where the `Store` instances for `Identity`, `Const`, and
  `Complex` all have `Storable` superclasses instead of `Store. See
  [#143][].

[#143]: https://github.com/fpco/store/issues/143

## 0.6.1

* Can now optionally be built with `integer-simple` instead of
  `integer-gmp`, via the `integer-simple` cabal flag.  Note that the
  serialization of `Integer` with `integer-simple` differs from what
  is used by the GMP default. See [#147][].

[#147]: https://github.com/fpco/store/pull/147

## 0.6.0.1

* Now builds with GHC-7.10 - compatibility was broken in 0.6.0 due to
  the fix for GHC-8.8. See
  [#146][https://github.com/fpco/store/issues/146].

## 0.6.0

* Now builds with GHC-8.8. This is a major version bump because
  MonadFail constraints were added to some functions, which is
  potentially a breaking change.

## 0.5.1.2

* Fixes compilation with GHC < 8.0.  See
  [#142](https://github.com/fpco/store/issues/142).

## 0.5.1.1

* Update to the instances for generics, to improve error messages for
  sum types with more than 255 constructors.  See
  [#141](https://github.com/fpco/store/issues/141)

## 0.5.1.0

* Update to TH to support sum types with more than 62 constructors.

* Uses TH to derive Either instance, so that it can sometimes have ConstSize #119.

## 0.5.0.1

* Updates to test-suite enabling `store` to build with newer dependencies.

## 0.5.0

* `Data.Store.Streaming` moved to a separate package, `store-streaming`.

## 0.4.3.2

* Buildable with GHC 8.2

* Fix to haddock formatting of Data.Store.TH code example

## 0.4.3.1

* Fixed compilation on GHC 7.8

## 0.4.3

* Less aggressive inlining, resulting in faster compilation / simplifier
  not running out of ticks

## 0.4.2

* Fixed testsuite

## 0.4.1

* Breaking change in the encoding of Map / Set / IntMap / IntSet,
  to use ascending key order. Attempting to decode data written by
  prior versions of store (and vice versa) will almost always fail
  with a decent error message. If you're unlucky enough to have a
  collision in the data with a random Word32 magic number, then the
  error may not be so clear, or in extremely rare cases,
  successfully decode, yielding incorrect results. See
  [#97](https://github.com/fpco/store/issues/97) and
  [#101](https://github.com/fpco/store/pull/101).


* Performance improvement of the 'Peek' monad, by introducing more
  strictness.  This required a change to the internal API.

* API and behavior of 'Data.Store.Version' changed. Previously, it
  would check the version tag after decoding the contents. It now
  also stores a magic Word32 tag at the beginning, so that it fails
  more gracefully when decoding input that lacks encoded version
  info.

## 0.4.0

Deprecated in favor of 0.4.1

## 0.3.1

* Fix to derivation of primitive vectors, only relevant when built with
  primitive-0.6.2.0 or later

* Removes INLINE pragmas on the generic default methods.  This
  dramatically improves compilation time on recent GHC versions.
  See [#91](https://github.com/fpco/store/issues/91).

* Adds `instance Contravariant Size`

## 0.3

* Uses store-core-0.3.*, which has support for alignment sensitive
  architectures.

* Adds support for streaming decode from file descriptor, not supported on
  windows. As part of this addition, the API for "Data.Store.Streaming" has
  changed.

## 0.2.1.2

* Fixes a bug that could could result in attempting to malloc a negative
  number of bytes when reading corrupted data.

## 0.2.1.1

* Fixes a bug that could result in segfaults when reading corrupted data.

## 0.2.1.0

Release notes:

* Adds experimental `Data.Store.Version` and deprecates `Data.Store.TypeHash`.
  The new functionality is similar to TypeHash, but there are much fewer false
  positives of hashes changing.

Other enhancements:

* Now exports types related to generics

## 0.2.0.0

Release notes:

* Core functionality split into `store-core` package

Breaking changes:

* `combineSize'` renamed to `combineSizeWith`

* Streaming support now prefixes each Message with a magic number, intended to
  detect mis-alignment of data frames. This is worth the overhead, because
  otherwise serialization errors could be more catastrophic - interpretting some
  bytes as a length tag and attempting to consume many bytes from the source.

Other enhancements:

* [weigh](https://github.com/fpco/weigh) based allocations benchmark.

* Addition of `Array` / `UArray` instances

* Streaming support now has checks for over/undershooting buffer

Bug fixes:


## 0.1.0.0

* First public release