Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ghc-auto-update for openSUSE:Factory
checked in at 2026-11-06 19:48:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-auto-update (Old)
and /work/SRC/openSUSE:Factory/.ghc-auto-update.new.3759290 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-auto-update"
Fri Nov 6 19:48:13 2026 rev:23 rq:1395509 version:0.2.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-auto-update/ghc-auto-update.changes
2025-01-05 15:29:20.957055890 +0100
+++
/work/SRC/openSUSE:Factory/.ghc-auto-update.new.3759290/ghc-auto-update.changes
2026-11-06 19:54:21.487091484 +0100
@@ -1,0 +2,26 @@
+Thu Sep 17 21:32:14 UTC 2026 - Peter Simons <[email protected]>
+
+- Update auto-update to version 0.2.8.
+ ## 0.2.8
+
+ * use `atomicWriteIORef` instead of `writeIORef` in the following modules to
+ avoid more issues: [#1112](https://github.com/yesodweb/wai/pull/1112)
+ * `Control.Reaper` (`spawn` & `reaper`)
+ * `Control.AutoUpdate.Event` (`getUpdateResult`)
+
+-------------------------------------------------------------------
+Sat Aug 8 21:01:37 UTC 2026 - Peter Simons <[email protected]>
+
+- Update auto-update to version 0.2.7.
+ ## 0.2.7
+
+ * Use `atomicModifyIORef` in `mkAutoUpdate(Helper)` to prevent race
conditions
+ in multi-threaded situations.
+ [#1103](https://github.com/yesodweb/wai/pull/1103)
+
+ ## 0.2.6.1
+
+ * Fixed documentation of when `leadingMuteEdge` and `trailingDelayEdge` were
+ introduced in `Control.Debounce`.
+
+-------------------------------------------------------------------
Old:
----
auto-update-0.2.6.tar.gz
New:
----
auto-update-0.2.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-auto-update.spec ++++++
--- /var/tmp/diff_new_pack.ZmJosQ/_old 2026-11-06 19:54:22.481133105 +0100
+++ /var/tmp/diff_new_pack.ZmJosQ/_new 2026-11-06 19:54:22.487133357 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ghc-auto-update
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2026 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
%global pkgver %{pkg_name}-%{version}
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.2.6
+Version: 0.2.8
Release: 0
Summary: Efficiently run periodic, on-demand actions
License: MIT
++++++ auto-update-0.2.6.tar.gz -> auto-update-0.2.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/auto-update-0.2.6/ChangeLog.md
new/auto-update-0.2.8/ChangeLog.md
--- old/auto-update-0.2.6/ChangeLog.md 2001-09-09 03:46:40.000000000 +0200
+++ new/auto-update-0.2.8/ChangeLog.md 2026-09-17 23:21:50.000000000 +0200
@@ -1,5 +1,23 @@
# ChangeLog for auto-update
+## 0.2.8
+
+* use `atomicWriteIORef` instead of `writeIORef` in the following modules to
+ avoid more issues: [#1112](https://github.com/yesodweb/wai/pull/1112)
+ * `Control.Reaper` (`spawn` & `reaper`)
+ * `Control.AutoUpdate.Event` (`getUpdateResult`)
+
+## 0.2.7
+
+* Use `atomicModifyIORef` in `mkAutoUpdate(Helper)` to prevent race conditions
+ in multi-threaded situations.
+ [#1103](https://github.com/yesodweb/wai/pull/1103)
+
+## 0.2.6.1
+
+* Fixed documentation of when `leadingMuteEdge` and `trailingDelayEdge` were
+ introduced in `Control.Debounce`.
+
## 0.2.6
* Using the thread version of AutoUpdate for non-threaded RTS.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/auto-update-0.2.6/Control/AutoUpdate/Event.hs
new/auto-update-0.2.8/Control/AutoUpdate/Event.hs
--- old/auto-update-0.2.6/Control/AutoUpdate/Event.hs 2001-09-09
03:46:40.000000000 +0200
+++ new/auto-update-0.2.8/Control/AutoUpdate/Event.hs 2026-09-17
23:21:50.000000000 +0200
@@ -65,7 +65,7 @@
--------------------------------------------------------------------------------
-- $setup
--- >>> :set -XNumericUnderscores
+-- >>> :seti -XNumericUnderscores
-- >>> import Control.Concurrent
-- |
@@ -119,6 +119,7 @@
getUpdateResult :: UpdateState a -> IO a
getUpdateResult us@UpdateState{..} = do
onceOnTimeHasCome us $ do
- writeIORef usLastResult_ =<< usUpdateAction_ =<< readIORef
usLastResult_
- writeIORef usDeleteTimeout_ =<< mkDeleteTimeout usTimeHasCome_
usIntervalMicro_
+ atomicWriteIORef usLastResult_ =<< usUpdateAction_ =<< readIORef
usLastResult_
+ atomicWriteIORef usDeleteTimeout_
+ =<< mkDeleteTimeout usTimeHasCome_ usIntervalMicro_
readIORef usLastResult_
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/auto-update-0.2.6/Control/AutoUpdate/Thread.hs
new/auto-update-0.2.8/Control/AutoUpdate/Thread.hs
--- old/auto-update-0.2.6/Control/AutoUpdate/Thread.hs 2001-09-09
03:46:40.000000000 +0200
+++ new/auto-update-0.2.8/Control/AutoUpdate/Thread.hs 2026-09-17
23:21:50.000000000 +0200
@@ -20,7 +20,7 @@
try,
)
import Control.Monad (void)
-import Data.IORef (newIORef, readIORef, writeIORef)
+import Data.IORef (atomicWriteIORef, newIORef, readIORef, writeIORef)
import Data.Maybe (fromMaybe)
import GHC.Conc.Sync (labelThread)
@@ -97,7 +97,7 @@
a <- catchSome $ fromMaybe (updateAction us)
(updateActionModify <*> maybea)
-- we got a new value, update currRef and lastValue
- writeIORef currRef $ Right a
+ atomicWriteIORef currRef $ Right a
putMVar responseVar a
-- delay until we're needed again
@@ -108,7 +108,7 @@
-- variable. Then loop again with the updated response
-- variable.
responseVar' <- newEmptyMVar
- writeIORef currRef $ Left responseVar'
+ atomicWriteIORef currRef $ Left responseVar'
loop responseVar' (Just a)
-- Kick off the loop, with the initial responseVar0 variable.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/auto-update-0.2.6/Control/Debounce/Internal.hs
new/auto-update-0.2.8/Control/Debounce/Internal.hs
--- old/auto-update-0.2.6/Control/Debounce/Internal.hs 2001-09-09
03:46:40.000000000 +0200
+++ new/auto-update-0.2.8/Control/Debounce/Internal.hs 2026-04-03
17:52:12.000000000 +0200
@@ -116,7 +116,7 @@
-- > ....... .......
-- > X X
--
--- @since 0.1.6
+-- @since 0.2.3
leadingMuteEdge :: DebounceEdge
leadingMuteEdge = LeadingMute
@@ -158,7 +158,7 @@
-- X X
-- @
--
--- @since 0.1.6
+-- @since 0.2.3
trailingDelayEdge :: DebounceEdge
trailingDelayEdge = TrailingDelay
@@ -242,16 +242,16 @@
ignoreExc action
-- 5)
putMVar baton ()
- -- TRAILING DELAY
- --
- -- 1) get current time -> /now/
- -- 2) try take baton to start
- -- 3) success -> set time var to /now/ & start worker, failed ->
update time var to /now/
- -- 4) worker waits minimum delay
- -- 5) check diff of time var with /now/
- -- 6) less -> wait the difference, same/more -> do action
- -- 7) after action, recheck if there was any trigger
- -- 8) put baton back
+ -- TRAILING DELAY
+ --
+ -- 1) get current time -> /now/
+ -- 2) try take baton to start
+ -- 3) success -> set time var to /now/ & start worker, failed -> update
time var to /now/
+ -- 4) worker waits minimum delay
+ -- 5) check diff of time var with /now/
+ -- 6) less -> wait the difference, same/more -> do action
+ -- 7) after action, recheck if there was any trigger
+ -- 8) put baton back
trailingDelayDebounce timeTVar = do
-- 1)
now <- getMonotonicTimeNSec
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/auto-update-0.2.6/Control/Reaper.hs
new/auto-update-0.2.8/Control/Reaper.hs
--- old/auto-update-0.2.6/Control/Reaper.hs 2001-09-09 03:46:40.000000000
+0200
+++ new/auto-update-0.2.8/Control/Reaper.hs 2026-09-17 23:21:50.000000000
+0200
@@ -45,7 +45,13 @@
import Control.Concurrent (ThreadId, forkIO, killThread, threadDelay)
import Control.Exception (mask_)
import Control.Reaper.Internal
-import Data.IORef (IORef, atomicModifyIORef', newIORef, readIORef, writeIORef)
+import Data.IORef (
+ IORef,
+ atomicModifyIORef',
+ atomicWriteIORef,
+ newIORef,
+ readIORef,
+ )
import GHC.Conc.Sync (labelThread)
-- | Settings for creating a reaper. This type has two parameters:
@@ -190,7 +196,7 @@
spawn settings stateRef tidRef = do
tid <- forkIO $ reaper settings stateRef tidRef
labelThread tid $ reaperThreadName settings
- writeIORef tidRef $ Just tid
+ atomicWriteIORef tidRef $ Just tid
reaper
:: ReaperSettings workload item
@@ -211,7 +217,7 @@
then
reaper settings stateRef tidRef
else
- writeIORef tidRef Nothing
+ atomicWriteIORef tidRef Nothing
where
swapWithEmpty NoReaper = error "Control.Reaper.reaper: unexpected NoReaper
(1)"
swapWithEmpty (Workload wl) = (Workload reaperEmpty, wl)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/auto-update-0.2.6/auto-update.cabal
new/auto-update-0.2.8/auto-update.cabal
--- old/auto-update-0.2.6/auto-update.cabal 2001-09-09 03:46:40.000000000
+0200
+++ new/auto-update-0.2.8/auto-update.cabal 2026-09-17 23:21:50.000000000
+0200
@@ -1,5 +1,5 @@
name: auto-update
-version: 0.2.6
+version: 0.2.8
synopsis: Efficiently run periodic, on-demand actions
description: API docs and the README are available at
<http://www.stackage.org/package/auto-update>.
homepage: https://github.com/yesodweb/wai
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/auto-update-0.2.6/test/Control/DebounceSpec.hs
new/auto-update-0.2.8/test/Control/DebounceSpec.hs
--- old/auto-update-0.2.6/test/Control/DebounceSpec.hs 2001-09-09
03:46:40.000000000 +0200
+++ new/auto-update-0.2.8/test/Control/DebounceSpec.hs 2026-09-07
18:34:14.000000000 +0200
@@ -1,33 +1,34 @@
{-# LANGUAGE NumericUnderscores #-}
+
module Control.DebounceSpec (main, spec) where
import Control.Concurrent (
MVar,
newEmptyMVar,
- takeMVar,
- putMVar,
newMVar,
+ putMVar,
+ takeMVar,
threadDelay,
tryReadMVar,
)
import Control.Debounce (
- DebounceSettings(..),
+ DebounceSettings (..),
+ defaultDebounceSettings,
leadingEdge,
leadingMuteEdge,
- trailingEdge,
trailingDelayEdge,
- defaultDebounceSettings,
+ trailingEdge,
)
import qualified Control.Debounce.Internal as DI
import Control.Monad (void)
import Control.Monad.Catch
-import Control.Retry (recovering, constantDelay, limitRetries)
-import Data.IORef (IORef, readIORef, newIORef, modifyIORef)
+import Control.Retry (constantDelay, limitRetries, recovering)
+import Data.IORef (IORef, modifyIORef, newIORef, readIORef)
import Data.Word (Word64)
import GHC.Clock (getMonotonicTime)
-import Test.Hspec (Spec, describe, it, shouldReturn, hspec)
import Test.HUnit (assertBool)
import Test.HUnit.Lang (HUnitFailure (HUnitFailure))
+import Test.Hspec (Spec, describe, hspec, it, shouldReturn)
spec :: Spec
spec = describe "mkDebounce" $ do