Hello community,
here is the log from the commit of package ghc-clock for openSUSE:Factory checked in at 2019-05-09 10:09:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-clock (Old)
and /work/SRC/openSUSE:Factory/.ghc-clock.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-clock"
Thu May 9 10:09:49 2019 rev:10 rq:700196 version:0.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-clock/ghc-clock.changes 2018-10-25 08:23:18.363885320 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-clock.new.5148/ghc-clock.changes 2019-05-09 10:09:50.665102663 +0200
@@ -1,0 +2,6 @@
+Wed May 1 02:03:10 UTC 2019 - psimons@suse.com
+
+- Update clock to version 0.8.
+ Upstream does not provide a change log file.
+
+-------------------------------------------------------------------
Old:
----
clock-0.7.2.tar.gz
New:
----
clock-0.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-clock.spec ++++++
--- /var/tmp/diff_new_pack.dcN8ox/_old 2019-05-09 10:09:51.201104198 +0200
+++ /var/tmp/diff_new_pack.dcN8ox/_new 2019-05-09 10:09:51.205104209 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-clock
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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 clock
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.7.2
+Version: 0.8
Release: 0
Summary: High-resolution clock functions: monotonic, realtime, cputime
License: BSD-3-Clause
@@ -71,6 +71,8 @@
Fixes for older Linux build failures introduced by new Linux-specific clocks by
Mario Longobardi on 2016-04-18.
+Refreshment release in 2019-04 after numerous contributions.
+
[Version Scheme] Major-'/R/'-ewrite . New-'/F/'-unctionality .
'/I/'-mprovementAndBugFixes . '/P/'-ackagingOnly
++++++ clock-0.7.2.tar.gz -> clock-0.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clock-0.7.2/System/Clock.hsc new/clock-0.8/System/Clock.hsc
--- old/clock-0.7.2/System/Clock.hsc 2016-04-20 03:14:45.000000000 +0200
+++ new/clock-0.8/System/Clock.hsc 2019-04-26 15:37:49.000000000 +0200
@@ -41,7 +41,9 @@
# endif
#endif
-#let alignment t = "%lu", (unsigned long)offsetof(struct {char x__; t (y__); }, y__)
+#if __GLASGOW_HASKELL__ < 800
+# let alignment t = "%lu", (unsigned long)offsetof(struct {char x__; t (y__); }, y__)
+#endif
-- | Clock types. A clock may be system-wide (that is, visible to all processes)
-- or per-process (measuring time that is meaningful only within a process).
@@ -126,12 +128,12 @@
foreign import ccall hs_clock_darwin_gettime :: #{type clock_id_t} -> Ptr TimeSpec -> IO ()
foreign import ccall hs_clock_darwin_getres :: #{type clock_id_t} -> Ptr TimeSpec -> IO ()
#else
-foreign import ccall clock_gettime :: #{type clockid_t} -> Ptr TimeSpec -> IO ()
-foreign import ccall clock_getres :: #{type clockid_t} -> Ptr TimeSpec -> IO ()
+foreign import ccall unsafe clock_gettime :: #{type clockid_t} -> Ptr TimeSpec -> IO ()
+foreign import ccall unsafe clock_getres :: #{type clockid_t} -> Ptr TimeSpec -> IO ()
#endif
-#if defined(_WIN32)
-#elif defined(__MACH__) && defined(__APPLE__)
+#if !defined(_WIN32)
+#if defined(__MACH__) && defined(__APPLE__)
clockToConst :: Clock -> #{type clock_id_t}
clockToConst Monotonic = #const SYSTEM_CLOCK
clockToConst Realtime = #const CALENDAR_CLOCK
@@ -143,23 +145,20 @@
clockToConst Realtime = #const CLOCK_REALTIME
clockToConst ProcessCPUTime = #const CLOCK_PROCESS_CPUTIME_ID
clockToConst ThreadCPUTime = #const CLOCK_THREAD_CPUTIME_ID
+#endif
#if defined (CLOCK_MONOTONIC_RAW)
clockToConst MonotonicRaw = #const CLOCK_MONOTONIC_RAW
#endif
-
#if defined (CLOCK_BOOTTIME)
clockToConst Boottime = #const CLOCK_BOOTTIME
#endif
-
#if defined (CLOCK_MONOTONIC_COARSE)
clockToConst MonotonicCoarse = #const CLOCK_MONOTONIC_COARSE
#endif
-
#if defined (CLOCK_REALTIME_COARSE)
clockToConst RealtimeCoarse = #const CLOCK_REALTIME_COARSE
#endif
-
#endif
allocaAndPeek :: Storable a => (Ptr a -> IO ()) -> IO a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clock-0.7.2/bench/benchmarks.hs new/clock-0.8/bench/benchmarks.hs
--- old/clock-0.7.2/bench/benchmarks.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/clock-0.8/bench/benchmarks.hs 2019-04-26 15:37:49.000000000 +0200
@@ -0,0 +1,26 @@
+{-# language CPP #-}
+module Main (main) where
+
+import Criterion.Main
+import System.Clock
+
+#if MIN_VERSION_base(4,11,0)
+import GHC.Clock
+#endif
+
+main :: IO ()
+main = defaultMain [
+ bgroup "getTime" [
+ bench "Monotonic" $ whnfIO (getTime Monotonic)
+ , bench "Realtime" $ whnfIO (getTime Realtime)
+ , bench "ProcessCPUTime" $ whnfIO (getTime ProcessCPUTime)
+ , bench "ThreadCPUTime" $ whnfIO (getTime ThreadCPUTime)
+ , bench "MonotonicRaw" $ whnfIO (getTime MonotonicRaw)
+ , bench "Boottime" $ whnfIO (getTime Boottime)
+ , bench "MonotonicCoarse" $ whnfIO (getTime MonotonicCoarse)
+ , bench "RealtimeCoarse" $ whnfIO (getTime RealtimeCoarse)
+ ]
+#if MIN_VERSION_base(4,11,0)
+ , bench "GHC.Clock.getMonotonicTimeNSec" $ whnfIO getMonotonicTimeNSec
+#endif
+ ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clock-0.7.2/cbits/hs_clock_win32.c new/clock-0.8/cbits/hs_clock_win32.c
--- old/clock-0.7.2/cbits/hs_clock_win32.c 2016-04-20 03:14:45.000000000 +0200
+++ new/clock-0.8/cbits/hs_clock_win32.c 2019-04-26 15:37:49.000000000 +0200
@@ -28,12 +28,22 @@
t[1] = 100*(long)(t_100ns % 10000000UL);
}
+/* See https://ghc.haskell.org/trac/ghc/ticket/15094 */
+#if defined(_WIN32) && !defined(_WIN64)
+__attribute__((optimize("-fno-expensive-optimizations")))
+#endif
void hs_clock_win32_gettime_monotonic(long long* t)
{
LARGE_INTEGER time;
- LARGE_INTEGER frequency;
+ static LARGE_INTEGER frequency;
+ static int hasFreq = 0;
+
QueryPerformanceCounter(&time);
- QueryPerformanceFrequency(&frequency);
+ if (!hasFreq)
+ {
+ hasFreq = 1;
+ QueryPerformanceFrequency(&frequency);
+ }
// seconds
t[0] = time.QuadPart / frequency.QuadPart;
// nanos =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clock-0.7.2/clock.cabal new/clock-0.8/clock.cabal
--- old/clock-0.7.2/clock.cabal 2016-04-20 03:14:45.000000000 +0200
+++ new/clock-0.8/clock.cabal 2019-04-26 15:37:49.000000000 +0200
@@ -1,5 +1,5 @@
name: clock
-version: 0.7.2
+version: 0.8
stability: stable
synopsis: High-resolution clock functions: monotonic, realtime, cputime.
description: A package for convenient access to high-resolution clock and
@@ -33,6 +33,8 @@
.
Fixes for older Linux build failures introduced by new Linux-specific clocks by Mario Longobardi on 2016-04-18.
.
+ Refreshment release in 2019-04 after numerous contributions.
+ .
[Version Scheme]
Major-@/R/@-ewrite . New-@/F/@-unctionality . @/I/@-mprovementAndBugFixes . @/P/@-ackagingOnly
.
@@ -41,8 +43,8 @@
copyright: Copyright © Cetin Sert 2009-2016, Eugene Kirpichov 2010, Finn Espen Gundersen 2013, Gerolf Seitz 2013, Mathieu Boespflug 2014 2015, Chris Done 2015, Dimitri Sabadie 2015, Christian Burger 2015, Mario Longobardi 2016
license: BSD3
license-file: LICENSE
-author: Cetin Sert