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

Reply via email to