packages feed

Z-Data 0.8.6.0 → 0.8.6.1

raw patch · 6 files changed

+20/−31 lines, 6 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

ChangeLog.md view
@@ -1,6 +1,6 @@ # Revision history for Z-Data -## 0.8.6.0  -- 2021-06-09+## 0.8.6.1  -- 2021-06-09  * Change SIMD base64 codec to https://github.com/lemire/fastbase64. * Add SIMD enabled `count` from bytestring.
Z-Data.cabal view
@@ -1,6 +1,6 @@ cabal-version:      2.4 name:               Z-Data-version:            0.8.6.0+version:            0.8.6.1 synopsis:           Array, vector and text description:        This package provides array, slice and text operations license:            BSD-3-Clause
Z/Data/Vector/Base64.hs view
@@ -68,12 +68,12 @@     | inputLen == 0 = Just V.empty     | decodeLen == -1 = Nothing     | otherwise = unsafeDupablePerformIO $ do-        ((V.PrimVector arr s' _), r) <- withPrimVectorUnsafe ba $ \ ba# s l ->-            allocPrimVectorUnsafe decodeLen $ \ buf# ->+        (arr, r) <- withPrimVectorUnsafe ba $ \ ba# s l ->+            allocPrimArrayUnsafe decodeLen $ \ buf# ->                 hs_base64_decode buf# ba# s l         if r == 0         then return Nothing-        else return (Just (V.PrimVector arr s' r))+        else return (Just (V.PrimVector arr 0 r))   where     inputLen = V.length ba     decodeLen = base64DecodeLength inputLen@@ -87,26 +87,16 @@ -- | Decode a base64 encoding string, throw 'Base64DecodeException' on error. base64Decode' :: HasCallStack => V.Bytes -> V.Bytes {-# INLINABLE base64Decode' #-}-base64Decode' ba-    | inputLen == 0 = V.empty-    | decodeLen == -1 = throw (IncompleteBase64Bytes ba callStack)-    | otherwise = unsafeDupablePerformIO $ do-        ((V.PrimVector arr s' _), r) <- withPrimVectorUnsafe ba $ \ ba# s l ->-            allocPrimVectorUnsafe decodeLen $ \ buf# ->-                hs_base64_decode buf# ba# s l-        if r == 0-        then throwIO (IllegalBase64Bytes ba callStack)-        else return (V.PrimVector arr s' r)-  where-    inputLen = V.length ba-    decodeLen = base64DecodeLength inputLen+base64Decode' ba = case base64Decode ba of+    Just r -> r+    _ -> throw (IllegalBase64Bytes ba callStack)  -- | Return the upper bound of decoded length of a given input length -- , return -1 if illegal(not a multipler of 4). base64DecodeLength :: Int -> Int {-# INLINABLE base64DecodeLength #-} base64DecodeLength n | n .&. 3 == 1 = -1-                     | otherwise = (n `unsafeShiftR` 2) * 3+                     | otherwise = (n `unsafeShiftR` 2) * 3 + 2  -------------------------------------------------------------------------------- 
Z/Data/Vector/Hex.hs view
@@ -100,12 +100,12 @@     | V.length ba == 0 = Just V.empty     | V.length ba .&. 1 == 1 = Nothing     | otherwise = unsafeDupablePerformIO $ do-        (out, r) <- withPrimVectorUnsafe ba $ \ ba# s l ->-            allocPrimVectorUnsafe (l `unsafeShiftR` 1) $ \ buf# ->+        (arr, r) <- withPrimVectorUnsafe ba $ \ ba# s l ->+            allocPrimArrayUnsafe (l `unsafeShiftR` 1) $ \ buf# ->                 hs_hex_decode buf# ba# s l         if r < 0         then return Nothing-        else return (Just out)+        else return (Just (V.PrimVector arr 0 r))  -- | Decode a hex encoding string, ignore ASCII whitespace(space, tab, newline, vertical tab, form feed, carriage return). --@@ -121,14 +121,12 @@ hexDecodeWS ba     | V.length ba == 0 = Just V.empty     | otherwise = unsafeDupablePerformIO $ do-        (out, r) <- withPrimVectorUnsafe ba $ \ ba# s l ->-            allocPrimVectorUnsafe (l `unsafeShiftR` 1) $ \ buf# ->+        (arr, r) <- withPrimVectorUnsafe ba $ \ ba# s l ->+            allocPrimArrayUnsafe (l `unsafeShiftR` 1) $ \ buf# ->                 hs_hex_decode_ws buf# ba# s l         if r < 0         then return Nothing-        else do-            let !out' = V.unsafeTake r out-            return (Just out')+        else return (Just (V.PrimVector arr 0 r))  -- | Exception during hex decoding. data HexDecodeException = IllegalHexBytes V.Bytes CallStack
cbits/bytes.c view
@@ -251,6 +251,7 @@     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };  HsInt hs_hex_decode(uint8_t* output, const uint8_t* input, HsInt input_off, HsInt input_length) {+    uint8_t* out = output;     input = input+input_off;     for(size_t i = 0; i != input_length;) {         const uint8_t hi = HEX_TO_BIN[input[i++]];@@ -259,15 +260,15 @@             return -1;         }         else {-            *(output++) = hi << 4 | lo;+            *(out++) = hi << 4 | lo;         }     }-    return 0;+    return out - output; }  HsInt hs_hex_decode_ws(uint8_t* output, const uint8_t* input, HsInt input_off, HsInt input_length) {-    input = input+input_off;     uint8_t* out = output;+    input = input+input_off;     for(size_t i = 0; i != input_length;) {         const uint8_t w1 = input[i++];         
third_party/fastbase64/src/chromiumbase64.c view
@@ -338,7 +338,7 @@         *p++ = CHARPAD;     } -    *p = '\0';+    // *p = '\0'; don't do this in ZHaskell     return p - (uint8_t*)dest; }