fixed-vector-cborg 1.0.0.2 → 2.1.0.0
raw patch · 5 files changed
+56/−142 lines, 5 filesdep −fixed-vector-cborgdep −tastydep −tasty-quickcheckdep ~basedep ~fixed-vectorsetup-changedPVP ok
version bump matches the API change (PVP)
Dependencies removed: fixed-vector-cborg, tasty, tasty-quickcheck
Dependency ranges changed: base, fixed-vector
API changes (from Hackage documentation)
- Data.Vector.Fixed.Instances.CBOR: instance (Data.Vector.Fixed.Cont.Arity n, Data.Primitive.Types.Prim a, Codec.Serialise.Class.Serialise a) => Codec.Serialise.Class.Serialise (Data.Vector.Fixed.Primitive.Vec n a)
- Data.Vector.Fixed.Instances.CBOR: instance (Data.Vector.Fixed.Cont.Arity n, Foreign.Storable.Storable a, Codec.Serialise.Class.Serialise a) => Codec.Serialise.Class.Serialise (Data.Vector.Fixed.Storable.Vec n a)
- Data.Vector.Fixed.Instances.CBOR: instance (Data.Vector.Fixed.Unboxed.Unbox n a, Codec.Serialise.Class.Serialise a) => Codec.Serialise.Class.Serialise (Data.Vector.Fixed.Unboxed.Vec n a)
+ Data.Vector.Fixed.Instances.CBOR: instance (Data.Vector.Fixed.Cont.Arity n, Codec.Serialise.Class.Serialise a) => Codec.Serialise.Class.Serialise (Data.Vector.Fixed.Strict.Vec n a)
+ Data.Vector.Fixed.Instances.CBOR: instance (Data.Vector.Fixed.Cont.Arity n, Codec.Serialise.Class.Serialise a, Data.Primitive.Types.Prim a) => Codec.Serialise.Class.Serialise (Data.Vector.Fixed.Primitive.Vec n a)
+ Data.Vector.Fixed.Instances.CBOR: instance (Data.Vector.Fixed.Cont.Arity n, Codec.Serialise.Class.Serialise a, Data.Vector.Fixed.Unboxed.Unbox n a) => Codec.Serialise.Class.Serialise (Data.Vector.Fixed.Unboxed.Vec n a)
+ Data.Vector.Fixed.Instances.CBOR: instance (Data.Vector.Fixed.Cont.Arity n, Codec.Serialise.Class.Serialise a, Foreign.Storable.Storable a) => Codec.Serialise.Class.Serialise (Data.Vector.Fixed.Storable.Vec n a)
+ Data.Vector.Fixed.Instances.CBOR: instance (Data.Vector.Fixed.Cont.ArityPeano n, Codec.Serialise.Class.Serialise a) => Codec.Serialise.Class.Serialise (Data.Vector.Fixed.VecPeano n a)
+ Data.Vector.Fixed.Instances.CBOR: instance (Data.Vector.Fixed.Cont.Vector v a, Codec.Serialise.Class.Serialise a) => Codec.Serialise.Class.Serialise (Data.Vector.Fixed.ViaFixed v a)
+ Data.Vector.Fixed.Instances.CBOR: instance (Data.Vector.Fixed.Mono.Prod a v, Codec.Serialise.Class.Serialise a) => Codec.Serialise.Class.Serialise (Data.Vector.Fixed.Mono.ViaFixed a v)
- Data.Vector.Fixed.Instances.CBOR: decodeFixedVector :: forall v s a. (Vector v a, Serialise a) => Decoder s (v a)
+ Data.Vector.Fixed.Instances.CBOR: decodeFixedVector :: forall v s a. (Prod a v, Serialise a) => Decoder s v
- Data.Vector.Fixed.Instances.CBOR: encodeFixedVector :: (Vector v a, Serialise a) => v a -> Encoding
+ Data.Vector.Fixed.Instances.CBOR: encodeFixedVector :: (Prod a v, Serialise a) => v -> Encoding
Files
- ChangeLog.md +12/−12
- Data/Vector/Fixed/Instances/CBOR.hs +35/−31
- Setup.hs +0/−2
- fixed-vector-cborg.cabal +9/−23
- test/QC.hs +0/−74
ChangeLog.md view
@@ -1,15 +1,15 @@-Changes in 1.0.0.2-- * GHC 8.6+ compatibility for tests as well--Changes in 1.0.0.1-- * GHC 8.6 compatibility--Changes in 1.0.0.0+1.0.0.2+-------+* GHC 8.6+ compatibility for tests as well - * Compatibility with fixed-vector-1.0+1.0.0.1+-------+* GHC 8.6 compatibility -Changes in 0.6.0.0+1.0.0.0+-------+* Compatibility with fixed-vector-1.0 - * Initial release+0.6.0.0+-------+* Initial release
Data/Vector/Fixed/Instances/CBOR.hs view
@@ -1,5 +1,9 @@+{-# LANGUAGE DerivingVia #-} {-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE MagicHash #-} {-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -fno-warn-orphans #-}@@ -10,42 +14,41 @@ import Codec.Serialise import Codec.CBOR.Encoding (Encoding,encodeListLen,encodeNull) import Codec.CBOR.Decoding (Decoder,decodeListLenOf,decodeNull)-import Data.Monoid ((<>))-import Data.Typeable (Proxy(..))+import GHC.Exts (proxy#) -import Data.Vector.Fixed (Arity)+import Data.Vector.Fixed (Arity,ArityPeano,Vector,ViaFixed) import qualified Data.Vector.Fixed as F-import Data.Vector.Fixed.Cont (arity,Dim)-import qualified Data.Vector.Fixed.Boxed as B-import qualified Data.Vector.Fixed.Unboxed as U-import qualified Data.Vector.Fixed.Primitive as P-import qualified Data.Vector.Fixed.Storable as S----instance (Arity n, Serialise a) => Serialise (B.Vec n a) where- encode = encodeFixedVector- decode = decodeFixedVector+import Data.Vector.Fixed.Cont (peanoToInt,Dim)+import qualified Data.Vector.Fixed.Boxed as FB+import qualified Data.Vector.Fixed.Strict as FF+import qualified Data.Vector.Fixed.Unboxed as FU+import qualified Data.Vector.Fixed.Primitive as FP+import qualified Data.Vector.Fixed.Storable as FS+import qualified Data.Vector.Fixed.Mono as FM+import Data.Coerce -instance (Arity n, P.Prim a, Serialise a) => Serialise (P.Vec n a) where+instance (Vector v a, Serialise a) => Serialise (ViaFixed v a) where encode = encodeFixedVector decode = decodeFixedVector+ {-# INLINE encode #-}+ {-# INLINE decode #-} -instance (Arity n, S.Storable a, Serialise a) => Serialise (S.Vec n a) where+instance (FM.Prod a v, Serialise a) => Serialise (FM.ViaFixed a v) where encode = encodeFixedVector decode = decodeFixedVector+ {-# INLINE encode #-}+ {-# INLINE decode #-} -instance (U.Unbox n a, Serialise a) => Serialise (U.Vec n a) where- encode = encodeFixedVector- decode = decodeFixedVector+deriving via ViaFixed (FB.Vec n) a instance (Arity n, Serialise a) => Serialise (FB.Vec n a)+deriving via ViaFixed (FF.Vec n) a instance (Arity n, Serialise a) => Serialise (FF.Vec n a)+deriving via ViaFixed (FP.Vec n) a instance (Arity n, Serialise a, FP.Prim a) => Serialise (FP.Vec n a)+deriving via ViaFixed (FS.Vec n) a instance (Arity n, Serialise a, FS.Storable a) => Serialise (FS.Vec n a)+deriving via ViaFixed (FU.Vec n) a instance (Arity n, Serialise a, FU.Unbox n a) => Serialise (FU.Vec n a) -instance (Arity n, Serialise a) => Serialise (F.VecList n a) where- encode = encodeFixedVector- decode = decodeFixedVector+deriving via ViaFixed (F.VecList n) a instance (Arity n, Serialise a) => Serialise (F.VecList n a)+deriving via ViaFixed (F.VecPeano n) a instance (ArityPeano n, Serialise a) => Serialise (F.VecPeano n a) -instance (Serialise a) => Serialise (F.Only a) where- encode = encodeFixedVector- decode = decodeFixedVector+deriving via ViaFixed F.Only a instance (Serialise a) => Serialise (F.Only a) instance Serialise (F.Empty a) where encode = const encodeNull@@ -53,15 +56,16 @@ -- | Encode vector with statically known size as CBOR list. There's no -- type tag-encodeFixedVector :: (F.Vector v a, Serialise a) => v a -> Encoding+encodeFixedVector :: (FM.Prod a v, Serialise a) => v -> Encoding {-# INLINE encodeFixedVector #-}-encodeFixedVector v = encodeListLen (fromIntegral $ F.length v)- <> F.foldMap encode v+encodeFixedVector v+ = encodeListLen (fromIntegral $ FM.length v)+ <> FM.foldMap encode (FM.ViaFixed v) -- | Decode vector with statically known size as CBOR list. There's no -- type tag-decodeFixedVector :: forall v s a. (F.Vector v a, Serialise a) => Decoder s (v a)+decodeFixedVector :: forall v s a. (FM.Prod a v, Serialise a) => Decoder s v {-# INLINE decodeFixedVector #-} decodeFixedVector = do- decodeListLenOf (fromIntegral $ arity (Proxy :: Proxy (Dim v)))- F.replicateM decode+ decodeListLenOf (fromIntegral $ peanoToInt (proxy# @(Dim v)))+ coerce $ FM.replicateM @(FM.ViaFixed a v) decode
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
fixed-vector-cborg.cabal view
@@ -1,5 +1,5 @@ Name: fixed-vector-cborg-Version: 1.0.0.2+Version: 2.1.0.0 Synopsis: Binary instances for fixed-vector Description: CBOR serialization instances for fixed-vector's types. Generic@@ -17,12 +17,12 @@ ChangeLog.md tested-with:- GHC ==7.10.3- || ==8.0.2- || ==8.2.2- || ==8.4.4- || ==8.6.5- || ==8.8.1+ GHC ==9.4.7+ || ==9.6.7+ || ==9.8.4+ || ==9.10.2+ || ==9.12.2+ || ==9.14.1 source-repository head type: git@@ -31,23 +31,9 @@ Library Ghc-options: -Wall Default-Language: Haskell2010- Build-Depends: base >=4.8 && <5- , fixed-vector >=1.0+ Build-Depends: base >=4.16 && <5+ , fixed-vector >=2.1 , cborg , serialise Exposed-modules: Data.Vector.Fixed.Instances.CBOR--Test-Suite test- Ghc-options: -Wall- Default-Language: Haskell2010- Type: exitcode-stdio-1.0- Hs-source-dirs: test- Main-is: QC.hs- Build-Depends:- base >=3 && <5,- fixed-vector,- fixed-vector-cborg,- serialise,- tasty,- tasty-quickcheck
− test/QC.hs
@@ -1,74 +0,0 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE UndecidableInstances #-}-{-# OPTIONS_GHC -fno-warn-orphans #-}-import Test.Tasty-import Test.Tasty.QuickCheck as QC--import Codec.Serialise-import Data.Typeable-import qualified Data.Vector.Fixed as F-import qualified Data.Vector.Fixed.Unboxed as U-import qualified Data.Vector.Fixed.Boxed as B-import qualified Data.Vector.Fixed.Storable as S-import qualified Data.Vector.Fixed.Primitive as P-import Data.Vector.Fixed.Instances.CBOR ()---tests :: TestTree-tests = testGroup "cereal"- [ testTagged p_serialize (T :: T (F.Only Int))- , testTagged p_serialize (T :: T (F.VecList 2 Int))- , testTagged p_serialize (T :: T (F.VecList 3 Int))- , testTagged p_serialize (T :: T (F.VecList 4 Int))- --- , testTagged p_serialize (T :: T (U.Vec 2 Int))- , testTagged p_serialize (T :: T (U.Vec 3 Int))- , testTagged p_serialize (T :: T (U.Vec 4 Int))- --- , testTagged p_serialize (T :: T (B.Vec 2 Int))- , testTagged p_serialize (T :: T (B.Vec 3 Int))- , testTagged p_serialize (T :: T (B.Vec 4 Int))- --- , testTagged p_serialize (T :: T (S.Vec 2 Int))- , testTagged p_serialize (T :: T (S.Vec 3 Int))- , testTagged p_serialize (T :: T (S.Vec 4 Int))- --- , testTagged p_serialize (T :: T (P.Vec 2 Int))- , testTagged p_serialize (T :: T (P.Vec 3 Int))- , testTagged p_serialize (T :: T (P.Vec 4 Int))- ]--p_serialize :: (Serialise a, Arbitrary a, Eq a) => T a -> a -> Bool-p_serialize _ a = a == (deserialise . serialise) a--data T a = T--testTagged :: forall a b. (Testable b, Typeable a) => (T a -> b) -> T a -> TestTree-testTagged prop t- = testProperty (show $ typeOf (undefined :: a)) (prop t)--main :: IO ()-main = defaultMain tests-------------------------------------------------------------------instance Arbitrary a => Arbitrary (F.Only a) where- arbitrary = F.replicateM arbitrary-instance Arbitrary a => Arbitrary (F.Empty a) where- arbitrary = F.replicateM arbitrary--instance (F.Arity n, Arbitrary a) => Arbitrary (F.VecList n a) where- arbitrary = F.replicateM arbitrary-instance (U.Unbox n a, Arbitrary a) => Arbitrary (U.Vec n a) where- arbitrary = F.replicateM arbitrary-instance (F.Arity n, Arbitrary a) => Arbitrary (B.Vec n a) where- arbitrary = F.replicateM arbitrary-instance (F.Arity n, S.Storable a, Arbitrary a) => Arbitrary (S.Vec n a) where- arbitrary = F.replicateM arbitrary-instance (F.Arity n, P.Prim a, Arbitrary a) => Arbitrary (P.Vec n a) where- arbitrary = F.replicateM arbitrary---