Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ghc-fast-logger for openSUSE:Factory
checked in at 2022-02-11 23:08:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-fast-logger (Old)
and /work/SRC/openSUSE:Factory/.ghc-fast-logger.new.1956 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-fast-logger"
Fri Feb 11 23:08:48 2022 rev:26 rq:953455 version:3.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-fast-logger/ghc-fast-logger.changes
2021-05-05 20:40:54.258679659 +0200
+++
/work/SRC/openSUSE:Factory/.ghc-fast-logger.new.1956/ghc-fast-logger.changes
2022-02-11 23:10:44.839178129 +0100
@@ -1,0 +2,14 @@
+Thu Jan 20 07:53:07 UTC 2022 - Peter Simons <[email protected]>
+
+- Update fast-logger to version 3.1.1.
+ ## 3.1.1
+
+ * More time-ordered logging functions
+ [#199](https://github.com/kazu-yamamoto/logger/pull/199
+
+ ## 3.1.0
+
+ * Having a single Buffer in LoggerSet for locking
[#197](https://github.com/kazu-yamamoto/logger/pull/197.
+ This would have performance penalty. So, the major version bumps up. If
you see performance regression, please register an issue on github.
+
+-------------------------------------------------------------------
Old:
----
fast-logger-3.0.5.tar.gz
New:
----
fast-logger-3.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-fast-logger.spec ++++++
--- /var/tmp/diff_new_pack.rhRNnF/_old 2022-02-11 23:10:45.355179622 +0100
+++ /var/tmp/diff_new_pack.rhRNnF/_new 2022-02-11 23:10:45.359179633 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ghc-fast-logger
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%global pkg_name fast-logger
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 3.0.5
+Version: 3.1.1
Release: 0
Summary: A fast logging system
License: BSD-3-Clause
++++++ fast-logger-3.0.5.tar.gz -> fast-logger-3.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fast-logger-3.0.5/ChangeLog.md
new/fast-logger-3.1.1/ChangeLog.md
--- old/fast-logger-3.0.5/ChangeLog.md 2021-04-30 07:48:58.000000000 +0200
+++ new/fast-logger-3.1.1/ChangeLog.md 2001-09-09 03:46:40.000000000 +0200
@@ -1,3 +1,13 @@
+## 3.1.1
+
+* More time-ordered logging functions
+ [#199](https://github.com/kazu-yamamoto/logger/pull/199
+
+## 3.1.0
+
+* Having a single Buffer in LoggerSet for locking
[#197](https://github.com/kazu-yamamoto/logger/pull/197.
+ This would have performance penalty. So, the major version bumps up. If you
see performance regression, please register an issue on github.
+
## 3.0.5
* recovering backward compatibility for newFileLoggerSet.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fast-logger-3.0.5/System/Log/FastLogger/IO.hs
new/fast-logger-3.1.1/System/Log/FastLogger/IO.hs
--- old/fast-logger-3.0.5/System/Log/FastLogger/IO.hs 2021-04-30
07:48:58.000000000 +0200
+++ new/fast-logger-3.1.1/System/Log/FastLogger/IO.hs 2001-09-09
03:46:40.000000000 +0200
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE CPP #-}
#if __GLASGOW_HASKELL__ <= 708
@@ -34,7 +33,7 @@
freeBuffer = free
toBufIOWith :: Buffer -> BufSize -> (Buffer -> Int -> IO ()) -> Builder -> IO
()
-toBufIOWith buf !size io builder = loop $ BBE.runBuilder builder
+toBufIOWith buf size io builder = loop $ BBE.runBuilder builder
where
loop writer = do
(len, next) <- writer buf size
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fast-logger-3.0.5/System/Log/FastLogger/Logger.hs
new/fast-logger-3.1.1/System/Log/FastLogger/Logger.hs
--- old/fast-logger-3.0.5/System/Log/FastLogger/Logger.hs 2021-04-30
07:48:58.000000000 +0200
+++ new/fast-logger-3.1.1/System/Log/FastLogger/Logger.hs 2001-09-09
03:46:40.000000000 +0200
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE Safe #-}
@@ -10,7 +9,7 @@
) where
-import Control.Concurrent (MVar, newMVar, withMVar)
+import Control.Concurrent (MVar, withMVar)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (plusPtr)
@@ -21,20 +20,19 @@
----------------------------------------------------------------
-data Logger = Logger !BufSize (MVar Buffer) (IORef LogStr)
+newtype Logger = Logger (IORef LogStr)
----------------------------------------------------------------
-newLogger :: BufSize -> IO Logger
-newLogger size = Logger size <$> (getBuffer size >>= newMVar)
- <*> newIORef mempty
+newLogger :: IO Logger
+newLogger = Logger <$> newIORef mempty
----------------------------------------------------------------
-pushLog :: IORef FD -> Logger -> LogStr -> IO ()
-pushLog fdref logger@(Logger size mbuf ref) nlogmsg@(LogStr nlen nbuilder)
+pushLog :: IORef FD -> BufSize -> MVar Buffer -> Logger -> LogStr -> IO ()
+pushLog fdref size mbuf logger@(Logger ref) nlogmsg@(LogStr nlen nbuilder)
| nlen > size = do
- flushLog fdref logger
+ flushLog fdref size mbuf logger
-- Make sure we have a large enough buffer to hold the entire
-- contents, thereby allowing for a single write system call and
-- avoiding interleaving. This does not address the possibility
@@ -53,8 +51,8 @@
----------------------------------------------------------------
-flushLog :: IORef FD -> Logger -> IO ()
-flushLog fdref (Logger size mbuf lref) = do
+flushLog :: IORef FD -> BufSize -> MVar Buffer -> Logger -> IO ()
+flushLog fdref size mbuf (Logger lref) = do
logmsg <- atomicModifyIORef' lref (\old -> (mempty, old))
-- If a special buffer is prepared for flusher, this MVar could
-- be removed. But such a code does not contribute logging speed
@@ -81,7 +79,7 @@
write :: IORef FD -> Buffer -> Int -> IO ()
write fdref buf len' = loop buf (fromIntegral len')
where
- loop bf !len = do
+ loop bf len = do
written <- writeRawBufferPtr2FD fdref bf len
when (0 <= written && written < len) $
loop (bf `plusPtr` fromIntegral written) (len - written)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fast-logger-3.0.5/System/Log/FastLogger/LoggerSet.hs
new/fast-logger-3.1.1/System/Log/FastLogger/LoggerSet.hs
--- old/fast-logger-3.0.5/System/Log/FastLogger/LoggerSet.hs 2021-04-30
07:48:58.000000000 +0200
+++ new/fast-logger-3.1.1/System/Log/FastLogger/LoggerSet.hs 2001-09-09
03:46:40.000000000 +0200
@@ -6,8 +6,11 @@
, newFileLoggerSet
, newFileLoggerSetN
, newStdoutLoggerSet
+ , newStdoutLoggerSetN
, newStderrLoggerSet
+ , newStderrLoggerSetN
, newLoggerSet
+ , newFDLoggerSet
-- * Renewing and removing a logger set
, renewLoggerSet
, rmLoggerSet
@@ -20,8 +23,8 @@
, replaceLoggerSet
) where
+import Control.Concurrent (MVar, getNumCapabilities, myThreadId,
threadCapability, takeMVar, newMVar)
import Control.Debounce (mkDebounce, defaultDebounceSettings, debounceAction)
-import Control.Concurrent (getNumCapabilities, myThreadId, threadCapability,
takeMVar)
import Data.Array (Array, listArray, (!), bounds)
import System.Log.FastLogger.FileIO
@@ -36,13 +39,22 @@
-- The number of loggers is the capabilities of GHC RTS.
-- You can specify it with \"+RTS -N\<x\>\".
-- A buffer is prepared for each capability.
-data LoggerSet = LoggerSet (Maybe FilePath) (IORef FD) (Array Int Logger) (IO
())
+data LoggerSet = LoggerSet (Maybe FilePath) (IORef FD)
+ BufSize (MVar Buffer)
+ (Array Int Logger)
+ (IO ())
-- | Creating a new 'LoggerSet' using a file.
+--
+-- Uses `numCapabilties` many buffers, which will result in log
+-- output that is not ordered by time (see `newFileLoggerSetN`).
newFileLoggerSet :: BufSize -> FilePath -> IO LoggerSet
newFileLoggerSet size file = openFileFD file >>= newFDLoggerSet size Nothing
(Just file)
--- | Creating a new 'LoggerSet' using a file.
+-- | Creating a new 'LoggerSet' using a file, using only the given number of
capabilites.
+--
+-- Giving @mn = Just 1@ scales less well on multi-core machines,
+-- but provides time-ordered output.
newFileLoggerSetN :: BufSize -> Maybe Int -> FilePath -> IO LoggerSet
newFileLoggerSetN size mn file = openFileFD file >>= newFDLoggerSet size mn
(Just file)
@@ -50,10 +62,20 @@
newStdoutLoggerSet :: BufSize -> IO LoggerSet
newStdoutLoggerSet size = getStdoutFD >>= newFDLoggerSet size Nothing Nothing
+-- | Creating a new 'LoggerSet' using stdout, with the given number of buffers
+-- (see `newFileLoggerSetN`).
+newStdoutLoggerSetN :: BufSize -> Maybe Int -> IO LoggerSet
+newStdoutLoggerSetN size mn = getStdoutFD >>= newFDLoggerSet size mn Nothing
+
-- | Creating a new 'LoggerSet' using stderr.
newStderrLoggerSet :: BufSize -> IO LoggerSet
newStderrLoggerSet size = getStderrFD >>= newFDLoggerSet size Nothing Nothing
+-- | Creating a new 'LoggerSet' using stderr, with the given number of buffers
+-- (see `newFileLoggerSetN`).
+newStderrLoggerSetN :: BufSize -> Maybe Int -> IO LoggerSet
+newStderrLoggerSetN size mn = getStderrFD >>= newFDLoggerSet size mn Nothing
+
{-# DEPRECATED newLoggerSet "Use newFileLoggerSet etc instead" #-}
-- | Creating a new 'LoggerSet'.
-- If 'Nothing' is specified to the second argument,
@@ -68,19 +90,21 @@
n <- case mn of
Just n' -> return n'
Nothing -> getNumCapabilities
- loggers <- replicateM n $ newLogger (max 1 size)
+ loggers <- replicateM n newLogger
let arr = listArray (0,n-1) loggers
fref <- newIORef fd
+ let bufsiz = max 1 size
+ mbuf <- getBuffer bufsiz >>= newMVar
flush <- mkDebounce defaultDebounceSettings
- { debounceAction = flushLogStrRaw fref arr
+ { debounceAction = flushLogStrRaw fref bufsiz mbuf arr
}
- return $ LoggerSet mfile fref arr flush
+ return $ LoggerSet mfile fref bufsiz mbuf arr flush
-- | Writing a log message to the corresponding buffer.
-- If the buffer becomes full, the log messages in the buffer
-- are written to its corresponding file, stdout, or stderr.
pushLogStr :: LoggerSet -> LogStr -> IO ()
-pushLogStr (LoggerSet _ fdref arr flush) logmsg = do
+pushLogStr (LoggerSet _ fdref size mbuf arr flush) logmsg = do
(i, _) <- myThreadId >>= threadCapability
-- The number of capability could be dynamically changed.
-- So, let's check the upper boundary of the array.
@@ -89,7 +113,7 @@
j | i < lim = i
| otherwise = i `mod` lim
let logger = arr ! j
- pushLog fdref logger logmsg
+ pushLog fdref size mbuf logger logmsg
flush
-- | Same as 'pushLogStr' but also appends a newline.
@@ -106,20 +130,20 @@
-- function can be used to force flushing outside of the debounced
-- flush calls.
flushLogStr :: LoggerSet -> IO ()
-flushLogStr (LoggerSet _ fref arr _) = flushLogStrRaw fref arr
+flushLogStr (LoggerSet _ fref size mbuf arr _) = flushLogStrRaw fref size mbuf
arr
-flushLogStrRaw :: IORef FD -> Array Int Logger -> IO ()
-flushLogStrRaw fdref arr = do
+flushLogStrRaw :: IORef FD -> BufSize -> MVar Buffer -> Array Int Logger -> IO
()
+flushLogStrRaw fdref size mbuf arr = do
let (l,u) = bounds arr
mapM_ flushIt [l .. u]
where
- flushIt i = flushLog fdref (arr ! i)
+ flushIt i = flushLog fdref size mbuf (arr ! i)
-- | Renewing the internal file information in 'LoggerSet'.
-- This does nothing for stdout and stderr.
renewLoggerSet :: LoggerSet -> IO ()
-renewLoggerSet (LoggerSet Nothing _ _ _) = return ()
-renewLoggerSet (LoggerSet (Just file) fref _ _) = do
+renewLoggerSet (LoggerSet Nothing _ _ _ _ _) = return ()
+renewLoggerSet (LoggerSet (Just file) fref _ _ _ _) = do
newfd <- openFileFD file
oldfd <- atomicModifyIORef' fref (\fd -> (newfd, fd))
closeFD oldfd
@@ -127,23 +151,20 @@
-- | Flushing the buffers, closing the internal file information
-- and freeing the buffers.
rmLoggerSet :: LoggerSet -> IO ()
-rmLoggerSet (LoggerSet mfile fdref arr _) = do
+rmLoggerSet (LoggerSet mfile fdref size mbuf arr _) = do
fd <- readIORef fdref
when (isFDValid fd) $ do
let (l,u) = bounds arr
let nums = [l .. u]
mapM_ flushIt nums
- mapM_ freeIt nums
+ takeMVar mbuf >>= freeBuffer
when (isJust mfile) $ closeFD fd
writeIORef fdref invalidFD
where
- flushIt i = flushLog fdref (arr ! i)
- freeIt i = do
- let (Logger _ mbuf _) = arr ! i
- takeMVar mbuf >>= freeBuffer
+ flushIt i = flushLog fdref size mbuf(arr ! i)
-- | Replacing the file path in 'LoggerSet' and returning a new
-- 'LoggerSet' and the old file path.
replaceLoggerSet :: LoggerSet -> FilePath -> (LoggerSet, Maybe FilePath)
-replaceLoggerSet (LoggerSet current_path a b c) new_file_path =
- (LoggerSet (Just new_file_path) a b c, current_path)
+replaceLoggerSet (LoggerSet current_path a b c d e) new_file_path =
+ (LoggerSet (Just new_file_path) a b c d e, current_path)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fast-logger-3.0.5/System/Log/FastLogger.hs
new/fast-logger-3.1.1/System/Log/FastLogger.hs
--- old/fast-logger-3.0.5/System/Log/FastLogger.hs 2021-04-30
07:48:58.000000000 +0200
+++ new/fast-logger-3.1.1/System/Log/FastLogger.hs 2001-09-09
03:46:40.000000000 +0200
@@ -101,17 +101,24 @@
-- This type signature should be read as:
--
-- > newFastLogger :: LogType -> IO (FastLogger, IO ())
+--
+-- This logger uses `numCapabilities` many buffers, and thus
+-- does not provide time-ordered output.
+-- For time-ordered output, use `newFastLogger1`.
newFastLogger :: LogType' v -> IO (v -> IO (), IO ())
newFastLogger typ = newFastLoggerCore Nothing typ
+-- | Like `newFastLogger`, but creating a logger that uses only 1
+-- capability. This scales less well on multi-core machines,
+-- but provides time-ordered output.
newFastLogger1 :: LogType' v -> IO (v -> IO (), IO ())
newFastLogger1 typ = newFastLoggerCore (Just 1) typ
newFastLoggerCore :: Maybe Int -> LogType' v -> IO (v -> IO (), IO ())
newFastLoggerCore mn typ = case typ of
LogNone -> return (const noOp, noOp)
- LogStdout bsize -> newStdoutLoggerSet bsize >>=
stdLoggerInit
- LogStderr bsize -> newStderrLoggerSet bsize >>=
stdLoggerInit
+ LogStdout bsize -> newStdoutLoggerSetN bsize mn >>=
stdLoggerInit
+ LogStderr bsize -> newStderrLoggerSetN bsize mn >>=
stdLoggerInit
LogFileNoRotate fp bsize -> newFileLoggerSetN bsize mn fp >>=
fileLoggerInit
LogFile fspec bsize -> rotateLoggerInit fspec bsize
LogFileTimedRotate fspec bsize -> timedRotateLoggerInit fspec bsize
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fast-logger-3.0.5/fast-logger.cabal
new/fast-logger-3.1.1/fast-logger.cabal
--- old/fast-logger-3.0.5/fast-logger.cabal 2021-04-30 07:48:58.000000000
+0200
+++ new/fast-logger-3.1.1/fast-logger.cabal 2001-09-09 03:46:40.000000000
+0200
@@ -1,5 +1,5 @@
Name: fast-logger
-Version: 3.0.5
+Version: 3.1.1
Author: Kazu Yamamoto <[email protected]>
Maintainer: Kazu Yamamoto <[email protected]>
License: BSD3