bytestring-strict-builder 0.4.5.3 → 0.4.5.4
raw patch · 5 files changed
+129/−91 lines, 5 filesdep −base-preludedep −semigroupsdep ~basedep ~bytestringdep ~criterionPVP ok
version bump matches the API change (PVP)
Dependencies removed: base-prelude, semigroups
Dependency ranges changed: base, bytestring, criterion, rerebase, tasty, tasty-hunit, tasty-quickcheck
API changes (from Hackage documentation)
Files
- bytestring-strict-builder.cabal +39/−75
- library/ByteString/StrictBuilder.hs +12/−6
- library/ByteString/StrictBuilder/Population.hs +4/−6
- library/ByteString/StrictBuilder/Prelude.hs +72/−2
- library/ByteString/StrictBuilder/UTF8.hs +2/−2
bytestring-strict-builder.cabal view
@@ -1,11 +1,7 @@-name:- bytestring-strict-builder-version:- 0.4.5.3-category:- Text, ByteString, Builders, Serialization-synopsis:- An efficient strict bytestring builder+name: bytestring-strict-builder+version: 0.4.5.4+category: Text, ByteString, Builders, Serialization+synopsis: An efficient strict bytestring builder description: According to <https://github.com/nikita-volkov/bytestring-builders-benchmark the competition benchmarks>, @@ -15,38 +11,24 @@ The encoders from the \"postgresql-binary\" library have shown a stable performance improvement by factors of up to 10 after the migration from the standard builder to \"bytestring-strict-builder\".-homepage:- https://github.com/nikita-volkov/bytestring-strict-builder -bug-reports:- https://github.com/nikita-volkov/bytestring-strict-builder/issues -author:- Nikita Volkov <nikita.y.volkov@mail.ru>-maintainer:- Nikita Volkov <nikita.y.volkov@mail.ru>-copyright:- (c) 2017, Nikita Volkov-license:- MIT-license-file:- LICENSE-build-type:- Simple-cabal-version:- >=1.10+homepage: https://github.com/nikita-volkov/bytestring-strict-builder+bug-reports: https://github.com/nikita-volkov/bytestring-strict-builder/issues+author: Nikita Volkov <nikita.y.volkov@mail.ru>+maintainer: Nikita Volkov <nikita.y.volkov@mail.ru>+copyright: (c) 2017, Nikita Volkov+license: MIT+license-file: LICENSE+build-type: Simple+cabal-version: >=1.10 source-repository head- type:- git- location:- git://github.com/nikita-volkov/bytestring-strict-builder.git+ type: git+ location: git://github.com/nikita-volkov/bytestring-strict-builder.git library- hs-source-dirs:- library- default-extensions:- Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples- default-language:- Haskell2010+ hs-source-dirs: library+ default-extensions: Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples+ default-language: Haskell2010 exposed-modules: ByteString.StrictBuilder other-modules:@@ -55,50 +37,32 @@ ByteString.StrictBuilder.Population.UncheckedShifting ByteString.StrictBuilder.UTF8 build-depends:- semigroups >= 0.18 && < 0.20,- bytestring >= 0.10.2 && < 0.11,- base-prelude >= 1.2 && < 2,- base >= 4.6 && < 5+ base >=4.11 && <5,+ bytestring >=0.10.2 && <0.12 test-suite tests- type:- exitcode-stdio-1.0- hs-source-dirs:- tests- main-is:- Main.hs- default-extensions:- Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples- default-language:- Haskell2010+ type: exitcode-stdio-1.0+ hs-source-dirs: tests+ main-is: Main.hs+ default-extensions: Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples+ default-language: Haskell2010 build-depends: bytestring-strict-builder,- -- testing:- tasty >= 0.12 && < 2,- tasty-quickcheck >= 0.9 && < 0.11,- tasty-hunit >= 0.9 && < 0.11,- quickcheck-instances >= 0.3.11 && < 0.4,- QuickCheck >= 2.8.1 && < 3,- -- general:- rerebase == 1.*+ QuickCheck >=2.8.1 && <3,+ quickcheck-instances >=0.3.11 && <0.4,+ rerebase >=1.10 && <2,+ tasty >=1.4 && <2,+ tasty-hunit >=0.10 && <0.11,+ tasty-quickcheck >=0.10 && <0.11 benchmark benchmarks- type:- exitcode-stdio-1.0- hs-source-dirs:- benchmarks- main-is:- Main.hs- ghc-options:- -O2- -threaded- "-with-rtsopts=-N"- -funbox-strict-fields- default-extensions:- Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveTraversable, DeriveGeneric, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples- default-language:- Haskell2010+ type: exitcode-stdio-1.0+ hs-source-dirs: benchmarks+ main-is: Main.hs+ ghc-options: -O2 -threaded "-with-rtsopts=-N" -funbox-strict-fields+ default-extensions: Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveTraversable, DeriveGeneric, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples+ default-language: Haskell2010 build-depends: bytestring-strict-builder,- criterion >= 1.1 && < 1.6,- rerebase == 1.*+ criterion >=1.5.9 && <1.6,+ rerebase >=1.10 && <2
library/ByteString/StrictBuilder.hs view
@@ -34,13 +34,22 @@ data Builder = Builder !Int !A.Population +instance Semigroup Builder where+ (<>) (Builder leftSize leftPopulation) (Builder rightSize rightPopulation) =+ Builder (leftSize + rightSize) (leftPopulation <> rightPopulation)+ {-# INLINE sconcat #-}+ sconcat builders =+ Builder size population+ where+ size =+ foldl' (\acc (Builder x _) -> acc + x) 0 builders+ population =+ foldMap (\(Builder _ x) -> x) builders+ instance Monoid Builder where {-# INLINE mempty #-} mempty = Builder 0 mempty- {-# INLINE mappend #-}- mappend (Builder leftSize leftPopulation) (Builder rightSize rightPopulation) =- Builder (leftSize + rightSize) (leftPopulation <> rightPopulation) {-# INLINE mconcat #-} mconcat builders = Builder size population@@ -49,9 +58,6 @@ foldl' (\acc (Builder x _) -> acc + x) 0 builders population = foldMap (\(Builder _ x) -> x) builders--instance Semigroup Builder where- (<>) = mappend instance IsString Builder where fromString =
library/ByteString/StrictBuilder/Population.hs view
@@ -12,16 +12,14 @@ newtype Population = Population { populationPtrUpdate :: Ptr Word8 -> IO (Ptr Word8) } +instance Semigroup Population where+ (<>) (Population leftPtrUpdate) (Population rightPtrUpdate) =+ Population (leftPtrUpdate >=> rightPtrUpdate)+ instance Monoid Population where {-# INLINE mempty #-} mempty = Population return- {-# INLINE mappend #-}- mappend (Population leftPtrUpdate) (Population rightPtrUpdate) =- Population (leftPtrUpdate >=> rightPtrUpdate)--instance Semigroup Population where- (<>) = mappend {-|
library/ByteString/StrictBuilder/Prelude.hs view
@@ -4,6 +4,76 @@ ) where -import BasePrelude as Exports+-- base+-------------------------+import Control.Applicative as Exports hiding (WrappedArrow(..))+import Control.Arrow as Exports hiding (first, second)+import Control.Category as Exports+import Control.Concurrent as Exports+import Control.Exception as Exports+import Control.Monad as Exports hiding (fail, mapM_, sequence_, forM_, msum, mapM, sequence, forM)+import Control.Monad.IO.Class as Exports+import Control.Monad.Fail as Exports+import Control.Monad.Fix as Exports hiding (fix)+import Control.Monad.ST as Exports+import Data.Bifunctor as Exports+import Data.Bits as Exports+import Data.Bool as Exports+import Data.Char as Exports+import Data.Coerce as Exports+import Data.Complex as Exports+import Data.Data as Exports+import Data.Dynamic as Exports+import Data.Either as Exports+import Data.Fixed as Exports+import Data.Foldable as Exports hiding (toList)+import Data.Function as Exports hiding (id, (.))+import Data.Functor as Exports+import Data.Functor.Compose as Exports+import Data.Int as Exports+import Data.IORef as Exports+import Data.Ix as Exports+import Data.List as Exports hiding (sortOn, isSubsequenceOf, uncons, concat, foldr, foldl1, maximum, minimum, product, sum, all, and, any, concatMap, elem, foldl, foldr1, notElem, or, find, maximumBy, minimumBy, mapAccumL, mapAccumR, foldl')+import Data.List.NonEmpty as Exports (NonEmpty(..))+import Data.Maybe as Exports+import Data.Monoid as Exports hiding (Alt, (<>))+import Data.Ord as Exports+import Data.Proxy as Exports+import Data.Ratio as Exports+import Data.Semigroup as Exports hiding (First(..), Last(..))+import Data.STRef as Exports+import Data.String as Exports+import Data.Traversable as Exports+import Data.Tuple as Exports+import Data.Unique as Exports+import Data.Version as Exports+import Data.Void as Exports+import Data.Word as Exports+import Debug.Trace as Exports+import Foreign.ForeignPtr as Exports+import Foreign.Ptr as Exports+import Foreign.StablePtr as Exports+import Foreign.Storable as Exports+import GHC.Conc as Exports hiding (orElse, withMVar, threadWaitWriteSTM, threadWaitWrite, threadWaitReadSTM, threadWaitRead)+import GHC.Exts as Exports (IsList(..), lazy, inline, sortWith, groupWith)+import GHC.Generics as Exports (Generic)+import GHC.IO.Exception as Exports+import GHC.OverloadedLabels as Exports+import Numeric as Exports+import Prelude as Exports hiding (Read, fail, concat, foldr, mapM_, sequence_, foldl1, maximum, minimum, product, sum, all, and, any, concatMap, elem, foldl, foldr1, notElem, or, mapM, sequence, id, (.))+import System.Environment as Exports+import System.Exit as Exports+import System.IO as Exports (Handle, hClose)+import System.IO.Error as Exports+import System.IO.Unsafe as Exports+import System.Mem as Exports+import System.Mem.StableName as Exports+import System.Timeout as Exports+import Text.ParserCombinators.ReadP as Exports (ReadP, readP_to_S, readS_to_P)+import Text.ParserCombinators.ReadPrec as Exports (ReadPrec, readPrec_to_P, readP_to_Prec, readPrec_to_S, readS_to_Prec)+import Text.Printf as Exports (printf, hPrintf)+import Unsafe.Coerce as Exports++-- bytestring+------------------------- import Data.ByteString as Exports (ByteString)-import Data.Semigroup as Exports hiding ((<>), Last(..), First(..))
library/ByteString/StrictBuilder/UTF8.hs view
@@ -19,8 +19,8 @@ {-# INLINE char #-} char :: Char -> UTF8Char-char =- unicodeCodePoint . ord+char x =+ unicodeCodePoint (ord x) {-# INLINE unicodeCodePoint #-} unicodeCodePoint :: Int -> UTF8Char