cborg 0.2.7.0 → 0.2.8.0
raw patch · 6 files changed
+102/−26 lines, 6 filesdep ~aesondep ~basedep ~ghc-primPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: aeson, base, ghc-prim, primitive, vector
API changes (from Hackage documentation)
- Codec.CBOR.ByteArray: instance GHC.Exts.IsList Codec.CBOR.ByteArray.ByteArray
- Codec.CBOR.ByteArray.Sliced: instance GHC.Exts.IsList Codec.CBOR.ByteArray.Sliced.SlicedByteArray
+ Codec.CBOR.ByteArray: instance GHC.IsList.IsList Codec.CBOR.ByteArray.ByteArray
+ Codec.CBOR.ByteArray.Sliced: instance GHC.IsList.IsList Codec.CBOR.ByteArray.Sliced.SlicedByteArray
Files
- ChangeLog.md +11/−0
- cborg.cabal +8/−9
- src/Codec/CBOR/Decoding.hs +26/−3
- src/Codec/CBOR/FlatTerm.hs +14/−2
- src/Codec/CBOR/Magic.hs +28/−10
- src/Codec/CBOR/Read.hs +15/−2
ChangeLog.md view
@@ -1,5 +1,16 @@ # Revision history for cborg +## 0.2.8.0 -- 2022-09-24++* Support GHC 9.4++* Fix compatibility with primitive 0.7.4.0++* Drop GHC 8.0 and 8.2 support++* Support aeson 2.1++ ## 0.2.3.1 -- 2020-05-10 * Bounds updates for GHC 8.10
cborg.cabal view
@@ -1,5 +1,5 @@ name: cborg-version: 0.2.7.0+version: 0.2.8.0 synopsis: Concise Binary Object Representation (CBOR) license: BSD3 license-file: LICENSE.txt@@ -13,14 +13,13 @@ build-type: Simple cabal-version: >= 1.10 tested-with:- GHC == 8.0.2,- GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.3,- GHC == 8.10.1,+ GHC == 8.10.7, GHC == 9.0.1,- GHC == 9.2.2+ GHC == 9.2.2,+ GHC == 9.4.2 extra-source-files: ChangeLog.md@@ -90,11 +89,11 @@ build-depends: array >= 0.4 && < 0.6,- base >= 4.8 && < 4.17,+ base >= 4.11 && < 4.18, bytestring >= 0.10.4 && < 0.12, containers >= 0.5 && < 0.7, deepseq >= 1.0 && < 1.5,- ghc-prim >= 0.3.1.0 && < 0.9,+ ghc-prim >= 0.3.1.0 && < 0.10, half >= 0.2.2.3 && < 0.4, primitive >= 0.5 && < 0.8, text >= 1.1 && < 1.3 || >= 2.0 && <2.1@@ -148,12 +147,12 @@ build-depends: array >= 0.4 && < 0.6,- base >= 4.7 && < 4.17,+ base >= 4.11 && < 4.18, base-orphans, bytestring >= 0.10.4 && < 0.12, text >= 1.1 && < 2.1, cborg,- aeson >= 0.7 && < 2.1,+ aeson >= 0.7 && < 2.2, base64-bytestring >= 1.0 && < 1.3, base16-bytestring >= 1.0 && < 1.1, deepseq >= 1.0 && < 1.5,
src/Codec/CBOR/Decoding.hs view
@@ -328,8 +328,13 @@ toWord16 n = W16# (wordToWord16# n) toWord32 n = W32# (wordToWord32# n) #if WORD_SIZE_IN_BITS == 64+#if MIN_VERSION_base(4,17,0)+toInt64 n = I64# (intToInt64# n)+toWord64 n = W64# (wordToWord64# n)+#else toInt64 n = I64# n toWord64 n = W64# n+#endif #else toInt64 n = I64# (intToInt64# n) toWord64 n = W64# (wordToWord64# n)@@ -748,8 +753,14 @@ {-# INLINE decodeTag64 #-} decodeTag64 = #if defined(ARCH_64bit)- Decoder (\k -> return (ConsumeTag (\w# -> k (W64# w#))))+ Decoder (\k -> return (ConsumeTag (\w# -> k (W64#+#if MIN_VERSION_base(4,17,0)+ (wordToWord64# w#) #else+ w#+#endif+ ))))+#else Decoder (\k -> return (ConsumeTag64 (\w64# -> k (W64# w64#)))) #endif @@ -769,8 +780,14 @@ {-# INLINE decodeTag64Canonical #-} decodeTag64Canonical = #if defined(ARCH_64bit)- Decoder (\k -> return (ConsumeTagCanonical (\w# -> k (W64# w#))))+ Decoder (\k -> return (ConsumeTagCanonical (\w# -> k (W64#+#if MIN_VERSION_base(4,17,0)+ (wordToWord64# w#) #else+ w#+#endif+ ))))+#else Decoder (\k -> return (ConsumeTag64Canonical (\w64# -> k (W64# w64#)))) #endif @@ -968,7 +985,13 @@ -- -- @since 0.2.2.0 peekByteOffset :: Decoder s ByteOffset-peekByteOffset = Decoder (\k -> return (PeekByteOffset (\off# -> k (I64# off#))))+peekByteOffset = Decoder (\k -> return (PeekByteOffset (\off# -> k (I64#+#if MIN_VERSION_base(4,17,0)+ (intToInt64# off#)+#else+ off#+#endif+ )))) {-# INLINE peekByteOffset #-} -- | This captures the pattern of getting the byte offsets before and after
src/Codec/CBOR/FlatTerm.hs view
@@ -170,12 +170,24 @@ -- always starts by requesting initial input. Only decoders that -- fail or return a value without looking at their input can give -- a different initial result.- Read.Partial k <- Read.deserialiseIncremental decodeTermToken+ result <- Read.deserialiseIncremental decodeTermToken+ let+ k =+ case result of+ Read.Partial a -> a+ _ -> error "Failed to get a Partial" k (Just bs) collectOutput next collectOutput :: Read.IDecode s TermToken -> ST.Lazy.ST s FlatTerm- collectOutput (Read.Fail _ _ err) = fail $ "toFlatTerm: encodePreEncoded "+ collectOutput (Read.Fail _ _ err) =+#if MIN_VERSION_base(4,17,0)+ error+#else+ fail+#endif++ $ "toFlatTerm: encodePreEncoded " ++ "used with invalid CBOR: " ++ show err collectOutput (Read.Partial k) = ST.Lazy.strictToLazyST (k Nothing)
src/Codec/CBOR/Magic.hs view
@@ -109,7 +109,7 @@ import qualified Data.ByteString as BS import qualified Data.ByteString.Internal as BS import qualified Data.ByteString.Unsafe as BS-import Data.Primitive.ByteArray as Prim hiding (copyByteArrayToPtr)+import Data.Primitive.ByteArray as Prim hiding (copyByteArrayToPtr, copyPtrToMutableByteArray) import Foreign.ForeignPtr (withForeignPtr) import Foreign.C (CUShort)@@ -167,7 +167,11 @@ grabWord32 (Ptr ip#) = W32# (narrow32Word# (byteSwap32# (indexWord32OffAddr# ip# 0#))) #endif #if defined(ARCH_64bit)+#if MIN_VERSION_base(4,17,0)+grabWord64 (Ptr ip#) = W64# (wordToWord64# (byteSwap# (word64ToWord# (indexWord64OffAddr# ip# 0#))))+#else grabWord64 (Ptr ip#) = W64# (byteSwap# (indexWord64OffAddr# ip# 0#))+#endif #else grabWord64 (Ptr ip#) = W64# (byteSwap64# (word64ToWord# (indexWord64OffAddr# ip# 0#))) #endif@@ -196,8 +200,8 @@ where #if MIN_VERSION_ghc_prim(0,8,0) w16 w# = W16# (wordToWord16# (word8ToWord# w#))-#else - w16 w# = W16# w# +#else+ w16 w# = W16# w# #endif grabWord32 (Ptr ip#) =@@ -212,11 +216,11 @@ w32 w1# `unsafeShiftL` 16 .|. w32 w2# `unsafeShiftL` 8 .|. w32 w3#- where + where #if MIN_VERSION_ghc_prim(0,8,0) w32 w# = W32# (wordToWord32# (word8ToWord# w#))-#else - w32 w# = W32# w# +#else+ w32 w# = W32# w# #endif grabWord64 (Ptr ip#) =@@ -247,14 +251,14 @@ #if MIN_VERSION_ghc_prim(0,8,0) toWord :: Word8# -> Word# toWord w# = word8ToWord# w#-#else +#else toWord :: Word# -> Word#- toWord w# = w# + toWord w# = w# #endif #if WORD_SIZE_IN_BITS == 64 w64 w# = W64# (toWord w#)-#else +#else w64 w# = W64# (wordToWord64# (toWord w#)) #endif @@ -439,7 +443,11 @@ word16ToWord (W16# w#) = W# (word16ToWord# w#) word32ToWord (W32# w#) = W# (word32ToWord# w#) #if defined(ARCH_64bit)+#if MIN_VERSION_base(4,17,0)+word64ToWord (W64# w#) = W# (word64ToWord# w#)+#else word64ToWord (W64# w#) = W# w#+#endif #else word64ToWord (W64# w64#) = case isTrue# (w64# `leWord64#` wordToWord64# 0xffffffff##) of@@ -492,8 +500,18 @@ #if defined(ARCH_64bit) word64ToInt (W64# w#) =+#if MIN_VERSION_base(4,17,0)+ case isTrue# (word64ToWord# w# `ltWord#` 0x8000000000000000##) of+#else case isTrue# (w# `ltWord#` 0x8000000000000000##) of- True -> Just (I# (word2Int# w#))+#endif+ True ->+#if MIN_VERSION_base(4,17,0)+ Just (I# (word2Int# (word64ToWord# w#)))++#else+ Just (I# (word2Int# w#))+#endif False -> Nothing #else word64ToInt (W64# w#) =
src/Codec/CBOR/Read.hs view
@@ -1270,7 +1270,14 @@ !offset' = offset + intToInt64 (BS.length bs - BS.length bs') SlowPeekByteOffset bs' k ->- lift (k off#) >>= \daz -> go_slow daz bs' offset'+ lift+#if MIN_VERSION_base(4,17,0)+ (k (int64ToInt# off#))+#else+ (k off#)++#endif+ >>= \daz -> go_slow daz bs' offset' where !offset'@(I64# off#) = offset + intToInt64 (BS.length bs - BS.length bs') @@ -1373,7 +1380,13 @@ SlowPeekByteOffset bs_empty k -> assert (BS.null bs_empty) $ do- lift (k off#) >>= \daz -> go_slow daz bs' offset'+ lift+#if MIN_VERSION_base(4,17,0)+ (k (int64ToInt# off#))+#else+ (k off#)+#endif+ >>= \daz -> go_slow daz bs' offset' where !(I64# off#) = offset'