hw-rankselect 0.12.0.2 → 0.12.0.3
raw patch · 10 files changed
+101/−87 lines, 10 filesdep +transformersdep ~QuickCheckdep ~basedep ~bytestringnew-uploaderbinary-addedPVP ok
version bump matches the API change (PVP)
Dependencies added: transformers
Dependency ranges changed: QuickCheck, base, bytestring, conduit, criterion, deepseq, directory, hedgehog, hspec, hw-balancedparens, hw-bits, hw-hedgehog, hw-hspec-hedgehog, hw-prim, hw-rankselect-base, lens, mmap, mtl, optparse-applicative, resourcet, vector
API changes (from Hackage documentation)
Files
- README.md +1/−0
- app/App/Commands/Build.hs +2/−2
- app/App/Commands/SelectAll.hs +2/−2
- app/Main.hs +2/−2
- bench/Main.hs +12/−11
- data/sample-000.idx binary
- hw-rankselect.cabal +78/−68
- test/HaskellWorks/Data/RankSelect/CsPoppySpec.hs +1/−0
- test/HaskellWorks/Data/RankSelect/ValidateSpec.hs +2/−1
- test/Test/Common.hs +1/−1
README.md view
@@ -1,5 +1,6 @@ # hw-rankselect [](https://circleci.com/gh/haskell-works/hw-rankselect)+[](https://travis-ci.org/haskell-works/hw-rankselect) Efficient `rank` and `select` operations on large bit-vectors based on the paper "Space-Efficient, High-Performance Rank & Select Structures on Uncompressed Bit
app/App/Commands/Build.hs view
@@ -20,14 +20,14 @@ runBuild :: BuildOptions -> IO () runBuild opts = case opts ^. L.indexType of CsPoppy -> do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries forM_ files $ \file -> do putStrLn $ "Loading cspoppy for " <> file CS.CsPoppy !_ !_ !_ <- mmapFromForeignRegion file return () Poppy512 -> do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries forM_ files $ \file -> do putStrLn $ "Loading cspoppy for " <> file
app/App/Commands/SelectAll.hs view
@@ -23,7 +23,7 @@ runSelectAll :: O.SelectAllOptions -> IO () runSelectAll opts = case opts ^. L.indexType of O.CsPoppy -> do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries forM_ files $ \file -> do putStrLn $ "Loading cspoppy for " <> file@@ -33,7 +33,7 @@ return () return () O.Poppy512 -> do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries forM_ files $ \file -> do putStrLn $ "Loading cspoppy for " <> file
app/Main.hs view
@@ -20,7 +20,7 @@ runPoppy512SelectAll :: IO () runPoppy512SelectAll = do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries forM_ files $ \file -> do putStrLn $ "Loading cspoppy for " <> file@@ -32,7 +32,7 @@ runCsPoppySelectAll :: IO () runCsPoppySelectAll = do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries forM_ files $ \file -> do putStrLn $ "Loading cspoppy for " <> file
bench/Main.hs view
@@ -6,6 +6,7 @@ import Control.Monad import Criterion.Main import Data.List+import Data.Monoid ((<>)) import Data.Word import HaskellWorks.Data.Bits.PopCount.PopCount1 import HaskellWorks.Data.FromForeignRegion@@ -29,7 +30,7 @@ benchCsPoppyBuild :: IO [Benchmark] benchCsPoppyBuild = do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries return (mkBenchmark <$> files) where mkBenchmark filename = env (mmapFromForeignRegion filename) $ \bitString -> bgroup filename@@ -38,7 +39,7 @@ benchCsPoppyRank1 :: IO [Benchmark] benchCsPoppyRank1 = do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries return (mkBenchmark <$> files) where mkBenchmark filename = env (mmapFromForeignRegion filename) $ \(v :: CsPoppy) -> bgroup filename@@ -47,7 +48,7 @@ benchCsPoppySelect1 :: IO [Benchmark] benchCsPoppySelect1 = do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries return (mkBenchmark <$> files) where mkBenchmark filename = env (mmapFromForeignRegion filename) $ \(rsbs :: CsPoppy) -> bgroup filename@@ -59,7 +60,7 @@ benchPoppy512Build :: IO [Benchmark] benchPoppy512Build = do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries return (mkBenchmark <$> files) where mkBenchmark filename = env (mmapFromForeignRegion filename) $ \bitString -> bgroup filename@@ -68,7 +69,7 @@ benchPoppy512Rank1 :: IO [Benchmark] benchPoppy512Rank1 = do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries return (mkBenchmark <$> files) where mkBenchmark filename = env (mmapFromForeignRegion filename) $ \(rsbs :: Poppy512) -> bgroup filename@@ -77,7 +78,7 @@ benchPoppy512Select1 :: IO [Benchmark] benchPoppy512Select1 = do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries return (mkBenchmark <$> files) where mkBenchmark filename = env (mmapFromForeignRegion filename) $ \(rsbs :: Poppy512) -> bgroup filename@@ -89,7 +90,7 @@ runCsPoppyBuild :: IO () runCsPoppyBuild = do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries forM_ files $ \file -> do msbs :: CsPoppy <- mmapFromForeignRegion file@@ -98,7 +99,7 @@ benchMakeCsPoppyBlocks1 :: IO [Benchmark] benchMakeCsPoppyBlocks1 = do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries return (mkBenchmark <$> files) where mkBenchmark filename = env (mmapFromForeignRegion filename) $ \(v :: DVS.Vector Word64) -> bgroup filename@@ -107,7 +108,7 @@ benchMakeCsPoppyBlocks2 :: IO [Benchmark] benchMakeCsPoppyBlocks2 = do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries return (mkBenchmark <$> files) where mkBenchmark filename = env (mmapFromForeignRegion filename) $ \(v :: DVS.Vector Word64) -> bgroup filename@@ -116,7 +117,7 @@ benchMakeCsPoppyLayerM :: IO [Benchmark] benchMakeCsPoppyLayerM = do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries return (mkBenchmark <$> files) where mkBenchmark filename = env (mkEnv filename) $ \(v :: DVS.Vector Word64) -> bgroup filename@@ -129,7 +130,7 @@ benchGenCsSamples :: IO [Benchmark] benchGenCsSamples = do- entries <- listDirectory "data"+ entries <- getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries return (mkBenchmark <$> files) where mkBenchmark filename = env (mkEnv filename) $ \ ~(pc, v :: DVS.Vector Word64) -> bgroup filename
+ data/sample-000.idx view
binary file changed (absent → 184872 bytes)
hw-rankselect.cabal view
@@ -1,11 +1,11 @@--- This file has been generated from package.yaml by hpack version 0.20.0.+-- This file has been generated from package.yaml by hpack version 0.27.0. -- -- see: https://github.com/sol/hpack ----- hash: b29dda4066f480c03d4e57b5948804c058cecee507ecba37e5857567b3b852fb+-- hash: 1a884e08d826a4ac01f16811763a63e54433817022a52322a43feb446d2b9e13 name: hw-rankselect-version: 0.12.0.2+version: 0.12.0.3 synopsis: Rank-select description: Please see README.md category: Data, Conduit@@ -16,11 +16,13 @@ copyright: 2016 John Ky license: BSD3 license-file: LICENSE+tested-with: GHC == 8.4.2, GHC == 8.2.2, GHC == 8.0.2, GHC == 7.10.3 build-type: Simple cabal-version: >= 1.10 extra-source-files: data/README.md+ data/sample-000.idx README.md source-repository head@@ -33,51 +35,32 @@ default: False library- hs-source-dirs:- src- ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -O2 -msse4.2- build-depends:- base >=4 && <5- , deepseq- , hw-balancedparens >=0.1.0.0- , hw-bits >=0.6.0.0- , hw-prim >=0.4.0.3- , hw-rankselect-base >=0.2.0.0- , vector- if (flag(bmi2)) && (impl(ghc >=8.4.1))- ghc-options: -mbmi2 -msse4.2- cpp-options: -DBMI2_ENABLED exposed-modules: HaskellWorks.Data.RankSelect.CsPoppy HaskellWorks.Data.RankSelect.CsPoppy.Internal HaskellWorks.Data.RankSelect.Poppy512 other-modules: Paths_hw_rankselect- default-language: Haskell2010--executable hw-rankselect- main-is: Main.hs hs-source-dirs:- app- default-extensions: OverloadedStrings TupleSections- ghc-options: -threaded -rtsopts -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -O2 -msse4.2+ src+ ghc-options: -Wall -O2 -msse4.2 build-depends:- base >=4.7 && <5- , directory- , hw-bits >=0.4.0.0- , hw-prim >=0.4.0.0- , hw-rankselect- , hw-rankselect-base >=0.2.0.0- , lens- , mmap- , mtl- , optparse-applicative- , vector+ base >=4 && <5+ , deepseq >=1.4 && <1.5+ , hw-balancedparens >=0.1.0.0 && <0.3+ , hw-bits >=0.6.0.0 && <0.8+ , hw-prim >=0.6 && <0.7+ , hw-rankselect-base >=0.2.0.0 && <0.4+ , vector >=0.12 && <0.13 if (flag(bmi2)) && (impl(ghc >=8.4.1)) ghc-options: -mbmi2 -msse4.2 cpp-options: -DBMI2_ENABLED- if os(osx)- cpp-options: -D__attribute__(A)= -D_Nullable= -D_Nonnull=+ if (impl(ghc >=8.0.1))+ ghc-options: -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints+ default-language: Haskell2010++executable hw-rankselect+ main-is: Main.hs other-modules: App.Commands App.Commands.Build@@ -87,31 +70,32 @@ App.Commands.UnitTest App.Commands.Validate Paths_hw_rankselect- default-language: Haskell2010--test-suite hw-rankselect-test- type: exitcode-stdio-1.0- main-is: Spec.hs hs-source-dirs:- test- ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall+ app+ default-extensions: OverloadedStrings TupleSections+ ghc-options: -threaded -rtsopts -Wall -O2 -msse4.2 build-depends:- QuickCheck- , base >=4 && <5- , directory- , hedgehog- , hspec- , hw-bits >=0.4.0.0- , hw-hedgehog >=0.1.0.1- , hw-hspec-hedgehog- , hw-prim >=0.5.0.4+ base >=4.7 && <5+ , directory >=1.2 && <1.4+ , hw-bits >=0.4.0.0 && <0.8+ , hw-prim >=0.4.0.0 && <0.7 , hw-rankselect- , hw-rankselect-base >=0.2.0.0- , mmap- , vector+ , hw-rankselect-base >=0.2.0.0 && <0.4+ , lens >=4 && <5+ , mmap >=0.5 && <0.6+ , mtl >=2.2 && <2.3+ , optparse-applicative >=0.11 && <0.15+ , vector >=0.12 && <0.13 if (flag(bmi2)) && (impl(ghc >=8.4.1)) ghc-options: -mbmi2 -msse4.2 cpp-options: -DBMI2_ENABLED+ if (impl(ghc >=8.0.1))+ ghc-options: -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints+ default-language: Haskell2010++test-suite hw-rankselect-test+ type: exitcode-stdio-1.0+ main-is: Spec.hs other-modules: HaskellWorks.Data.RankSelect.BasicGen HaskellWorks.Data.RankSelect.BinarySearchSpec@@ -125,30 +109,56 @@ HaskellWorks.Data.RankSelect.ValidateSpec Test.Common Paths_hw_rankselect+ hs-source-dirs:+ test+ ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall+ build-depends:+ QuickCheck >=2.10 && <2.12+ , base >=4 && <5+ , directory >=1.2 && <1.4+ , hedgehog >=0.5 && <0.7+ , hspec >=2.4 && <2.6+ , hw-bits >=0.4.0.0 && <0.8+ , hw-hedgehog >=0.1.0.1 && <0.2+ , hw-hspec-hedgehog >=0.1 && <0.2+ , hw-prim >=0.5.0.4 && <0.7+ , hw-rankselect+ , hw-rankselect-base >=0.2.0.0 && <0.4+ , mmap >=0.5 && <0.6+ , transformers >=0.4 && <0.6+ , vector >=0.12 && <0.13+ if (flag(bmi2)) && (impl(ghc >=8.4.1))+ ghc-options: -mbmi2 -msse4.2+ cpp-options: -DBMI2_ENABLED+ if (impl(ghc >=8.0.1))+ ghc-options: -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints default-language: Haskell2010+ build-tool-depends: hspec-discover:hspec-discover benchmark bench type: exitcode-stdio-1.0 main-is: Main.hs+ other-modules:+ Paths_hw_rankselect hs-source-dirs: bench ghc-options: -O2 -Wall -msse4.2 build-depends: base >=4 && <5- , bytestring- , conduit- , criterion- , directory- , hw-bits >=0.4.0.0- , hw-prim >=0.4.0.0+ , bytestring >=0.10 && <0.11+ , conduit >=1.2 && <1.4+ , criterion >=1.1 && <1.5+ , directory >=1.2 && <1.5+ , hw-bits >=0.4.0.0 && <0.8+ , hw-prim >=0.6.0.0 && <0.7 , hw-rankselect- , hw-rankselect-base >=0.2.0.0- , mmap- , resourcet- , vector+ , hw-rankselect-base >=0.3.1.0 && <0.4+ , mmap >=0.5 && <0.6+ , resourcet >=1.1 && <1.3+ , vector >=0.12 && <0.13 if (flag(bmi2)) && (impl(ghc >=8.4.1)) ghc-options: -mbmi2 -msse4.2 cpp-options: -DBMI2_ENABLED- other-modules:- Paths_hw_rankselect+ if (impl(ghc >=8.0.1))+ ghc-options: -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints default-language: Haskell2010
test/HaskellWorks/Data/RankSelect/CsPoppySpec.hs view
@@ -9,6 +9,7 @@ import Control.Monad import Control.Monad.IO.Class import Data.Maybe+import Data.Monoid ((<>)) import Data.Word import GHC.Exts import HaskellWorks.Data.AtIndex
test/HaskellWorks/Data/RankSelect/ValidateSpec.hs view
@@ -6,6 +6,7 @@ import Control.Monad import Control.Monad.IO.Class import Data.List (isSuffixOf)+import Data.Monoid ((<>)) import Data.Word import HaskellWorks.Data.AtIndex import HaskellWorks.Data.Bits.PopCount.PopCount1@@ -26,7 +27,7 @@ {-# ANN module ("HLint: ignore Reduce duplication" :: String) #-} entries :: [FilePath]-entries = mfilter (".idx" `isSuffixOf`) <$> unsafePerformIO $ IO.listDirectory "data"+entries = mfilter (".idx" `isSuffixOf`) <$> unsafePerformIO $ IO.getDirectoryContents "data" spec :: Spec spec = describe "HaskellWorks.Data.RankSelect.ValidateSpec" $ do
test/Test/Common.hs view
@@ -13,7 +13,7 @@ corpusFiles :: [FilePath] corpusFiles = IO.unsafePerformIO $ do- entries <- IO.listDirectory "data"+ entries <- IO.getDirectoryContents "data" let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries return files {-# NOINLINE corpusFiles #-}