packages feed

schedule 0.2.0.0 → 0.3.0.0

raw patch · 6 files changed

+34/−32 lines, 6 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Control.Clock.IO: newClock1ms :: IO (Clock IO)
- Control.Clock.IO: newClock1s :: IO (Clock IO)
- Control.Clock.IO: newClockMilli :: Integer -> IO (Clock IO)
- Control.Clock.IO: newClockPico :: Integer -> IO (Clock IO)
+ Control.Clock.IO: Ms :: Intv
+ Control.Clock.IO: Ns :: Intv
+ Control.Clock.IO: Ps :: Intv
+ Control.Clock.IO: S :: Intv
+ Control.Clock.IO: Us :: Intv
+ Control.Clock.IO: data Intv
+ Control.Clock.IO: interval :: Integer -> Intv -> DiffTime
+ Control.Clock.IO: newClock' :: DiffTime -> IO (Clock IO)
- Control.Clock.IO: convClock :: DiffTime -> Clock -> Clock IO
+ Control.Clock.IO: convClock :: Tick -> DiffTime -> Clock -> Clock IO
- Control.Clock.IO: newClock :: DiffTime -> IO (Clock IO)
+ Control.Clock.IO: newClock :: Tick -> DiffTime -> IO (Clock IO)
- Control.Schedule.Future: _SFResult :: forall wo_avlh ro_avli ro_avEg. Prism (SFuture wo_avlh ro_avEg) (SFuture wo_avlh ro_avli) ro_avEg ro_avli
+ Control.Schedule.Future: _SFResult :: forall wo_avwx ro_avwy ro_avPw. Prism (SFuture wo_avwx ro_avPw) (SFuture wo_avwx ro_avwy) ro_avPw ro_avwy
- Control.Schedule.Future: _SFWaiting :: forall wo_avlh ro_avli wo_avEb. Prism (SFuture wo_avEb ro_avli) (SFuture wo_avlh ro_avli) (OSet wo_avEb) (OSet wo_avlh)
+ Control.Schedule.Future: _SFWaiting :: forall wo_avwx ro_avwy wo_avPr. Prism (SFuture wo_avPr ro_avwy) (SFuture wo_avwx ro_avwy) (OSet wo_avPr) (OSet wo_avwx)
- Control.Schedule.Future: _seExpects :: forall wi_avEr ri_avEs tk_avEt. Lens' (SExpect wi_avEr ri_avEs tk_avEt) (OMap wi_avEr (Task tk_avEt))
+ Control.Schedule.Future: _seExpects :: forall wi_avPH ri_avPI tk_avPJ. Lens' (SExpect wi_avPH ri_avPI tk_avPJ) (OMap wi_avPH (Task tk_avPJ))
- Control.Schedule.Future: _seResults :: forall wi_avEr ri_avEs tk_avEt ri_aw0V. Lens (SExpect wi_avEr ri_avEs tk_avEt) (SExpect wi_avEr ri_aw0V tk_avEt) (OMap wi_avEr (TimedResult tk_avEt ri_avEs)) (OMap wi_avEr (TimedResult tk_avEt ri_aw0V))
+ Control.Schedule.Future: _seResults :: forall wi_avPH ri_avPI tk_avPJ ri_awcb. Lens (SExpect wi_avPH ri_avPI tk_avPJ) (SExpect wi_avPH ri_awcb tk_avPJ) (OMap wi_avPH (TimedResult tk_avPJ ri_avPI)) (OMap wi_avPH (TimedResult tk_avPJ ri_awcb))
- Data.Rsv.RMMap: _content :: forall k_alMa a_alMb k_an9C a_an9D. Lens (RMMap k_alMa a_alMb) (RMMap k_an9C a_an9D) (Map k_alMa (Entries a_alMb)) (Map k_an9C (Entries a_an9D))
+ Data.Rsv.RMMap: _content :: forall k_alXa a_alXb k_ankC a_ankD. Lens (RMMap k_alXa a_alXb) (RMMap k_ankC a_ankD) (Map k_alXa (Entries a_alXb)) (Map k_ankC (Entries a_ankD))
- Data.Rsv.RMMap: _handles :: forall k_alMa a_alMb. Lens' (RMMap k_alMa a_alMb) RHandles
+ Data.Rsv.RMMap: _handles :: forall k_alXa a_alXb. Lens' (RMMap k_alXa a_alXb) RHandles

Files

