data-msgpack 0.0.4 → 0.0.5
raw patch · 7 files changed
+74/−29 lines, 7 filesdep +criteriondep +voidPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: criterion, void
API changes (from Hackage documentation)
- Data.MessagePack.Class: instance Data.MessagePack.Class.MessagePack a => Data.MessagePack.Class.MessagePack (GHC.Base.Maybe a)
+ Data.MessagePack.Generic: instance Data.MessagePack.Class.GMessagePack GHC.Generics.V1
+ Data.MessagePack.Instances: instance (Data.MessagePack.Class.MessagePack a, Data.MessagePack.Class.MessagePack b) => Data.MessagePack.Class.MessagePack (Data.Either.Either a b)
+ Data.MessagePack.Instances: instance Data.MessagePack.Class.MessagePack Data.Void.Void
+ Data.MessagePack.Instances: instance Data.MessagePack.Class.MessagePack a => Data.MessagePack.Class.MessagePack (GHC.Base.Maybe a)
Files
- bench/benchmark.hs +14/−0
- data-msgpack.cabal +26/−1
- src/Data/MessagePack.hs +11/−10
- src/Data/MessagePack/Class.hs +0/−12
- src/Data/MessagePack/Generic.hs +3/−0
- src/Data/MessagePack/Instances.hs +14/−0
- src/Data/MessagePack/Put.hs +6/−6
+ bench/benchmark.hs view
@@ -0,0 +1,14 @@+module Main (main) where++import Criterion.Main (bgroup, defaultMain)+import Test.QuickCheck.Random (mkQCGen)++import qualified Data.MessagePack.IntBench+import qualified Data.MessagePackBench+++main :: IO ()+main = defaultMain+ [ bgroup "Data.MessagePack" Data.MessagePackBench.suite+ , bgroup "Data.MessagePack.Int" Data.MessagePack.IntBench.suite+ ]
data-msgpack.cabal view
@@ -1,5 +1,5 @@ name: data-msgpack-version: 0.0.4+version: 0.0.5 synopsis: A Haskell implementation of MessagePack homepage: http://msgpack.org/ license: BSD3@@ -26,12 +26,16 @@ default-language: Haskell2010 hs-source-dirs: src+ ghc-options:+ -Wall+ -fno-warn-unused-imports exposed-modules: Data.MessagePack Data.MessagePack.Assoc Data.MessagePack.Class Data.MessagePack.Generic Data.MessagePack.Get+ Data.MessagePack.Instances Data.MessagePack.Object Data.MessagePack.Put Data.MessagePack.Result@@ -46,6 +50,7 @@ , hashable , text , unordered-containers+ , void executable msgpack-parser default-language: Haskell2010@@ -66,6 +71,9 @@ default-language: Haskell2010 hs-source-dirs: test main-is: testsuite.hs+ ghc-options:+ -Wall+ -fno-warn-unused-imports build-depends: base < 5 , QuickCheck@@ -76,3 +84,20 @@ , hspec , text , unordered-containers+ , void++benchmark benchmark+ type: exitcode-stdio-1.0+ default-language: Haskell2010+ hs-source-dirs: bench+ main-is: benchmark.hs+ ghc-options:+ -Wall+ -fno-warn-unused-imports+ build-depends:+ base < 5+ , QuickCheck+ , bytestring+ , criterion+ , data-msgpack+ , deepseq
src/Data/MessagePack.hs view
@@ -23,17 +23,18 @@ , module X ) where -import Control.Applicative (Applicative)-import Control.Monad ((>=>))-import Data.Binary (decodeOrFail, encode)-import qualified Data.ByteString.Lazy as L+import Control.Applicative (Applicative)+import Control.Monad ((>=>))+import Data.Binary (decodeOrFail, encode)+import qualified Data.ByteString.Lazy as L -import Data.MessagePack.Assoc as X-import Data.MessagePack.Class as X-import Data.MessagePack.Generic ()-import Data.MessagePack.Get as X-import Data.MessagePack.Object as X-import Data.MessagePack.Put as X+import Data.MessagePack.Assoc as X+import Data.MessagePack.Class as X+import Data.MessagePack.Generic ()+import Data.MessagePack.Get as X+import Data.MessagePack.Instances as X+import Data.MessagePack.Object as X+import Data.MessagePack.Put as X -- | Pack a Haskell value to MessagePack binary.
src/Data/MessagePack/Class.hs view
@@ -140,18 +140,6 @@ fromObject obj = T.unpack <$> fromObject obj --- Instances for nullable types.--instance MessagePack a => MessagePack (Maybe a) where- toObject = \case- Just a -> toObject a- Nothing -> ObjectNil-- fromObject = \case- ObjectNil -> return Nothing- obj -> Just <$> fromObject obj-- -- Instances for binary and UTF-8 encoded string. instance MessagePack S.ByteString where
src/Data/MessagePack/Generic.hs view
@@ -18,6 +18,9 @@ import Data.MessagePack.Class import Data.MessagePack.Object (Object (..)) +instance GMessagePack V1 where+ gToObject = undefined+ gFromObject = fail "can't instantiate void type" instance GMessagePack U1 where gToObject U1 = ObjectNil
+ src/Data/MessagePack/Instances.hs view
@@ -0,0 +1,14 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Data.MessagePack.Instances () where++import Data.Void (Void)++import Data.MessagePack.Class (MessagePack)+import Data.MessagePack.Generic ()+++instance MessagePack a => MessagePack (Maybe a)++instance (MessagePack a, MessagePack b) => MessagePack (Either a b)++instance MessagePack Void
src/Data/MessagePack/Put.hs view
@@ -48,21 +48,21 @@ putInt :: Int64 -> Put putInt n- | -32 <= n && n <= 127 =+ | -0x20 <= n && n < 0x80 = putWord8 (fromIntegral n)- | 0 <= n && n < 0x100 =+ | 0 <= n && n < 0x100 = putWord8 0xCC >> putWord8 (fromIntegral n)- | 0 <= n && n < 0x10000 =+ | 0 <= n && n < 0x10000 = putWord8 0xCD >> putWord16be (fromIntegral n)- | 0 <= n && n < 0x100000000 =+ | 0 <= n && n < 0x100000000 = putWord8 0xCE >> putWord32be (fromIntegral n)- | 0 <= n =+ | 0 <= n = putWord8 0xCF >> putWord64be (fromIntegral n) | -0x80 <= n = putWord8 0xD0 >> putWord8 (fromIntegral n) | -0x8000 <= n = putWord8 0xD1 >> putWord16be (fromIntegral n)- | -0x80000000 <= n =+ | -0x80000000 <= n = putWord8 0xD2 >> putWord32be (fromIntegral n) | otherwise = putWord8 0xD3 >> putWord64be (fromIntegral n)