stm-hamt 1.2.0.14 → 1.2.1
raw patch · 4 files changed
+68/−48 lines, 4 filesdep ~primitive-extrasPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: primitive-extras
API changes (from Hackage documentation)
+ StmHamt.Hamt: listTNonAtomic :: Hamt a -> ListT IO a
Files
- library/StmHamt/Hamt.hs +4/−0
- library/StmHamt/ListT.hs +11/−0
- stm-hamt.cabal +51/−47
- test/Main/Transaction.hs +2/−1
library/StmHamt/Hamt.hs view
@@ -12,6 +12,7 @@ reset, unfoldlM, listT,+ listTNonAtomic, ) where @@ -124,6 +125,9 @@ listT :: Hamt a -> ListT STM a listT = ListT.hamtElements++listTNonAtomic :: Hamt a -> ListT IO a+listTNonAtomic = ListT.hamtElementsNonAtomic null :: Hamt a -> STM Bool null (Hamt branchSsaVar) = do
library/StmHamt/ListT.hs view
@@ -9,10 +9,21 @@ hamtElements :: Hamt a -> ListT STM a hamtElements (Hamt var) = tVarValue var >>= By6Bits.elementsListT >>= branchElements +hamtElementsNonAtomic :: Hamt a -> ListT IO a+hamtElementsNonAtomic (Hamt var) = tVarValueIO var >>= By6Bits.elementsListT >>= branchElementsNonAtomic+ branchElements :: Branch a -> ListT STM a branchElements = \case LeavesBranch _ array -> SmallArray.elementsListT array BranchesBranch hamt -> hamtElements hamt +branchElementsNonAtomic :: Branch a -> ListT IO a+branchElementsNonAtomic = \case+ LeavesBranch _ array -> SmallArray.elementsListT array+ BranchesBranch hamt -> hamtElementsNonAtomic hamt+ tVarValue :: TVar a -> ListT STM a tVarValue var = lift (readTVar var)++tVarValueIO :: TVar a -> ListT IO a+tVarValueIO var = lift (readTVarIO var)
stm-hamt.cabal view
@@ -1,7 +1,7 @@ cabal-version: 3.0-name: stm-hamt-version: 1.2.0.14-synopsis: STM-specialised Hash Array Mapped Trie+name: stm-hamt+version: 1.2.1+synopsis: STM-specialised Hash Array Mapped Trie description: A low-level data-structure, which can be used to implement higher-level interfaces like@@ -9,20 +9,18 @@ Such implementations are presented by the <http://hackage.haskell.org/package/stm-containers stm-containers>. -category: Data Structures, STM, Concurrency-homepage: https://github.com/nikita-volkov/stm-hamt-bug-reports: https://github.com/nikita-volkov/stm-hamt/issues-author: Nikita Volkov <nikita.y.volkov@mail.ru>-maintainer: Nikita Volkov <nikita.y.volkov@mail.ru>-copyright: (c) 2016, Nikita Volkov-license: MIT-license-file: LICENSE+category: Data Structures, STM, Concurrency+homepage: https://github.com/nikita-volkov/stm-hamt+bug-reports: https://github.com/nikita-volkov/stm-hamt/issues+author: Nikita Volkov <nikita.y.volkov@mail.ru>+maintainer: Nikita Volkov <nikita.y.volkov@mail.ru>+copyright: (c) 2016, Nikita Volkov+license: MIT+license-file: LICENSE common base- default-language: Haskell2010+ default-language: Haskell2010 default-extensions:- NoImplicitPrelude- NoMonomorphismRestriction Arrows BangPatterns BinaryLiterals@@ -45,6 +43,8 @@ MagicHash MultiParamTypeClasses MultiWayIf+ NoImplicitPrelude+ NoMonomorphismRestriction OverloadedStrings ParallelListComp PatternGuards@@ -60,8 +60,8 @@ UnboxedTuples library- import: base- hs-source-dirs: library+ import: base+ hs-source-dirs: library exposed-modules: StmHamt.Hamt StmHamt.SizedHamt@@ -76,46 +76,50 @@ StmHamt.UnfoldlM build-depends:- , base >=4.9 && <5- , deferred-folds >=0.9 && <0.10- , focus >=1 && <1.1- , hashable >=1.4.0.0 && <2- , list-t >=1.0.1 && <1.1- , primitive >=0.7 && <0.10- , primitive-extras >=0.10 && <0.11- , transformers >=0.5 && <0.7+ base >=4.9 && <5,+ deferred-folds >=0.9 && <0.10,+ focus >=1 && <1.1,+ hashable >=1.4.0.0 && <2,+ list-t >=1.0.1 && <1.1,+ primitive >=0.7 && <0.10,+ primitive-extras >=0.10.2 && <0.11,+ transformers >=0.5 && <0.7, test-suite test- import: base- type: exitcode-stdio-1.0+ import: base+ type: exitcode-stdio-1.0 hs-source-dirs: test- main-is: Main.hs+ main-is: Main.hs other-modules: Main.Gens Main.Transaction build-depends:- , deferred-folds- , focus- , QuickCheck >=2.8.1 && <3- , quickcheck-instances >=0.3.11 && <0.4- , rerebase <2- , stm-hamt- , tasty >=0.12 && <2- , tasty-hunit >=0.9 && <0.11- , tasty-quickcheck >=0.9 && <0.11+ QuickCheck >=2.8.1 && <3,+ deferred-folds,+ focus,+ quickcheck-instances >=0.3.11 && <0.4,+ rerebase <2,+ stm-hamt,+ tasty >=0.12 && <2,+ tasty-hunit >=0.9 && <0.11,+ tasty-quickcheck >=0.9 && <0.11, benchmark concurrent-insertion-bench- import: base- type: exitcode-stdio-1.0+ import: base+ type: exitcode-stdio-1.0 hs-source-dirs: concurrent-insertion-bench- ghc-options: -O2 -threaded -with-rtsopts=-N- main-is: Main.hs+ ghc-options:+ -O2+ -threaded+ -with-rtsopts=-N++ main-is: Main.hs build-depends:- , async >=2.0 && <3- , criterion >=1.5 && <1.7- , focus- , free >=4.5 && <6- , random >=1.2 && <2- , rebase <2- , stm-hamt+ async >=2.0 && <3,+ criterion >=1.5 && <1.7,+ focus,+ free >=4.5 && <6,+ random >=1.2 && <2,+ rebase <2,+ stm-hamt,
test/Main/Transaction.hs view
@@ -8,7 +8,8 @@ import qualified StmHamt.Hamt as StmHamt import Prelude -data Transaction = forall result.+data Transaction+ = forall result. (Show result, Eq result) => Transaction { name :: Text,