packages feed

store 0.6.1 → 0.7.0

raw patch · 4 files changed

+30/−6 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Data.Store.Internal: instance Foreign.Storable.Storable a => Data.Store.Impl.Store (Data.Complex.Complex a)
- Data.Store.Internal: instance Foreign.Storable.Storable a => Data.Store.Impl.Store (Data.Functor.Const.Const a b)
- Data.Store.Internal: instance Foreign.Storable.Storable a => Data.Store.Impl.Store (Data.Functor.Identity.Identity a)
+ Data.Store.Internal: instance Data.Store.Impl.Store a => Data.Store.Impl.Store (Data.Complex.Complex a)
+ Data.Store.Internal: instance Data.Store.Impl.Store a => Data.Store.Impl.Store (Data.Functor.Const.Const a b)
+ Data.Store.Internal: instance Data.Store.Impl.Store a => Data.Store.Impl.Store (Data.Functor.Identity.Identity a)

Files

ChangeLog.md view
@@ -1,5 +1,13 @@ # ChangeLog +## 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
src/Data/Store/Internal.hs view
@@ -76,10 +76,12 @@ import qualified Data.ByteString.Lazy as LBS import qualified Data.ByteString.Short.Internal as SBS import           Data.Containers (IsMap, ContainerKey, MapValue, mapFromList, mapToList, IsSet, setFromList)+import           Data.Complex (Complex) import           Data.Data (Data) import           Data.Fixed (Fixed (..), Pico) import           Data.Foldable (forM_, foldl') import           Data.Functor.Contravariant+import           Data.Functor.Identity (Identity) import           Data.HashMap.Strict (HashMap) import           Data.HashSet (HashSet) import           Data.Hashable (Hashable)@@ -741,6 +743,9 @@ instance Store a => Store (First a) instance Store a => Store (Last a) instance Store a => Store (Maybe a)+instance Store a => Store (Identity a)+instance Store a => Store (Complex a)+instance Store a => Store (Const a b)  -- FIXME: have TH deriving handle unboxed fields? 
src/Data/Store/TH/Internal.hs view
@@ -24,11 +24,11 @@  import           Control.Applicative import           Data.Complex ()-import           Data.Generics.Aliases (extT)-import           Data.Generics.Schemes (listify, everywhere)+import           Data.Generics.Aliases (extT, mkQ, extQ)+import           Data.Generics.Schemes (listify, everywhere, something) import           Data.List (find, nub) import qualified Data.Map as M-import           Data.Maybe (fromMaybe)+import           Data.Maybe (fromMaybe, isJust) import           Data.Primitive.ByteArray import           Data.Primitive.Types import           Data.Store.Core@@ -287,12 +287,23 @@         \(TypeclassInstance cs ty _) ->         let argTy = head (tail (unAppsT ty))             tyNameLit = LitE (StringL (pprint ty)) in-        if p argTy+        if p argTy && not (superclassHasStorable cs)             then Just $ makeStoreInstance cs argTy                 (AppE (VarE 'sizeStorableTy) tyNameLit)                 (AppE (VarE 'peekStorableTy) tyNameLit)                 (VarE 'pokeStorable)             else Nothing++-- See #143. Often Storable superclass constraints should instead be+-- Store constraints, so instead it just warns for these.+superclassHasStorable :: Cxt -> Bool+superclassHasStorable = isJust . something (mkQ Nothing justStorable `extQ` ignoreStrings)+  where+    justStorable :: Type -> Maybe ()+    justStorable (ConT n) | n == ''Storable = Just ()+    justStorable _ = Nothing+    ignoreStrings :: String -> Maybe ()+    ignoreStrings _ = Nothing  ------------------------------------------------------------------------ -- Vector
store.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: ed0f087802fae2b44eeecb3e8163cf7c263fe0b11167686dae1faa5c23a13ed8+-- hash: e97026b3dd607ae815326e726b09a470b5b4bb879c5d9faaee87ef206e9a4830  name:           store-version:        0.6.1+version:        0.7.0 synopsis:       Fast binary serialization category:       Serialization, Data homepage:       https://github.com/fpco/store#readme