packages feed

unordered-containers 0.2.7.0 → 0.2.7.1

raw patch · 8 files changed

+113/−7 lines, 8 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ Data.HashMap.Lazy: infixl 9 !
+ Data.HashMap.Strict: infixl 9 !
+ Data.HashSet: instance (Data.Hashable.Class.Hashable a, GHC.Classes.Eq a) => Data.Semigroup.Semigroup (Data.HashSet.HashSet a)
- Data.HashMap.Lazy: filterWithKey :: (k -> v -> Bool) -> HashMap k v -> HashMap k v
+ Data.HashMap.Lazy: filterWithKey :: forall k v. (k -> v -> Bool) -> HashMap k v -> HashMap k v
- Data.HashMap.Strict: filterWithKey :: (k -> v -> Bool) -> HashMap k v -> HashMap k v
+ Data.HashMap.Strict: filterWithKey :: forall k v. (k -> v -> Bool) -> HashMap k v -> HashMap k v

Files

CHANGES.md view
@@ -1,3 +1,11 @@+## 0.2.7.1++ * Fix linker error related to popcnt.++ * Haddock improvements.++ * Fix benchmark compilation when downloaded from Hackage.+ ## 0.2.7.0   * Support criterion 1.1
Data/HashMap/Base.hs view
@@ -1051,7 +1051,7 @@ -- ** Lists  -- | /O(n)/ Return a list of this map's elements.  The list is--- produced lazily.+-- produced lazily. The order of its elements is unspecified. toList :: HashMap k v -> [(k, v)] toList t = build (\ c z -> foldrWithKey (curry c) z t) {-# INLINE toList #-}
Data/HashMap/Strict.hs view
@@ -234,8 +234,8 @@         | otherwise = t {-# INLINABLE adjust #-} --- | /O(log n)/  The expression (@'update' f k map@) updates the value @x@ at @k@, --- (if it is in the map). If (f k x) is @'Nothing', the element is deleted. +-- | /O(log n)/  The expression (@'update' f k map@) updates the value @x@ at @k@,+-- (if it is in the map). If (f k x) is @'Nothing', the element is deleted. -- If it is (@'Just' y), the key k is bound to the new value y. update :: (Eq k, Hashable k) => (a -> Maybe a) -> k -> HashMap k a -> HashMap k a update f = alter (>>= f)@@ -429,7 +429,18 @@ {-# INLINABLE fromList #-}  -- | /O(n*log n)/ Construct a map from a list of elements.  Uses--- the provided function to merge duplicate entries.+-- the provided function f to merge duplicate entries (f newVal oldVal).+--+-- For example:+--+-- > fromListWith (+) [ (x, 1) | x <- xs ]+--+-- will create a map with number of occurrences of each element in xs.+--+-- > fromListWith (++) [ (k, [v]) | (k, v) <- xs ]+--+-- will group all values by their keys in a list 'xs :: [(k, v)]' and+-- return a 'HashMap k [v]'. fromListWith :: (Eq k, Hashable k) => (v -> v -> v) -> [(k, v)] -> HashMap k v fromListWith f = L.foldl' (\ m (k, v) -> unsafeInsertWith f k v m) empty {-# INLINE fromListWith #-}
+ benchmarks/Util/ByteString.hs view
@@ -0,0 +1,29 @@+-- | Benchmarking utilities.  For example, functions for generating+-- random 'ByteString's.+module Util.ByteString where++import qualified Data.ByteString as S+import qualified Data.ByteString.Char8 as C++import Util.String as String++-- | Generate a number of fixed length 'ByteString's where the content+-- of the strings are letters in ascending order.+asc :: Int  -- ^ Length of each string+    -> Int  -- ^ Number of strings+    -> [S.ByteString]+asc strlen num = map C.pack $ String.asc strlen num++-- | Generate a number of fixed length 'ByteString's where the content+-- of the strings are letters in random order.+rnd :: Int  -- ^ Length of each string+    -> Int  -- ^ Number of strings+    -> [S.ByteString]+rnd strlen num = map C.pack $ String.rnd strlen num++-- | Generate a number of fixed length 'ByteString's where the content+-- of the strings are letters in random order, different from @rnd@.+rnd' :: Int  -- ^ Length of each string+     -> Int  -- ^ Number of strings+     -> [S.ByteString]+rnd' strlen num = map C.pack $ String.rnd' strlen num
+ benchmarks/Util/Int.hs view
@@ -0,0 +1,19 @@+-- | Benchmarking utilities.  For example, functions for generating+-- random integers.+module Util.Int where++import System.Random (mkStdGen, randomRs)++-- | Generate a number of uniform random integers in the interval+-- @[0..upper]@.+rnd :: Int  -- ^ Upper bound (inclusive)+    -> Int  -- ^ Number of integers+    -> [Int]+rnd upper num = take num $ randomRs (0, upper) $ mkStdGen 1234++-- | Generate a number of uniform random integers in the interval+-- @[0..upper]@ different from @rnd@.+rnd' :: Int  -- ^ Upper bound (inclusive)+     -> Int  -- ^ Number of integers+     -> [Int]+rnd' upper num = take num $ randomRs (0, upper) $ mkStdGen 5678
+ benchmarks/Util/String.hs view
@@ -0,0 +1,34 @@+-- | Benchmarking utilities.  For example, functions for generating+-- random strings.+module Util.String where++import System.Random (mkStdGen, randomRs)++-- | Generate a number of fixed length strings where the content of+-- the strings are letters in ascending order.+asc :: Int  -- ^ Length of each string+    -> Int  -- ^ Number of strings+    -> [String]+asc strlen num = take num $ iterate (snd . inc) $ replicate strlen 'a'+  where inc [] = (True, [])+        inc (c:cs) = case inc cs of (True, cs') | c == 'z'  -> (True, 'a' : cs')+                                                | otherwise -> (False, succ c : cs')+                                    (False, cs')            -> (False, c : cs')++-- | Generate a number of fixed length strings where the content of+-- the strings are letters in random order.+rnd :: Int  -- ^ Length of each string+    -> Int  -- ^ Number of strings+    -> [String]+rnd strlen num = take num $ split $ randomRs ('a', 'z') $ mkStdGen 1234+  where+    split cs = case splitAt strlen cs of (str, cs') -> str : split cs'++-- | Generate a number of fixed length strings where the content of+-- the strings are letters in random order, different from rnd+rnd' :: Int  -- ^ Length of each string+     -> Int  -- ^ Number of strings+     -> [String]+rnd' strlen num = take num $ split $ randomRs ('a', 'z') $ mkStdGen 5678+  where+    split cs = case splitAt strlen cs of (str, cs') -> str : split cs'
cbits/popc.c view
@@ -261,7 +261,7 @@ }; /* Table-driven popcount, with 8-bit tables */ /* 6 ops plus 4 casts and 4 lookups, 0 long immediates, 4 stages */-inline uint32_t+uint32_t popcount(uint32_t x) {     return popcount_table_8[(uint8_t)x] +
unordered-containers.cabal view
@@ -1,5 +1,5 @@ name:           unordered-containers-version:        0.2.7.0+version:        0.2.7.1 synopsis:       Efficient hashing-based container types description:   Efficient hashing-based container types.  The containers have been@@ -20,7 +20,7 @@ build-type:     Simple cabal-version:  >=1.8 extra-source-files: CHANGES.md-tested-with:    GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2+tested-with:    GHC==8.0.1, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2  flag debug   description:  Enable debug support@@ -148,6 +148,11 @@    main-is: Benchmarks.hs   type: exitcode-stdio-1.0++  other-modules:+    Util.ByteString+    Util.Int+    Util.String    build-depends:     base,