hw-dsv 0.4.1.1 → 0.4.1.2
raw patch · 3 files changed
+21/−15 lines, 3 filesdep ~bytestringdep ~deepseqdep ~doctestPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: bytestring, deepseq, doctest, ghc-prim, hedgehog, optparse-applicative, resourcet
API changes (from Hackage documentation)
Files
- hw-dsv.cabal +11/−11
- src/HaskellWorks/Data/Dsv/Internal/Vector.hs +5/−0
- test/HaskellWorks/Data/Dsv/Strict/Cursor/InternalSpec.hs +5/−4
hw-dsv.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2 name: hw-dsv-version: 0.4.1.1+version: 0.4.1.2 synopsis: Unbelievably fast streaming DSV file parser description: Please see the README on Github at <https://github.com/haskell-works/hw-dsv#readme> category: Text, CSV, SIMD, Succinct Data Structures, Data Structures@@ -41,16 +41,16 @@ common appar { build-depends: appar >= 0.1.8 && < 0.2 } common bits-extra { build-depends: bits-extra >= 0.0.1.2 && < 0.1 }-common bytestring { build-depends: bytestring >= 0.10 && < 0.12 }+common bytestring { build-depends: bytestring >= 0.10 && < 0.13 } common cassava { build-depends: cassava >= 0.5.1.0 && < 0.6 }-common criterion { build-depends: criterion >= 1.4.1.0 && < 1.6 }-common deepseq { build-depends: deepseq >= 1.4 && < 1.5 }+common criterion { build-depends: criterion >= 1.4.1.0 && < 1.7 }+common deepseq { build-depends: deepseq >= 1.4 && < 1.6 } common directory { build-depends: directory >= 1.2.2 && < 1.4 }-common doctest { build-depends: doctest >= 0.16.2 && < 0.21 }+common doctest { build-depends: doctest >= 0.16.2 && < 0.23 } common doctest-discover { build-depends: doctest-discover >= 0.2 && < 0.3 } common generic-lens { build-depends: generic-lens >= 2.2 && < 2.3 }-common ghc-prim { build-depends: ghc-prim >= 0.4 && < 0.9 }-common hedgehog { build-depends: hedgehog >= 0.5 && < 1.2 }+common ghc-prim { build-depends: ghc-prim >= 0.4 && < 1 }+common hedgehog { build-depends: hedgehog >= 0.5 && < 1.5 } common hspec { build-depends: hspec >= 2.4 && < 3 } common hw-bits { build-depends: hw-bits >= 0.7.0.2 && < 0.8 } common hw-hspec-hedgehog { build-depends: hw-hspec-hedgehog >= 0.1.0.4 && < 0.2 }@@ -61,11 +61,11 @@ common hw-simd { build-depends: hw-simd >= 0.1.1.3 && < 0.2 } common lens { build-depends: lens >= 4.15 && < 6 } common mmap { build-depends: mmap >= 0.5.9 && < 0.6 }-common optparse-applicative { build-depends: optparse-applicative >= 0.13 && < 0.18 }-common resourcet { build-depends: resourcet >= 1.1 && < 1.3 }-common text { build-depends: text >= 1.2.2 && < 2.0 }+common optparse-applicative { build-depends: optparse-applicative >= 0.13 && < 0.19 }+common resourcet { build-depends: resourcet >= 1.1 && < 1.4 }+common text { build-depends: text >= 1.2.2 && < 3 } common transformers { build-depends: transformers >= 0.4 && < 0.7 }-common vector { build-depends: vector >= 0.12.0.1 && < 0.13 }+common vector { build-depends: vector >= 0.12.0.1 && < 0.14 } common weigh { build-depends: weigh >= 0.0.6 && < 0.1 } common config
src/HaskellWorks/Data/Dsv/Internal/Vector.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE MagicHash #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-}@@ -40,7 +41,11 @@ {-# INLINE constructNS #-} ltWord :: Word64 -> Word64 -> Word64+#if MIN_VERSION_base(4,17,2)+ltWord (W64# a#) (W64# b#) = fromIntegral (I# (ltWord64# a# b#))+#else ltWord (W64# a#) (W64# b#) = fromIntegral (I64# (ltWord# a# b#))+#endif {-# INLINE ltWord #-} indexCsvChunk ::
test/HaskellWorks/Data/Dsv/Strict/Cursor/InternalSpec.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE BangPatterns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-} module HaskellWorks.Data.Dsv.Strict.Cursor.InternalSpec (spec) where @@ -42,26 +43,26 @@ let !expected = DVS.foldr (\a b -> popCount1 a + b) 0 ( SVS.mkIbVector pipe v) actual === expected it "Case 2" $ requireTest $ do- bs :: ByteString <- forAll $ T.encodeUtf8 . T.pack <$> G.string (R.linear 0 128) (G.element " \"|\n")+ bs :: ByteString <- forAll $ T.encodeUtf8 . T.pack <$> G.string (R.linear 0 128) (G.element (id @String " \"|\n")) v <- forAll $ pure $ fromByteString bs let !actual = DVS.foldr (\a b -> popCount1 a + b) 0 (fst $ SVS.makeIndexes pipe v) let !expected = DVS.foldr (\a b -> popCount1 a + b) 0 ( SVS.mkIbVector pipe v) actual === expected it "Case 3" $ requireTest $ do- bs :: ByteString <- forAll $ T.encodeUtf8 . T.pack <$> G.string (R.linear 0 128) (G.element " \"|\n")+ bs :: ByteString <- forAll $ T.encodeUtf8 . T.pack <$> G.string (R.linear 0 128) (G.element (id @String " \"|\n")) v <- forAll $ pure $ fromByteString bs let !actual = DVS.foldr (\a b -> popCount1 a + b) 0 (fst $ SVS.makeIndexes pipe v) let !expected = DVS.foldr (\a b -> popCount1 a + b) 0 ( SVS.mkIbVector pipe v) actual === expected it "Case 4" $ requireTest $ do- bs :: ByteString <- forAll $ T.encodeUtf8 . T.pack <$> G.string (R.linear 0 10000) (G.element " \"")+ bs :: ByteString <- forAll $ T.encodeUtf8 . T.pack <$> G.string (R.linear 0 10000) (G.element (id @String " \"")) v <- forAll $ pure $ fromByteString bs numQuotes <- forAll $ pure $ BS.length $ BS.filter (== fromIntegral (ord '"')) bs u <- forAll $ pure $ fst $ SVS.makeIndexes pipe v let !pc = DVS.foldr (\a b -> popCount1 a + b) 0 u pc === fromIntegral numQuotes it "Case 5" $ requireTest $ do- bs :: ByteString <- forAll $ T.encodeUtf8 . T.pack <$> G.string (R.linear 0 10000) (G.element " \"")+ bs :: ByteString <- forAll $ T.encodeUtf8 . T.pack <$> G.string (R.linear 0 10000) (G.element (id @String " \"")) v <- forAll $ pure $ fromByteString bs u <- forAll $ pure $ fst $ SVS.makeIndexes pipe v let !expected = SVS.mkIbVector pipe v