CHANGELOG.md view
@@ -1,5 +1,10 @@ # Revision history for schedule +## 0.3.0.0 -- 2020-04-03++* Update to GHC 8.8.3, remove some redundant imports.+* Tweak Control.Clock.IO API to be more flexible+ ## 0.2.0.0 -- 2019-12-20  * Minor API and documentation tweaks.
schedule.cabal view
@@ -1,6 +1,6 @@ Cabal-Version:       2.4 Name:                schedule-Version:             0.2.0.0+Version:             0.3.0.0 Synopsis:            Pure deterministic scheduled computations Description:   Schedule computations to run later, in a pure and deterministic way.@@ -61,9 +61,9 @@ License-File:        LICENSE.GPL-3 Author:              Ximin Luo Maintainer:          infinity0@pwned.gg-Copyright:           2016-2019 Ximin Luo+Copyright:           2016-2020 Ximin Luo Category:            Control, Schedule, Delay, Time, Timeout-Tested-With:         GHC >= 8.6+Tested-With:         GHC >= 8.8.3 Extra-Source-Files:  CHANGELOG.md  Source-Repository head
src/Control/Clock/IO.hs view
@@ -4,10 +4,9 @@ {-| Implementations of 'Clock' in the 'IO' monad. -} module Control.Clock.IO   ( newClock-  , newClockPico-  , newClockMilli-  , newClock1ms-  , newClock1s+  , newClock'+  , Intv(..)+  , interval   , convClock   , clockWithIO   , clockTimerIO@@ -38,25 +37,23 @@ import           Control.Clock  --- | Create a new clock ticking at a given interval.-newClock :: DiffTime -> IO (Clock IO)-newClock intv = convClock intv <$> T.newClock---- | Create a new clock ticking at a given interval in picoseconds.-newClockPico :: Integer -> IO (Clock IO)-newClockPico = newClock . picosecondsToDiffTime+-- | Create a new clock with the given start tick and interval.+newClock :: Tick -> DiffTime -> IO (Clock IO)+newClock start intv = convClock start intv <$> T.newClock --- | Create a new clock ticking at a given interval in milliseconds.-newClockMilli :: Integer -> IO (Clock IO)-newClockMilli ms = newClockPico (1000000000 * ms)+newClock' :: DiffTime -> IO (Clock IO)+newClock' = newClock 0 --- | Create a new clock ticking at 1 millisecond.-newClock1ms :: IO (Clock IO)-newClock1ms = newClockMilli 1+data Intv = Ps | Ns | Us | Ms | S --- | Create a new clock ticking at 1 second.-newClock1s :: IO (Clock IO)-newClock1s = newClockMilli 1000+-- | Convenience method for creating @DiffTime@ for use with @newClock@.+interval :: Integer -> Intv -> DiffTime+interval i u = picosecondsToDiffTime $ case u of+  Ps -> i+  Ns -> 1000 * i+  Us -> 1000000 * i+  Ms -> 1000000000 * i+  S  -> 1000000000000 * i  -- | Check for a non-negative number. checkNonNeg :: (HasCallStack, Num a, Ord a, Show a) => a -> a@@ -70,13 +67,14 @@ {-| Convert a "System.Time.Monotonic.Clock" into an abstract 'Clock' for     scheduled computations, ticking at the given interval. -}-convClock :: DiffTime -> T.Clock -> Clock IO-convClock intv c =+convClock :: Tick -> DiffTime -> T.Clock -> Clock IO+convClock start intv c =   let r  = diffTimeToPicoseconds $ checkPos intv+      i  = start * r       c' = Clock-        { clockNow   = (`div` r) <$> clockNowPico c+        { clockNow   = (`div` r) <$> clockNowPico i c         , clockDelay = \d -> when (d > 0) $ do-                         remain <- (`rem` r) <$> clockNowPico c+                         remain <- (`rem` r) <$> clockNowPico i c                          -- wait a bit past the tick, make sure we've gone over                          let t = r * fromIntegral d * 16 `div` 15 - remain                          clockDelayPico t@@ -85,8 +83,8 @@         }   in  c' -clockNowPico :: T.Clock -> IO Integer-clockNowPico c = diffTimeToPicoseconds <$> T.clockGetTime c+clockNowPico :: Tick -> T.Clock -> IO Integer+clockNowPico start c = (start +) . diffTimeToPicoseconds <$> T.clockGetTime c  clockDelayPico :: Integer -> IO () clockDelayPico d = T.delay $ picosecondsToDiffTime $ checkNonNeg d
src/Control/Monad/Schedule.hs view
@@ -20,7 +20,6 @@  -- external import           Control.Monad.Extra    (whenMaybe)-import           Data.Either            (either) import           Data.Functor.Identity  (Identity (..)) import           Data.Maybe             (fromMaybe) 
src/Data/Rsv/RMMap.hs view
@@ -85,7 +85,7 @@ checkValidity :: RMMap k a -> Maybe Text checkValidity (RMMap handles' content') =   let res = flip mapMaybe (M.toList content') $ \(k, hh) -> do-        if any (not . R.checkHandle handles' . fst) hh then Just k else Nothing+        if not (all (R.checkHandle handles' . fst) hh) then Just k else Nothing   in  case res of         [] -> Nothing         e  -> Just $ pack "some handles were reused in the input"
test/Control/Monad/ScheduleTest.hs view
@@ -55,7 +55,7 @@   -> RunSched Tick (tm IO)   -> IO () smoke mkRecv runWithNew runSched = do-  clock <- newClock1ms+  clock <- newClock' (interval 1 Ms)   recv  <- mkRecv clock   let top = 17   (r, s) <- runWithNew newSchedule $ do