hashtables 1.2.3.2 → 1.2.3.3
raw patch · 5 files changed
+38/−13 lines, 5 filesdep ~primitivePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: primitive
API changes (from Hackage documentation)
Files
- changelog.md +4/−0
- hashtables.cabal +23/−4
- src/Data/HashTable/Internal/IntArray.hs +2/−0
- src/Data/HashTable/Internal/Linear/Bucket.hs +3/−3
- src/Data/HashTable/ST/Cuckoo.hs +6/−6
changelog.md view
@@ -1,5 +1,9 @@ # Hashtables changelog +## 1.2.3.3++Fix build with certain versions of `primitive` (thx again Carter)+ ## 1.2.3.2 - CPP fix for breakage caused by primitive 0.7 (thx Carter)
hashtables.cabal view
@@ -1,16 +1,20 @@+Cabal-Version: 2.2 Name: hashtables-Version: 1.2.3.2+Version: 1.2.3.3 Synopsis: Mutable hash tables in the ST monad Homepage: http://github.com/gregorycollins/hashtables-License: BSD3+License: BSD-3-Clause License-file: LICENSE Author: Gregory Collins Maintainer: greg@gregorycollins.net, mgoremeier@gmail.com Copyright: (c) 2011-2014, Google, Inc., 2016-present contributors Category: Data Build-type: Simple-Cabal-version: >= 1.8 ++tested-with: GHC==8.8.1,GHC==8.6.5, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3, GHC==7.8.4++ Description: This package provides a couple of different implementations of mutable hash tables in the ST monad, as well as a typeclass abstracting their common@@ -134,7 +138,13 @@ Flag debug Description: if on, spew debugging output to stdout Default: False+ Manual: True +Flag detailed-profiling+ Description: add detailed profiling information to profiled build-depends+ Default: False+ Manual: True+ Flag sse42 Description: if on, use SSE 4.2 extensions to search cache lines very efficiently. The portable flag forces this off.@@ -146,6 +156,7 @@ Library+ Default-Language: Haskell2010 hs-source-dirs: src if flag(sse42) && !flag(portable)@@ -191,10 +202,18 @@ if flag(bounds-checking) cpp-options: -DBOUNDS_CHECKING - ghc-prof-options: -auto-all+ if flag(detailed-profiling)+ if impl(ghc >= 7.4.1)+ ghc-prof-options: -fprof-auto+ if impl(ghc < 7.4.1)+ ghc-prof-options: -auto-all if impl(ghc >= 6.12.0) ghc-options: -Wall -fwarn-tabs -funbox-strict-fields -O2 -fno-warn-unused-do-bind else ghc-options: -Wall -fwarn-tabs -funbox-strict-fields -O2++source-repository head+ type: git+ location: https://github.com/gregorycollins/hashtables.git
src/Data/HashTable/Internal/IntArray.hs view
@@ -20,7 +20,9 @@ import Control.Monad.ST import Data.Bits import qualified Data.Primitive.ByteArray as A+#if !MIN_VERSION_primitive(0,7,0) import Data.Primitive.Types (Addr (..))+#endif import GHC.Exts import GHC.Word import Prelude hiding (length)
src/Data/HashTable/Internal/Linear/Bucket.hs view
@@ -350,7 +350,7 @@ return (hw', mbk, a) | otherwise = mutate' $ fromKey bucketKey where- mutate' (Bucket sz hwRef keys values) = do+ mutate' (Bucket _sz hwRef keys values) = do hw <- readSTRef hwRef pos <- findPosition hw (hw-1) mv <- do@@ -363,10 +363,10 @@ (Nothing, (Just v', a)) -> do (!hw', mbk) <- snoc bucketKey k v' return (hw', mbk, a)- (Just v, (Just v', a)) -> do+ (Just _v, (Just v', a)) -> do writeArray values pos v' return (hw, Nothing, a)- (Just v, (Nothing, a)) -> do+ (Just _v, (Nothing, a)) -> do move (hw-1) pos keys move (hw-1) pos values let !hw' = hw-1
src/Data/HashTable/ST/Cuckoo.hs view
@@ -432,14 +432,14 @@ -> (Maybe v -> ST s (Maybe v, a)) -> ST s (HashTable_ s k v, a) mutate' ht@(HashTable sz _ hashes keys values _) !k !f = do- !(maybeVal, idx, hashCode) <- lookupSlot+ !(maybeVal, idx, _hashCode) <- lookupSlot !fRes <- f maybeVal case (maybeVal, fRes) of (Nothing, (Nothing, a)) -> return (ht, a)- (Just v, (Just v', a)) -> do+ (Just _v, (Just v', a)) -> do writeArray values idx v' return (ht, a)- (Just v, (Nothing, a)) -> do+ (Just _v, (Nothing, a)) -> do deleteFromSlot ht idx return (ht, a) (Nothing, (Just v', a)) -> do@@ -486,7 +486,7 @@ else do result <- cuckooOrFail ht h1 h2 b1 b2 k v maybe (return ht)- (\(k', v') -> do+ (\(_k', _v') -> do newHt <- grow ht k v return newHt) result@@ -498,7 +498,7 @@ HashTable_ s k v -> Int -> ST s ()-deleteFromSlot ht@(HashTable _ _ hashes keys values _) idx = do+deleteFromSlot _ht@(HashTable _ _ hashes keys values _) idx = do U.writeArray hashes idx emptyMarker writeArray keys idx undefined writeArray values idx undefined@@ -513,7 +513,7 @@ -> k -> v -> ST s ()-insertIntoSlot ht@(HashTable _ _ hashes keys values _) idx he k v = do+insertIntoSlot _ht@(HashTable _ _ hashes keys values _) idx he k v = do U.writeArray hashes idx he writeArray keys idx k writeArray values idx v