Hello community, here is the log from the commit of package ghc-vector-builder for openSUSE:Factory checked in at 2019-02-17 12:20:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ghc-vector-builder (Old) and /work/SRC/openSUSE:Factory/.ghc-vector-builder.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-vector-builder" Sun Feb 17 12:20:40 2019 rev:4 rq:674312 version:0.3.7.2 Changes: -------- --- /work/SRC/openSUSE:Factory/ghc-vector-builder/ghc-vector-builder.changes 2018-10-25 09:07:04.258478838 +0200 +++ /work/SRC/openSUSE:Factory/.ghc-vector-builder.new.28833/ghc-vector-builder.changes 2019-02-17 12:20:43.396210753 +0100 @@ -1,0 +2,6 @@ +Thu Feb 7 13:49:01 UTC 2019 - psim...@suse.com + +- Update vector-builder to version 0.3.7.2. + Upstream does not provide a change log file. + +------------------------------------------------------------------- Old: ---- vector-builder-0.3.6.tar.gz New: ---- vector-builder-0.3.7.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ghc-vector-builder.spec ++++++ --- /var/tmp/diff_new_pack.7euwmZ/_old 2019-02-17 12:20:44.212210529 +0100 +++ /var/tmp/diff_new_pack.7euwmZ/_new 2019-02-17 12:20:44.216210528 +0100 @@ -1,7 +1,7 @@ # # spec file for package ghc-vector-builder # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %global pkg_name vector-builder %bcond_with tests Name: ghc-%{pkg_name} -Version: 0.3.6 +Version: 0.3.7.2 Release: 0 Summary: Vector builder License: MIT @@ -59,8 +59,8 @@ > >import qualified Data.Vector as A >import qualified VectorBuilder.Builder as B >import qualified VectorBuilder.Vector as C > > >myVector :: A.Vector a -> [a] -> a -> A.Vector a >myVector vector list element = > C.build builder > -where > builder = > B.vector vector <> > foldMap B.singleton list <> > -B.singleton element. +where > builder = > B.vector vector <> > B.foldable list <> > B.singleton +element. %package devel Summary: Haskell %{pkg_name} library development files ++++++ vector-builder-0.3.6.tar.gz -> vector-builder-0.3.7.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vector-builder-0.3.6/library/VectorBuilder/Alternative.hs new/vector-builder-0.3.7.2/library/VectorBuilder/Alternative.hs --- old/vector-builder-0.3.6/library/VectorBuilder/Alternative.hs 2018-08-03 14:51:04.000000000 +0200 +++ new/vector-builder-0.3.7.2/library/VectorBuilder/Alternative.hs 2019-02-06 12:39:12.000000000 +0100 @@ -9,10 +9,11 @@ import Data.Vector (Vector) import qualified VectorBuilder.Builder as A import qualified VectorBuilder.Vector as B +import qualified Data.Vector.Generic as C {-# INLINABLE many #-} -many :: Alternative m => m a -> m (Vector a) +many :: (Alternative m, C.Vector vector a) => m a -> m (vector a) many = fmap B.build . manyBuilder {-# INLINABLE manyBuilder #-} @@ -22,7 +23,7 @@ in loop {-# INLINABLE some #-} -some :: Alternative m => m a -> m (Vector a) +some :: (Alternative m, C.Vector vector a) => m a -> m (vector a) some m = B.build <$> someBuilder m {-# INLINABLE someBuilder #-} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vector-builder-0.3.6/library/VectorBuilder/Builder.hs new/vector-builder-0.3.7.2/library/VectorBuilder/Builder.hs --- old/vector-builder-0.3.6/library/VectorBuilder/Builder.hs 2018-08-03 14:51:04.000000000 +0200 +++ new/vector-builder-0.3.7.2/library/VectorBuilder/Builder.hs 2019-02-06 12:39:12.000000000 +0100 @@ -4,6 +4,7 @@ empty, singleton, vector, + foldable, ) where diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vector-builder-0.3.6/library/VectorBuilder/Core/Builder.hs new/vector-builder-0.3.7.2/library/VectorBuilder/Core/Builder.hs --- old/vector-builder-0.3.6/library/VectorBuilder/Core/Builder.hs 2018-08-03 14:51:04.000000000 +0200 +++ new/vector-builder-0.3.7.2/library/VectorBuilder/Core/Builder.hs 2019-02-06 12:39:12.000000000 +0100 @@ -1,9 +1,10 @@ module VectorBuilder.Core.Builder where -import VectorBuilder.Prelude hiding (empty) +import VectorBuilder.Prelude hiding (empty, concat) import qualified VectorBuilder.Core.Update as A import qualified Data.Vector.Generic as B +import qualified Data.Vector.Generic.Mutable as C -- | @@ -39,6 +40,11 @@ vector vector = Builder (B.length vector) (A.writeMany vector) +{-# INLINE foldable #-} +foldable :: Foldable foldable => foldable element -> Builder element +foldable foldable = + Builder (length foldable) (A.writeFoldable foldable) + -- * Updates @@ -62,6 +68,17 @@ append = flip prepend +{-# INLINE concat #-} +concat :: Foldable foldable => foldable (Builder element) -> Builder element +concat builders = + Builder + (let + step size (Builder builderSize _) = size + builderSize + in foldl' step 0 builders) + (A.Update (\mVector offset -> foldM_ (\index (Builder size (A.Update st)) -> + st mVector index $> index + size) + offset + builders)) -- * Instances @@ -71,6 +88,8 @@ {-# INLINE (<>) #-} (<>) = prepend + sconcat = + concat -- | -- Provides support for /O(1)/ concatenation. @@ -81,5 +100,7 @@ {-# INLINE mappend #-} mappend = (<>) - + {-# INLINE mconcat #-} + mconcat = + concat diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vector-builder-0.3.6/library/VectorBuilder/Core/Update.hs new/vector-builder-0.3.7.2/library/VectorBuilder/Core/Update.hs --- old/vector-builder-0.3.6/library/VectorBuilder/Core/Update.hs 2018-08-03 14:51:04.000000000 +0200 +++ new/vector-builder-0.3.7.2/library/VectorBuilder/Core/Update.hs 2019-02-06 12:39:12.000000000 +0100 @@ -28,3 +28,8 @@ empty :: Update element empty = Update (\_ _ -> pure ()) + +{-# INLINE writeFoldable #-} +writeFoldable :: Foldable foldable => foldable element -> Update element +writeFoldable foldable = + Update (\mVector offset -> foldM_ (\ index element -> A.unsafeWrite mVector index element $> succ index) offset foldable) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vector-builder-0.3.6/library/VectorBuilder/MonadPlus.hs new/vector-builder-0.3.7.2/library/VectorBuilder/MonadPlus.hs --- old/vector-builder-0.3.6/library/VectorBuilder/MonadPlus.hs 2018-08-03 14:51:04.000000000 +0200 +++ new/vector-builder-0.3.7.2/library/VectorBuilder/MonadPlus.hs 2019-02-06 12:39:12.000000000 +0100 @@ -9,33 +9,51 @@ import Data.Vector (Vector) import qualified VectorBuilder.Builder as A import qualified VectorBuilder.Vector as B +import qualified Data.Vector.Generic as C {-# INLINABLE many #-} -many :: MonadPlus m => m a -> m (Vector a) +many :: (MonadPlus m, C.Vector vector element) => m element -> m (vector element) many m = - liftM B.build loop + liftM B.build (manyBuilder m) + +{-# INLINABLE manyBuilder #-} +manyBuilder :: (MonadPlus m) => m element -> m (A.Builder element) +manyBuilder m = + loop mempty where - loop = + loop !builder = mplus (do !element <- m - remainders <- loop - return (A.singleton element <> remainders)) - (return mempty) + loop (builder <> A.singleton element)) + (return builder) + +{-# INLINABLE many1 #-} +many1 :: (MonadPlus m, C.Vector vector element) => m element -> m (vector element) +many1 m = + do + firstElement <- m + builder <- manyBuilder m + return (B.build (A.singleton firstElement <> builder)) {-# INLINABLE sepBy #-} -sepBy :: MonadPlus m => m element -> m separator -> m (Vector element) +sepBy :: (MonadPlus m, C.Vector vector element) => m element -> m separator -> m (vector element) sepBy elementM separatorM = - mplus (sepBy1 elementM separatorM) (return mempty) + mplus (sepBy1 elementM separatorM) (return C.empty) {-# INLINABLE sepBy1 #-} -sepBy1 :: MonadPlus m => m element -> m separator -> m (Vector element) +sepBy1 :: (MonadPlus m, C.Vector vector element) => m element -> m separator -> m (vector element) sepBy1 elementM separatorM = - liftM B.build loop + do + firstElement <- elementM + builder <- loop (A.singleton firstElement) + return (B.build builder) where - loop = - do - !element <- elementM - remainders <- mplus (separatorM >> loop) (return mempty) - return (A.singleton element <> remainders) + loop builder = + mplus + (do + separatorM + !element <- elementM + loop (builder <> A.singleton element)) + (return builder) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vector-builder-0.3.6/tests/Main/Sample.hs new/vector-builder-0.3.7.2/tests/Main/Sample.hs --- old/vector-builder-0.3.6/tests/Main/Sample.hs 2018-08-03 14:51:04.000000000 +0200 +++ new/vector-builder-0.3.7.2/tests/Main/Sample.hs 2019-02-06 12:39:12.000000000 +0100 @@ -10,7 +10,8 @@ data Sample a = Empty | Singleton a | - Vector (Vector a) + Vector (Vector a) | + List [a] deriving (Show) toBuilder :: Sample a -> A.Builder a @@ -19,6 +20,7 @@ Empty -> A.empty Singleton a -> A.singleton a Vector a -> A.vector a + List a -> A.foldable a toVector :: Sample a -> Vector a toVector = @@ -26,12 +28,14 @@ Empty -> B.empty Singleton a -> B.singleton a Vector a -> a + List a -> B.fromList a instance C.Arbitrary a => C.Arbitrary (Sample a) where arbitrary = do - constructorIndex <- C.choose (0 :: Int, 2) + constructorIndex <- C.choose (0 :: Int, 3) case constructorIndex of 0 -> return Empty 1 -> C.arbitrary >>= return . Singleton 2 -> C.arbitrary >>= return . Vector + 3 -> C.arbitrary >>= return . List diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vector-builder-0.3.6/tests/Main.hs new/vector-builder-0.3.7.2/tests/Main.hs --- old/vector-builder-0.3.6/tests/Main.hs 2018-08-03 14:51:04.000000000 +0200 +++ new/vector-builder-0.3.7.2/tests/Main.hs 2019-02-06 12:39:12.000000000 +0100 @@ -8,16 +8,18 @@ import qualified VectorBuilder.Builder as A import qualified VectorBuilder.Vector as B import qualified VectorBuilder.Alternative as F +import qualified VectorBuilder.MonadPlus as H import qualified Main.Sample as C import qualified Data.Attoparsec.Text as D import qualified Data.Vector as E +import qualified Data.Text as G main = defaultMain $ testGroup "All tests" [ - testProperty "" $ \(samples :: [C.Sample Int]) -> + testProperty "samples" $ \(samples :: [C.Sample Int]) -> foldMap C.toVector samples === B.build (foldMap C.toBuilder samples) , @@ -27,6 +29,33 @@ , testCase "Alternative.some on empty" $ assertEqual "" (Left "not enough input") - (D.parseOnly (F.some D.anyChar) "") + (D.parseOnly (F.some D.anyChar :: D.Parser (Vector Char)) "") + , + testProperty "mconcat" $ \(samples :: [C.Sample Int]) -> + foldMap C.toVector samples === + B.build (mconcat (map C.toBuilder samples)) + , + testProperty "foldable" $ \(elements :: [Int]) -> + E.fromList elements === + B.build (A.foldable elements) + , + testGroup "MonadPlus" + [ + testProperty "many" $ \(elements :: [Char]) -> + Right (E.fromList elements) === + D.parseOnly (H.many D.anyChar) (fromString elements) + , + testProperty "many1" $ \(elements :: [Char]) -> + (if null elements + then Left "not enough input" + else Right (E.fromList elements)) === + D.parseOnly (H.many1 D.anyChar) (fromString elements) + , + testProperty "sepBy1" $ \(elements :: [Char]) -> + (if null elements + then Left "not enough input" + else Right (E.fromList elements)) === + D.parseOnly (H.sepBy1 D.anyChar (D.char ',')) (G.intersperse ',' (fromString elements)) + ] ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vector-builder-0.3.6/vector-builder.cabal new/vector-builder-0.3.7.2/vector-builder.cabal --- old/vector-builder-0.3.6/vector-builder.cabal 2018-08-03 14:51:04.000000000 +0200 +++ new/vector-builder-0.3.7.2/vector-builder.cabal 2019-02-06 12:39:12.000000000 +0100 @@ -1,7 +1,7 @@ name: vector-builder version: - 0.3.6 + 0.3.7.2 synopsis: Vector builder description: @@ -29,7 +29,7 @@ > where > builder = > B.vector vector <> - > foldMap B.singleton list <> + > B.foldable list <> > B.singleton element category: Vector @@ -79,7 +79,7 @@ vector >=0.11 && <0.13, semigroups >=0.16 && <0.20, base-prelude <2, - base >=4.6 && <5 + base >=4.8 && <5 test-suite tests type: @@ -98,57 +98,8 @@ attoparsec >=0.13 && <0.14, QuickCheck >=2.8.1 && <3, quickcheck-instances >=0.3.11 && <0.4, - rerebase ==1.*, - tasty >=1.0.1 && <1.2, - tasty-hunit >=0.10 && <0.11, - tasty-quickcheck >=0.10 && <0.11, + rerebase <2, + tasty >=0.12 && <2, + tasty-hunit >=0.9 && <0.11, + tasty-quickcheck >=0.9 && <0.11, vector-builder - --- benchmark foldl-benchmark --- type: --- exitcode-stdio-1.0 --- hs-source-dirs: --- foldl-benchmark --- main-is: --- Main.hs --- ghc-options: --- -O2 --- -threaded --- "-with-rtsopts=-N" --- -rtsopts --- 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: --- vector-builder, --- foldl >=1.2 && <2, --- -- benchmarking: --- criterion >=1.1 && <2, --- -- general: --- rerebase <2 - --- test-suite foldl-profiling --- type: --- exitcode-stdio-1.0 --- hs-source-dirs: --- foldl-profiling --- main-is: --- Main.hs --- ghc-options: --- -O2 --- -threaded --- "-with-rtsopts=-N" --- -rtsopts --- 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: --- vector-builder, --- foldl >=1.2 && <2, --- -- benchmarking: --- criterion >=1.1 && <2, --- -- general: --- bug ==1.*, --- rerebase <2