Skip to content

Commit 639bfbf

Browse files
authored
Merge pull request #319 from recursion-ninja/ghc-9.10
Minor refactoring to add compatability with GHC 9.10
2 parents 6be948a + 84e5303 commit 639bfbf

File tree

19 files changed

+64
-58
lines changed

19 files changed

+64
-58
lines changed

.github/workflows/haskell.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
strategy:
2323
fail-fast: false
2424
matrix:
25-
ghc: ["8.10.7", "9.2.8", "9.4.8", "9.6.4", "9.8.2"]
25+
ghc: ["8.10.7", "9.2.8", "9.4.8", "9.6.4", "9.8.2", "9.10.1"]
2626
cabal: ["3.10.2.1"]
2727
os: [ubuntu-latest, windows-latest, macOS-latest]
2828
cabal-flags: [""]
@@ -38,6 +38,10 @@ jobs:
3838
os: windows-latest
3939
- ghc: "9.8.2"
4040
os: macOS-latest
41+
- ghc: "9.10.1"
42+
os: windows-latest
43+
- ghc: "9.10.1"
44+
os: macOS-latest
4145
include:
4246
- ghc: "8.10.7"
4347
cabal: "3.10.2.1"

bench/macro/lsm-tree-bench-bloomfilter.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import Data.BloomFilter (Bloom)
1313
import qualified Data.BloomFilter as Bloom
1414
import qualified Data.BloomFilter.Hash as Bloom
1515
import qualified Data.BloomFilter.Mutable as MBloom
16-
import Data.List (foldl')
16+
import qualified Data.Foldable as Fold
1717
import Data.Time
1818
import Data.Vector (Vector)
1919
import qualified Data.Vector as Vector
@@ -264,6 +264,6 @@ benchElemCheapHashes !bs !rng !n =
264264
let k :: Word256
265265
(!k, !rng') = uniform rng
266266
!kh = Bloom.makeHashes (serialiseKey k)
267-
in foldl' (\_ b -> Bloom.elemHashes kh b `seq` ()) () bs
267+
in Fold.foldl' (\_ b -> Bloom.elemHashes kh b `seq` ()) () bs
268268
`seq` benchElemCheapHashes bs rng' (n-1)
269269

bench/macro/lsm-tree-bench-wp8.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ import Control.Monad (forM_, unless, void, when)
4848
import qualified Crypto.Hash.SHA256 as SHA256
4949
import qualified Data.Binary as B
5050
import qualified Data.ByteString.Short as BS
51+
import qualified Data.Foldable as Fold
5152
import qualified Data.IntSet as IS
5253
import Data.IORef (modifyIORef', newIORef, readIORef, writeIORef)
53-
import Data.List (foldl')
5454
import Data.Map.Strict (Map)
5555
import qualified Data.Map.Strict as Map
5656
import Data.Traversable (mapAccumL)
@@ -762,7 +762,7 @@ pureReference !initialSize !batchSize !batchCount !seed =
762762
where
763763
(g', lookups, inserts) = generateBatch initialSize batchSize g b
764764
!results = V.map (lookup m) lookups
765-
!m' = foldl' (flip (uncurry Map.insert)) m inserts
765+
!m' = Fold.foldl' (flip (uncurry Map.insert)) m inserts
766766

767767
lookup m k =
768768
case Map.lookup k m of

bench/micro/Bench/Database/LSMTree/Internal/BloomFilter.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import Data.BloomFilter (Bloom)
1414
import qualified Data.BloomFilter as Bloom
1515
import qualified Data.BloomFilter.Easy as Bloom.Easy
1616
import Data.BloomFilter.Hash (Hashable)
17-
import Data.Foldable (Foldable (..))
17+
import qualified Data.Foldable as Fold
1818
import Data.Map.Strict (Map)
1919
import qualified Data.Map.Strict as Map
2020
import Database.LSMTree.Extras.Random
@@ -62,7 +62,7 @@ elemEnv fpr nbloom nelemsPositive nelemsNegative = do
6262

6363
-- | Used for benchmarking 'Bloom.elem'.
6464
elems :: Hashable a => Bloom a -> [a] -> ()
65-
elems b xs = foldl' (\acc x -> Bloom.elem x b `seq` acc) () xs
65+
elems b xs = Fold.foldl' (\acc x -> Bloom.elem x b `seq` acc) () xs
6666

6767
-- | Input environment for benchmarking 'constructBloom'.
6868
constructionEnv :: Int -> IO (Map SerialisedKey SerialisedKey)

bench/micro/Bench/Database/LSMTree/Internal/IndexCompact.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import Control.DeepSeq (deepseq)
1313
import Control.Exception (assert)
1414
import Control.Monad.ST.Strict
1515
import Criterion.Main
16-
import Data.Foldable (Foldable (..))
16+
import qualified Data.Foldable as Fold
1717
import qualified Data.List as List
1818
import Data.List.NonEmpty (NonEmpty (..))
1919
import qualified Data.List.NonEmpty as NE
@@ -63,7 +63,7 @@ searches ::
6363
IndexCompact
6464
-> [SerialisedKey] -- ^ Keys to search for
6565
-> ()
66-
searches ic ks = foldl' (\acc k -> search k ic `deepseq` acc) () ks
66+
searches ic ks = Fold.foldl' (\acc k -> search k ic `deepseq` acc) () ks
6767

6868
-- | Input environment for benchmarking 'constructIndexCompact'.
6969
constructionEnv ::

bench/micro/Bench/Database/LSMTree/Internal/Merge.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import qualified Criterion.Main as Cr
66
import Data.Bifunctor (first)
77
import qualified Data.BloomFilter.Hash as Hash
88
import Data.Foldable (traverse_)
9+
import qualified Data.Foldable as Fold
910
import qualified Data.List as List
1011
import Data.Maybe (fromMaybe)
1112
import Data.Word (Word64)
@@ -362,7 +363,7 @@ createRun ::
362363
-> IO (Run (FS.Handle h))
363364
createRun hasFS hasBlockIO mMappend targetPath =
364365
Run.fromWriteBuffer hasFS hasBlockIO Run.CacheRunData (RunAllocFixed 10) targetPath
365-
. List.foldl insert WB.empty
366+
. Fold.foldl insert WB.empty
366367
where
367368
insert wb (k, e) = case mMappend of
368369
Nothing -> WB.addEntryNormal k (expectNormal e) wb

bench/micro/Bench/Database/LSMTree/Internal/WriteBuffer.hs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import Control.DeepSeq (NFData (..))
44
import Criterion.Main (Benchmark, bench, bgroup)
55
import qualified Criterion.Main as Cr
66
import Data.Bifunctor (first)
7+
import qualified Data.Foldable as Fold
78
import qualified Data.List as List
89
import Data.Maybe (fromMaybe)
910
import Data.Word (Word64)
@@ -157,9 +158,9 @@ benchWriteBuffer conf@Config{name} =
157158

158159
insert :: InputKOps -> WriteBuffer
159160
insert (NormalInputs kops) =
160-
List.foldl' (\wb (k, e) -> WB.addEntryNormal k e wb) WB.empty kops
161+
Fold.foldl' (\wb (k, e) -> WB.addEntryNormal k e wb) WB.empty kops
161162
insert (MonoidalInputs kops mappendVal) =
162-
List.foldl' (\wb (k, e) -> WB.addEntryMonoidal mappendVal k e wb) WB.empty kops
163+
Fold.foldl' (\wb (k, e) -> WB.addEntryMonoidal mappendVal k e wb) WB.empty kops
163164

164165
flush :: FS.HasFS IO FS.HandleIO
165166
-> FS.HasBlockIO IO FS.HandleIO

blockio-sim/src/System/FS/BlockIO/Sim.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ simErrorHasBlockIO ::
5656
-> StrictTVar m Errors
5757
-> m (HasFS m HandleMock, HasBlockIO m HandleMock)
5858
simErrorHasBlockIO fsVar errorsVar = do
59-
let hfs = mkSimErrorHasFS fsVar errorsVar
59+
let hfs = simErrorHasFS fsVar errorsVar
6060
hbio <- fromHasFS hfs
6161
pure (hfs, hbio)
6262

@@ -66,6 +66,6 @@ simErrorHasBlockIO' ::
6666
-> Errors
6767
-> m (HasFS m HandleMock, HasBlockIO m HandleMock)
6868
simErrorHasBlockIO' mockFS errs = do
69-
hfs <- mkSimErrorHasFS' mockFS errs
69+
hfs <- simErrorHasFS' mockFS errs
7070
hbio <- fromHasFS hfs
7171
pure (hfs, hbio)

cabal.project

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ repository cardano-haskell-packages
1212

1313
index-state:
1414
-- Bump this if you need newer packages from Hackage
15-
-- current date: crc32c-0.2.2
16-
, hackage.haskell.org 2024-06-05T04:25:30Z
15+
-- current date: support ghc-9.10.1
16+
, hackage.haskell.org 2024-08-01T00:00:00Z
1717
-- Bump this if you need newer packages from CHaP
18-
-- current date: fs-api-0.2.0.1, fs-sim-0.2.1.1
19-
, cardano-haskell-packages 2023-11-30T09:59:24Z
18+
-- current date: support ghc-9.10.1
19+
, cardano-haskell-packages 2024-08-01T00:00:00Z
2020

2121
packages: .
2222

@@ -44,7 +44,13 @@ import: cabal.project.blockio-uring
4444
source-repository-package
4545
type: git
4646
location: https://github.com/input-output-hk/fs-sim
47-
tag: 47879aa5edfd3a3f8824d61687e85b8f1586e010
47+
tag: 235d5dd10aadb70defa5a2e843a4cadf5d6eb18e
4848
subdir:
4949
fs-api
5050
fs-sim
51+
52+
-- TODO: this relaxing of dependency bounds on @base@ is currently required in order to
53+
-- build the Haddock documentation with the @scripts/haddock.sh@ script.
54+
if impl(ghc >=9.10)
55+
allow-newer:
56+
quickcheck-lockstep:base,

lsm-tree.cabal

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ category: Database
1212
build-type: Simple
1313
extra-doc-files: CHANGELOG.md
1414
extra-source-files: README.md
15-
tested-with: GHC ==8.10 || ==9.2 || ==9.4 || ==9.6 || ==9.8
15+
tested-with:
16+
GHC ==8.10 || ==9.2 || ==9.4 || ==9.6 || ==9.8 || ==9.10
1617

1718
source-repository head
1819
type: git
@@ -147,23 +148,23 @@ library
147148
Database.LSMTree.Normal
148149

149150
build-depends:
150-
, base >=4.14 && <4.20
151+
, base >=4.14 && <4.21
151152
, bitvec ^>=1.1
152153
, bytestring ^>=0.11.4.0 || ^>=0.12.1.0
153154
, containers
154155
, crc32c ^>=0.2.1
155156
, deepseq ^>=1.4 || ^>=1.5
156157
, filepath
157158
, fs-api ^>=0.2
158-
, io-classes ^>=1.4
159+
, io-classes ^>=1.5
159160
, lsm-tree:blockio-api
160161
, lsm-tree:bloomfilter
161162
, lsm-tree:kmerge
162163
, lsm-tree:monkey
163164
, nothunks ^>=0.2
164165
, primitive ^>=0.9
165-
, strict-mvar ^>=1.4
166-
, strict-stm ^>=1.4
166+
, strict-mvar ^>=1.5
167+
, strict-stm ^>=1.5
167168
, vector ^>=0.13
168169
, vector-algorithms ^>=0.9
169170

@@ -336,8 +337,8 @@ test-suite lsm-tree-test
336337
, filepath
337338
, fs-api
338339
, fs-sim >=0.2
339-
, io-classes
340-
, io-sim >=1.4
340+
, io-classes >=1.5
341+
, io-sim >=1.5
341342
, lsm-tree
342343
, lsm-tree:blockio-api
343344
, lsm-tree:blockio-sim
@@ -453,7 +454,7 @@ benchmark lsm-tree-bench-lookups
453454
, bytestring
454455
, deepseq
455456
, fs-api
456-
, io-classes
457+
, io-classes >=1.5
457458
, lsm-tree
458459
, lsm-tree:blockio-api
459460
, lsm-tree:bloomfilter
@@ -571,7 +572,7 @@ test-suite kmerge-test
571572
hs-source-dirs: test
572573
main-is: kmerge-test.hs
573574
build-depends:
574-
, base >=4.14 && <4.20
575+
, base >=4.14 && <4.21
575576
, deepseq
576577
, heaps
577578
, lsm-tree:kmerge
@@ -590,7 +591,7 @@ benchmark kmerge-bench
590591
main-is: kmerge-test.hs
591592
cpp-options: -DKMERGE_BENCHMARKS
592593
build-depends:
593-
, base >=4.14 && <4.20
594+
, base >=4.14 && <4.21
594595
, deepseq
595596
, heaps
596597
, lsm-tree:kmerge
@@ -608,7 +609,7 @@ test-suite map-range-test
608609
hs-source-dirs: test
609610
main-is: map-range-test.hs
610611
build-depends:
611-
, base >=4.14 && <4.20
612+
, base >=4.14 && <4.21
612613
, bytestring
613614
, containers
614615
, lsm-tree
@@ -669,10 +670,10 @@ library blockio-api
669670
System.FS.BlockIO.Serial
670671

671672
build-depends:
672-
, base >=4.14 && <4.20
673+
, base >=4.14 && <4.21
673674
, deepseq ^>=1.4 || ^>=1.5
674675
, fs-api ^>=0.2
675-
, io-classes ^>=1.4
676+
, io-classes ^>=1.5
676677
, primitive ^>=0.9
677678
, vector ^>=0.13
678679

@@ -706,7 +707,7 @@ test-suite blockio-api-test
706707
main-is: Main.hs
707708
build-depends:
708709
, async
709-
, base >=4.14 && <4.20
710+
, base >=4.14 && <4.21
710711
, bytestring
711712
, fs-api
712713
, lsm-tree:blockio-api
@@ -725,13 +726,13 @@ library blockio-sim
725726
hs-source-dirs: blockio-sim/src
726727
exposed-modules: System.FS.BlockIO.Sim
727728
build-depends:
728-
, base >=4.14 && <4.20
729+
, base >=4.14 && <4.21
729730
, fs-api ^>=0.2
730731
, fs-sim ^>=0.2
731-
, io-classes ^>=1.4
732+
, io-classes ^>=1.5
732733
, lsm-tree:blockio-api
733734
, primitive ^>=0.9
734-
, strict-stm ^>=1.4
735+
, strict-stm ^>=1.5
735736

736737
library fcntl-nocache
737738
import: language, warnings

0 commit comments

Comments
 (0)