cabal-version: 3.0 name: atomic-modify-general version: 0.1.0.0 synopsis: Generalizations of atomicModifyIORef description: @base@ provides @ atomicModifyIORef :: IORef a -> (a -> (a, b)) -> IO b atomicModifyIORef2 :: IORef a -> (a -> (a, b)) -> IO (a, (a, b)) @ to modify the value in an @IORef@ and return a result (and, in the case of @atomicModifyIORef2@, also return the old value). In "Data.IORef.AtomicModify", we generalize this from pairs to arbitrary types for which the user can provide a function to extract the new value to store in the @IORef@. In "Data.IORef.AtomicModify.Generic", we offer a faster but more restricted version taking advantage of the fact that the primop used to implement @atomicModifyIORef2@ actually works for /somewhat/ more general record types than @atomicModifyIORef2@ accepts. homepage: https://github.com/treeowl/atomic-modify-general license: BSD-2-Clause license-file: LICENSE author: David Feuer maintainer: David.Feuer@gmail.com copyright: 2023 David Feuer category: Concurrency build-type: Simple extra-doc-files: CHANGELOG.md -- extra-source-files: tested-with: GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.7 , GHC == 9.0.2, GHC == 9.2.7, GHC == 9.4.4, GHC == 9.6.1 source-repository head type: git location: http://github.com/treeowl/atomic-modify-general.git common warnings ghc-options: -Wall library import: warnings exposed-modules: Data.IORef.AtomicModify , Data.IORef.AtomicModify.Generic other-modules: Data.IORef.AtomicModify.SmallArraySize -- other-extensions: build-depends: base >= 4.11 && < 4.19 , primitive hs-source-dirs: src if impl (ghc >= 8.10) hs-source-dirs: compat-sa-size-recent else hs-source-dirs: compat-sa-size-old if impl (ghc < 8.8) hs-source-dirs: compat-atomic-modify-old other-modules: Data.IORef.AtomicModify.Generic.UnsafeToPair default-language: Haskell2010 if impl (ghc < 8.6) ghc-options: -Wno-unticked-promoted-constructors test-suite atomic-modify-general-test import: warnings default-language: Haskell2010 -- other-modules: -- other-extensions: type: exitcode-stdio-1.0 hs-source-dirs: test main-is: Main.hs build-depends: base >= 4.11.0 && < 4.19 , atomic-modify-general