rcu 0.2.4 → 0.2.5
raw patch · 13 files changed
+36/−108 lines, 13 filesdep −doctestdep ~basedep ~parallelsetup-changed
Dependencies removed: doctest
Dependency ranges changed: base, parallel
Files
- .hlint.yaml +8/−0
- CHANGELOG.markdown +7/−0
- HLint.hs +0/−8
- README.markdown +1/−1
- Setup.lhs +5/−32
- Warning.hs +0/−5
- examples/IncCounterExperiment.hs +1/−0
- examples/MoveString.hs +1/−0
- examples/TimeSynchronize.hs +5/−1
- rcu.cabal +7/−32
- src/Control/Concurrent/RCU/GC/Internal.hs +0/−1
- src/Control/Concurrent/RCU/QSBR/Internal.hs +1/−3
- tests/doctests.hs +0/−25
+ .hlint.yaml view
@@ -0,0 +1,8 @@+- arguments: [--cpp-define=HLINT, --cpp-ansi]++- ignore: {name: Reduce duplication}+- ignore: {name: Redundant lambda}+- ignore: {name: Use >=>}+- ignore: {name: Use const}+- ignore: {name: Eta reduce}+- ignore: {name: Avoid lambda}
CHANGELOG.markdown view
@@ -1,3 +1,10 @@+## 0.2.5 [2021.02.17]+---------------------+* The build-type has been changed from `Custom` to `Simple`.+ To achieve this, the `doctests` test suite has been removed in favor of using+ [`cabal-docspec`](https://github.com/phadej/cabal-extras/tree/master/cabal-docspec)+ to run the doctests.+ ## 0.2.4 [2019.05.02] --------------------- * Support building with `base-4.13` (GHC 8.8).
− HLint.hs
@@ -1,8 +0,0 @@-import "hint" HLint.HLint--ignore "Reduce duplication"-ignore "Redundant lambda"-ignore "Use >=>"-ignore "Use const"-ignore "Eta reduce"-ignore "Avoid lambda"
README.markdown view
@@ -1,6 +1,6 @@ ## rcu -[](https://hackage.haskell.org/package/rcu) [](http://travis-ci.org/ekmett/rcu)+[](https://hackage.haskell.org/package/rcu) [](https://github.com/ekmett/rcu/actions?query=workflow%3AHaskell-CI) This package is an exploration of Read-Copy Update in Haskell based on [Relativistic Programming in Haskell](http://web.cecs.pdx.edu/~theod/papers/haskell2015.pdf) by Cooper and Walpole. It includes a sound QSBR-based implementation and an attempt at an STM-based implementation.
Setup.lhs view
@@ -1,34 +1,7 @@-\begin{code}-{-# LANGUAGE CPP #-}-{-# OPTIONS_GHC -Wall #-}-module Main (main) where--#ifndef MIN_VERSION_cabal_doctest-#define MIN_VERSION_cabal_doctest(x,y,z) 0-#endif--#if MIN_VERSION_cabal_doctest(1,0,0)--import Distribution.Extra.Doctest ( defaultMainWithDoctests )-main :: IO ()-main = defaultMainWithDoctests "doctests"--#else--#ifdef MIN_VERSION_Cabal--- If the macro is defined, we have new cabal-install,--- but for some reason we don't have cabal-doctest in package-db------ Probably we are running cabal sdist, when otherwise using new-build--- workflow-import Warning ()-#endif--import Distribution.Simple--main :: IO ()-main = defaultMain+#!/usr/bin/runhaskell+> module Main (main) where -#endif+> import Distribution.Simple -\end{code}+> main :: IO ()+> main = defaultMain
− Warning.hs
@@ -1,5 +0,0 @@-module Warning- {-# WARNING ["You are configuring this package without cabal-doctest installed.",- "The doctests test-suite will not work as a result.",- "To fix this, install cabal-doctest before configuring."] #-}- () where
examples/IncCounterExperiment.hs view
@@ -11,6 +11,7 @@ -- -- Which counter increment is faster? -----------------------------------------------------------------------------+module Main where import Control.Monad (forM_) import Control.Monad.Primitive (primitive)
examples/MoveString.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-}+module Main where import Control.Concurrent.RCU.MODE import Control.Concurrent.RCU.Class
examples/TimeSynchronize.hs view
@@ -3,6 +3,8 @@ {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-}+module Main where+ import Control.Concurrent import Control.Concurrent.RCU.MODE.Internal import Control.Concurrent.RCU.Class@@ -11,7 +13,9 @@ import Control.Monad import Data.Bits ((.&.), (.|.), shiftL) import Data.List (intercalate)+#if !(MIN_VERSION_base(4,13,0)) import Data.Monoid ((<>))+#endif import Data.Word (Word64) import Options.Applicative (auto, execParser, fullDesc, help, info, long, metavar, option, progDesc, short) import Prelude hiding (read)@@ -126,7 +130,7 @@ let nReaders = fromIntegral nCaps - nReserved putStrLn $ "reserved: " ++ show nReserved ++ ", readers: " ++ show nReaders ++ ", updates: " ++ show nUpdates let nTotal = fromIntegral $ nUpdates * nReaders :: Double- (ods, wfrd, wd, wfd) <- runOnRCU 0 $ RCU $ \ s -> do+ (ods, _wfrd, wd, wfd) <- runOnRCU 0 $ RCU $ \ s -> do -- initialize list hd <- unRCU testList s -- initialize flag writer uses to stop readers
rcu.cabal view
@@ -1,6 +1,6 @@ name: rcu category: Data-version: 0.2.4+version: 0.2.5 license: BSD3 cabal-version: 1.22 license-file: LICENSE@@ -10,32 +10,27 @@ homepage: http://github.com/ekmett/rcu/ bug-reports: http://github.com/ekmett/rcu/issues copyright: Copyright (C) 2015 Edward A. Kmett, Theodore Rhys Cooper-build-type: Custom+build-type: Simple tested-with: GHC == 7.10.3 , GHC == 8.0.2 , GHC == 8.2.2 , GHC == 8.4.4 , GHC == 8.6.5- , GHC == 8.8.1+ , GHC == 8.8.3+ , GHC == 8.10.1 synopsis: Read-Copy-Update for Haskell description: Read-Copy-Update for Haskell. extra-source-files:+ .hlint.yaml examples/*.hs CHANGELOG.markdown README.markdown- HLint.hs- Warning.hs source-repository head type: git location: git://github.com/ekmett/rcu.git --- You can disable the doctests test suite with -f-test-doctests-flag test-doctests- default: True- manual: True- -- Include unstable and/or potentially incorrect implementations. flag unstable default: False@@ -47,12 +42,6 @@ default: False manual: True -custom-setup- setup-depends:- base >= 4 && < 5,- Cabal,- cabal-doctest >= 1 && < 1.1- library build-depends: atomic-primops >= 0.8,@@ -76,6 +65,8 @@ pause.h pause_impl.h ghc-options: -Wall -fwarn-tabs -feager-blackholing+ if impl(ghc >= 8.6)+ ghc-options: -Wno-star-is-type hs-source-dirs: src default-language: Haskell2010 @@ -451,19 +442,3 @@ hs-source-dirs: examples ghc-options: -threaded -Wall -fwarn-tabs -feager-blackholing -rtsopts "-with-rtsopts=-N -qa -A1g -I0 -s" default-language: Haskell2010--test-suite doctests- type: exitcode-stdio-1.0- main-is: doctests.hs- ghc-options: -Wall -threaded- hs-source-dirs: tests- default-language: Haskell2010-- if !flag(test-doctests)- buildable: False- else- build-depends:- base >= 4.8,- doctest >= 0.11.1 && < 0.17,- parallel,- rcu
src/Control/Concurrent/RCU/GC/Internal.hs view
@@ -3,7 +3,6 @@ {-# LANGUAGE LambdaCase #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE DeriveFunctor #-}-{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE ScopedTypeVariables #-}
src/Control/Concurrent/RCU/QSBR/Internal.hs view
@@ -301,9 +301,7 @@ storeLoadBarrier -- Spawn the new thread, whose return value goes in @result@.- let frk = case rcuStatePinned of- Just i -> forkOn i- Nothing -> forkIO+ let frk = maybe forkIO forkOn rcuStatePinned tid <- frk $ do x <- m $ s { rcuStateMyCounter = threadCounter } putMVar result x
− tests/doctests.hs
@@ -1,25 +0,0 @@--------------------------------------------------------------------------------- |--- Module : Main (doctests)--- Copyright : (C) 2012-14 Edward Kmett--- License : BSD-style (see the file LICENSE)--- Maintainer : Edward Kmett <ekmett@gmail.com>--- Stability : provisional--- Portability : portable------ This module provides doctests for a project based on the actual versions--- of the packages it was built with. It requires a corresponding Setup.lhs--- to be added to the project-------------------------------------------------------------------------------module Main where--import Build_doctests (flags, pkgs, module_sources)-import Data.Foldable (traverse_)-import Test.DocTest--main :: IO ()-main = do- traverse_ putStrLn args- doctest args- where- args = flags ++ pkgs ++ module_sources