packages feed

bytebuild 0.3.6.0 → 0.3.7.0

raw patch · 5 files changed

+63/−12 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Data.Bytes.Builder: ascii7 :: Char -> Char -> Char -> Char -> Char -> Char -> Char -> Builder
+ Data.Bytes.Builder: ascii8 :: Char -> Char -> Char -> Char -> Char -> Char -> Char -> Char -> Builder
+ Data.Bytes.Builder.Bounded: ascii7 :: Char -> Char -> Char -> Char -> Char -> Char -> Char -> Builder 7
+ Data.Bytes.Builder.Bounded: ascii8 :: Char -> Char -> Char -> Char -> Char -> Char -> Char -> Char -> Builder 8

Files

CHANGELOG.md view
@@ -5,6 +5,12 @@ `small-bytearray-builder` is now just a compatibility shim to ease the migration process. +## 0.3.7.0 -- 2020-11-06++* Fix build error in test suite.+* Add `ascii7` and `ascii8`.+* Performance tweak for json string escape builder.+ ## 0.3.6.0 -- 2020-06-30  * Add `replicate`.
bytebuild.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: bytebuild-version: 0.3.6.0+version: 0.3.7.0 synopsis: Serialize to a small byte arrays description:   This is similar to the builder facilities provided by
src/Data/Bytes/Builder.hs view
@@ -64,6 +64,8 @@   , ascii4   , ascii5   , ascii6+  , ascii7+  , ascii8   , char     -- ** Machine-Readable     -- *** One@@ -649,17 +651,18 @@         then case indexChar8Array (ByteArray src#) soff of           '\\' -> write2 dst doff '\\' '\\' *> go (soff + 1) (slen - 1) (doff + 2)           '\"' -> write2 dst doff '\\' '\"' *> go (soff + 1) (slen - 1) (doff + 2)-          '\n' -> write2 dst doff '\\' 'n' *> go (soff + 1) (slen - 1) (doff + 2)-          '\r' -> write2 dst doff '\\' 'r' *> go (soff + 1) (slen - 1) (doff + 2)-          '\t' -> write2 dst doff '\\' 't' *> go (soff + 1) (slen - 1) (doff + 2)           c -> if c >= '\x20'             then PM.writeByteArray dst doff (c2w c) *> go (soff + 1) (slen - 1) (doff + 1)-            else do-              write2 dst doff '\\' 'u'-              doff' <- UnsafeBounded.pasteST-                (Bounded.word16PaddedUpperHex (fromIntegral (c2w c)))-                dst (doff + 2)-              go (soff + 1) (slen - 1) doff'+            else case c of+              '\n' -> write2 dst doff '\\' 'n' *> go (soff + 1) (slen - 1) (doff + 2)+              '\r' -> write2 dst doff '\\' 'r' *> go (soff + 1) (slen - 1) (doff + 2)+              '\t' -> write2 dst doff '\\' 't' *> go (soff + 1) (slen - 1) (doff + 2)+              _ -> do+                write2 dst doff '\\' 'u'+                doff' <- UnsafeBounded.pasteST+                  (Bounded.word16PaddedUpperHex (fromIntegral (c2w c)))+                  dst (doff + 2)+                go (soff + 1) (slen - 1) doff'         else pure doff   doffRes <- go (I# soff0#) (I# slen0#) (doff0 + 1)   PM.writeByteArray dst doffRes (c2w '"')@@ -860,10 +863,20 @@ ascii5 :: Char -> Char -> Char -> Char -> Char -> Builder ascii5 a b c d e = fromBounded Nat.constant (Bounded.ascii5 a b c d e) --- | Encode five ASCII characters.+-- | Encode six ASCII characters. -- Precondition: Must be an ASCII characters. This is not checked. ascii6 :: Char -> Char -> Char -> Char -> Char -> Char -> Builder ascii6 a b c d e f = fromBounded Nat.constant (Bounded.ascii6 a b c d e f)++-- | Encode seven ASCII characters.+-- Precondition: Must be an ASCII characters. This is not checked.+ascii7 :: Char -> Char -> Char -> Char -> Char -> Char -> Char -> Builder+ascii7 a b c d e f g = fromBounded Nat.constant (Bounded.ascii7 a b c d e f g)++-- | Encode eight ASCII characters.+-- Precondition: Must be an ASCII characters. This is not checked.+ascii8 :: Char -> Char -> Char -> Char -> Char -> Char -> Char -> Char -> Builder+ascii8 a b c d e f g h = fromBounded Nat.constant (Bounded.ascii8 a b c d e f g h)  -- | Encode a UTF-8 char. This only uses as much space as is required. char :: Char -> Builder
src/Data/Bytes/Builder/Bounded.hs view
@@ -65,6 +65,8 @@   , ascii4   , ascii5   , ascii6+  , ascii7+  , ascii8   , char     -- ** Native   , wordPaddedDec2@@ -794,6 +796,33 @@   primitive_ (writeCharArray# arr (off +# 4# ) c4)   primitive_ (writeCharArray# arr (off +# 5# ) c5)   pure (I# (off +# 6# ))++-- | Encode seven ASCII characters. Precondition: Must be an ASCII characters.+-- This is not checked.+ascii7 :: Char -> Char -> Char -> Char -> Char -> Char -> Char -> Builder 7+ascii7 (C# c0) (C# c1) (C# c2) (C# c3) (C# c4) (C# c5) (C# c6) = Unsafe.construct $ \(MutableByteArray arr) (I# off) -> do+  primitive_ (writeCharArray# arr off c0)+  primitive_ (writeCharArray# arr (off +# 1# ) c1)+  primitive_ (writeCharArray# arr (off +# 2# ) c2)+  primitive_ (writeCharArray# arr (off +# 3# ) c3)+  primitive_ (writeCharArray# arr (off +# 4# ) c4)+  primitive_ (writeCharArray# arr (off +# 5# ) c5)+  primitive_ (writeCharArray# arr (off +# 6# ) c6)+  pure (I# (off +# 7# ))++-- | Encode eight ASCII characters. Precondition: Must be an ASCII characters.+-- This is not checked.+ascii8 :: Char -> Char -> Char -> Char -> Char -> Char -> Char -> Char -> Builder 8+ascii8 (C# c0) (C# c1) (C# c2) (C# c3) (C# c4) (C# c5) (C# c6) (C# c7) = Unsafe.construct $ \(MutableByteArray arr) (I# off) -> do+  primitive_ (writeCharArray# arr off c0)+  primitive_ (writeCharArray# arr (off +# 1# ) c1)+  primitive_ (writeCharArray# arr (off +# 2# ) c2)+  primitive_ (writeCharArray# arr (off +# 3# ) c3)+  primitive_ (writeCharArray# arr (off +# 4# ) c4)+  primitive_ (writeCharArray# arr (off +# 5# ) c5)+  primitive_ (writeCharArray# arr (off +# 6# ) c6)+  primitive_ (writeCharArray# arr (off +# 7# ) c7)+  pure (I# (off +# 8# ))  -- | Encode a machine-sized word with LEB-128. wordLEB128 :: Word -> Builder 10
test/Main.hs view
@@ -5,6 +5,8 @@  {-# OPTIONS_GHC -fno-warn-orphans #-} +import Prelude hiding (replicate)+ import Control.Applicative (liftA2) import Control.Monad.ST (runST) import Data.Bytes.Builder@@ -35,6 +37,7 @@ import qualified Data.Text as T import qualified Data.Text.Encoding as TE import qualified GHC.Exts as Exts+import qualified Prelude import qualified Test.Tasty.HUnit as THU import qualified Test.Tasty.QuickCheck as TQC @@ -321,7 +324,7 @@  zeroPadL :: Int -> String -> String zeroPadL n s-  | length s < n = replicate (n - length s) '0' ++ s+  | length s < n = Prelude.replicate (n - length s) '0' ++ s   | otherwise = s  naiveLeb128 :: Natural -> ByteArray