openSUSE Commits
Threads by month
- ----- 2025 -----
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
May 2016
- 1 participants
- 1722 discussions
Hello community,
here is the log from the commit of package ghc-microlens for openSUSE:Factory checked in at 2016-05-31 12:24:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-microlens (Old)
and /work/SRC/openSUSE:Factory/.ghc-microlens.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-microlens"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-microlens/ghc-microlens.changes 2016-05-11 16:37:24.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-microlens.new/ghc-microlens.changes 2016-05-31 12:24:28.000000000 +0200
@@ -1,0 +2,12 @@
+Tue May 24 19:31:03 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 0.4.4.0
+* Added mapAccumLOf.
+
+-------------------------------------------------------------------
+Thu May 5 06:41:43 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 0.4.3.0
+* Added ?~.
+
+-------------------------------------------------------------------
Old:
----
microlens-0.4.2.1.tar.gz
New:
----
microlens-0.4.4.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-microlens.spec ++++++
--- /var/tmp/diff_new_pack.UDWHbg/_old 2016-05-31 12:24:28.000000000 +0200
+++ /var/tmp/diff_new_pack.UDWHbg/_new 2016-05-31 12:24:28.000000000 +0200
@@ -18,7 +18,7 @@
%global pkg_name microlens
Name: ghc-%{pkg_name}
-Version: 0.4.2.1
+Version: 0.4.4.0
Release: 0
Summary: A tiny part of the lens library with no dependencies
Group: System/Libraries
++++++ microlens-0.4.2.1.tar.gz -> microlens-0.4.4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/microlens-0.4.2.1/CHANGELOG.md new/microlens-0.4.4.0/CHANGELOG.md
--- old/microlens-0.4.2.1/CHANGELOG.md 2016-04-08 21:37:23.000000000 +0200
+++ new/microlens-0.4.4.0/CHANGELOG.md 2016-05-23 22:15:32.000000000 +0200
@@ -1,3 +1,11 @@
+# 0.4.4.0
+
+* Added `mapAccumLOf`.
+
+# 0.4.3.0
+
+* Added `?~`.
+
# 0.4.2.1
* Added forgotten copyright/authorship information.
@@ -55,6 +63,7 @@
* Moved `Lens.Micro.Classes` into `Lens.Micro.Internal`.
* Added `<%~`, `<<%~`, `<<.~`.
+* Added `_head`, `_tail`, `_init`, `_last`.
# 0.2.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/microlens-0.4.2.1/microlens.cabal new/microlens-0.4.4.0/microlens.cabal
--- old/microlens-0.4.2.1/microlens.cabal 2016-04-08 21:37:23.000000000 +0200
+++ new/microlens-0.4.4.0/microlens.cabal 2016-05-23 22:16:48.000000000 +0200
@@ -1,5 +1,5 @@
name: microlens
-version: 0.4.2.1
+version: 0.4.4.0
synopsis: A tiny part of the lens library with no dependencies
description:
This is an extract from <http://hackage.haskell.org/package/lens lens> (with no dependencies). It's not a toy lenses library, unsuitable for “real world”, but merely a small one. It is compatible with lens, and should have same performance. It also has better documentation.
@@ -12,7 +12,7 @@
.
Don't use this library:
.
- * if you need @Iso@s, @Prism@s, indexed traversals, or actually anything else which isn't defined here
+ * if you need @Iso@s, @Prism@s, indexed traversals, or actually anything else which isn't defined here (tho some indexed functions are available elsewhere – containers and vector provide them for their types, and <http://hackage.haskell.org/package/ilist ilist> provides indexed functions for lists)
.
* if you want a library with a clean, understandable implementation (in which case you're looking for <http://hackage.haskell.org/package/lens-simple lens-simple>)
.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/microlens-0.4.2.1/src/Lens/Micro/Internal.hs new/microlens-0.4.4.0/src/Lens/Micro/Internal.hs
--- old/microlens-0.4.2.1/src/Lens/Micro/Internal.hs 2016-04-08 21:37:23.000000000 +0200
+++ new/microlens-0.4.4.0/src/Lens/Micro/Internal.hs 2016-05-23 21:02:23.000000000 +0200
@@ -280,11 +280,15 @@
Data.Map.delete k m = m 'Lens.Micro.&' at k 'Lens.Micro..~' Nothing
@
-'at' doesn't work for arrays, because you can't delete an arbitrary element from an array.
+Or you could use ('Lens.Micro.?~') instead of ('Lens.Micro..~'):
-If you want to modify an already existing value, you should use 'ix' instead because then you won't have to deal with 'Maybe' ('ix' is available for all types that have 'at').
+@
+Data.Map.insert k a m = m 'Lens.Micro.&' at k 'Lens.Micro.?~' a
+@
+
+Note that 'at' doesn't work for arrays or lists. You can't delete an arbitrary element from an array (what would be left in its place?), and you can't set an arbitrary element in a list because if the index is out of list's bounds, you'd have to somehow fill the stretch between the last element and the element you just inserted (i.e. @[1,2,3] & at 10 .~ 5@ is undefined). If you want to modify an already existing value in an array or list, you should use 'ix' instead.
-'at' is often used with 'Lens.Micro.non'.
+'at' is often used with 'Lens.Micro.non'. See the documentation of 'Lens.Micro.non' for examples.
Note that 'at' isn't strict for @Map@, even if you're using @Data.Map.Strict@:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/microlens-0.4.2.1/src/Lens/Micro.hs new/microlens-0.4.4.0/src/Lens/Micro.hs
--- old/microlens-0.4.2.1/src/Lens/Micro.hs 2016-04-08 21:37:23.000000000 +0200
+++ new/microlens-0.4.4.0/src/Lens/Micro.hs 2016-05-23 22:09:08.000000000 +0200
@@ -26,6 +26,7 @@
sets,
(%~), over,
(.~), set,
+ (?~),
(<%~), (<<%~), (<<.~),
mapped,
@@ -67,6 +68,7 @@
each,
ix,
_head, _tail, _init, _last,
+ mapAccumLOf,
-- * Prism: a traversal iterating over at most 1 element
-- $prisms-note
@@ -87,6 +89,7 @@
import Data.Functor.Identity
import Data.Monoid
import Data.Maybe
+import Data.Tuple
import qualified Data.Foldable as F
import Unsafe.Coerce
@@ -281,6 +284,24 @@
{-# INLINE set #-}
{- |
+('?~') is a version of ('.~') that wraps the value into 'Just' before setting.
+
+@
+l ?~ b = l .~ Just b
+@
+
+It can be useful in combination with 'at':
+
+>>> Map.empty & at 3 ?~ x
+fromList [(3,x)]
+-}
+(?~) :: ASetter s t a (Maybe b) -> b -> s -> t
+l ?~ b = set l (Just b)
+{-# INLINE (?~) #-}
+
+infixr 4 ?~
+
+{- |
'mapped' is a setter for everything contained in a functor. You can use it to map over lists, @Maybe@, or even @IO@ (which is something you can't do with 'traversed' or 'each').
Here 'mapped' is used to turn a value to all non-'Nothing' values in a list:
@@ -887,6 +908,20 @@
_last = _Snoc._2
{-# INLINE _last #-}
+
+{- |
+This generalizes 'Data.Traversable.mapAccumL' to an arbitrary 'Traversal'. (Note that it doesn't work on folds, only traversals.)
+
+@
+'mapAccumL' ≡ 'mapAccumLOf' 'traverse'
+@
+-}
+mapAccumLOf :: LensLike (State acc) s t a b -> (acc -> a -> (acc, b)) -> acc -> s -> (acc, t)
+mapAccumLOf l f acc0 s = swap (runState (l g s) acc0)
+ where
+ g a = state $ \acc -> swap (f acc a)
+{-# INLINE mapAccumLOf #-}
+
-- Prisms ------------------------------------------------------------------
{- $prisms-note
1
0
Hello community,
here is the log from the commit of package ghc-memory for openSUSE:Factory checked in at 2016-05-31 12:24:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-memory (Old)
and /work/SRC/openSUSE:Factory/.ghc-memory.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-memory"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-memory/ghc-memory.changes 2016-01-28 17:24:53.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-memory.new/ghc-memory.changes 2016-05-31 12:24:27.000000000 +0200
@@ -1,0 +2,11 @@
+Mon May 23 10:48:17 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 0.13
+
+-------------------------------------------------------------------
+Sun Apr 10 18:58:54 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 0.12
+* Fix compilation with mkWeak and latest GHC
+
+-------------------------------------------------------------------
Old:
----
memory-0.11.tar.gz
New:
----
memory-0.13.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-memory.spec ++++++
--- /var/tmp/diff_new_pack.a46RLI/_old 2016-05-31 12:24:28.000000000 +0200
+++ /var/tmp/diff_new_pack.a46RLI/_new 2016-05-31 12:24:28.000000000 +0200
@@ -21,7 +21,7 @@
%bcond_with tests
Name: ghc-memory
-Version: 0.11
+Version: 0.13
Release: 0
Summary: Memory and related abtraction stuff
License: BSD-3-Clause
++++++ memory-0.11.tar.gz -> memory-0.13.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memory-0.11/CHANGELOG.md new/memory-0.13/CHANGELOG.md
--- old/memory-0.11/CHANGELOG.md 2016-01-12 23:28:28.000000000 +0100
+++ new/memory-0.13/CHANGELOG.md 2016-05-22 10:29:35.000000000 +0200
@@ -1,3 +1,11 @@
+## 0.12
+
+* Fix compilation with mkWeak and latest GHC (Lars Kuhtz)
+
+## 0.11
+
+* add support for GHC 8.0.1
+
## 0.10
* make memConstEqual more constant not using boolean comparaison
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memory-0.11/Data/ByteArray/Mapping.hs new/memory-0.13/Data/ByteArray/Mapping.hs
--- old/memory-0.11/Data/ByteArray/Mapping.hs 2016-01-12 23:28:28.000000000 +0100
+++ new/memory-0.13/Data/ByteArray/Mapping.hs 2016-05-22 10:29:35.000000000 +0200
@@ -8,10 +8,12 @@
module Data.ByteArray.Mapping
( toW64BE
, toW64LE
+ , fromW64BE
, mapAsWord64
, mapAsWord128
) where
+import Data.Bits (shiftR)
import Data.ByteArray.Types
import Data.ByteArray.Methods
import Data.Memory.Internal.Compat
@@ -37,8 +39,12 @@
toW64LE :: ByteArrayAccess bs => bs -> Int -> LE Word64
toW64LE bs ofs = unsafeDoIO $ withByteArray bs $ \p -> peek (p `plusPtr` ofs)
+-- | Serialize a @Word64@ to a @ByteArray@ in big endian format
+fromW64BE :: (ByteArray ba) => Word64 -> ba
+fromW64BE n = allocAndFreeze 8 $ \p -> poke p (toBE n)
+
-- | map blocks of 128 bits of a bytearray, creating a new bytestring
--- of equivalent size where each blocks has been mapped through @f
+-- of equivalent size where each blocks has been mapped through @f@
--
-- no length checking is done. unsafe
mapAsWord128 :: ByteArray bs => (Word128 -> Word128) -> bs -> bs
@@ -59,7 +65,7 @@
loop (i-1) (d `plusPtr` 16) (s `plusPtr` 16)
-- | map blocks of 64 bits of a bytearray, creating a new bytestring
--- of equivalent size where each blocks has been mapped through @f
+-- of equivalent size where each blocks has been mapped through @f@
--
-- no length checking is done. unsafe
mapAsWord64 :: ByteArray bs => (Word64 -> Word64) -> bs -> bs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memory-0.11/Data/ByteArray/Pack.hs new/memory-0.13/Data/ByteArray/Pack.hs
--- old/memory-0.11/Data/ByteArray/Pack.hs 2016-01-12 23:28:28.000000000 +0100
+++ new/memory-0.13/Data/ByteArray/Pack.hs 2016-05-22 10:29:35.000000000 +0200
@@ -45,7 +45,7 @@
import Data.ByteArray (ByteArray, ByteArrayAccess, MemView(..))
import qualified Data.ByteArray as B
--- | fill a given sized buffer with the result of the Packer action
+-- | Fill a given sized buffer with the result of the Packer action
fill :: ByteArray byteArray => Int -> Packer a -> Either String byteArray
fill len packing = unsafeDoIO $ do
(val, out) <- B.allocRet len $ \ptr -> runPacker_ packing (MemView ptr len)
@@ -55,7 +55,7 @@
| otherwise -> return $ Left ("remaining unpacked bytes " ++ show r ++ " at the end of buffer")
PackerFail err -> return $ Left err
--- | pack the given packer into the given bytestring
+-- | Pack the given packer into the given bytestring
pack :: ByteArray byteArray => Packer a -> Int -> Either String byteArray
pack packing len = fill len packing
{-# DEPRECATED pack "use fill instead" #-}
@@ -65,11 +65,11 @@
memSet ptr w size
return $ PackerMore () (MemView (ptr `plusPtr` size) 0)
--- | put a storable from the current position in the stream
+-- | Put a storable from the current position in the stream
putStorable :: Storable storable => storable -> Packer ()
putStorable s = actionPacker (sizeOf s) (\ptr -> poke (castPtr ptr) s)
--- | put a Byte Array from the current position in the stream
+-- | Put a Byte Array from the current position in the stream
--
-- If the ByteArray is null, then do nothing
putBytes :: ByteArrayAccess ba => ba -> Packer ()
@@ -81,18 +81,20 @@
where
neededLength = B.length bs
--- | skip some bytes from the current position in the stream
+-- | Skip some bytes from the current position in the stream
skip :: Int -> Packer ()
skip n = actionPacker n (\_ -> return ())
--- | skip the size of a storable from the current position in the stream
+-- | Skip the size of a storable from the current position in the stream
skipStorable :: Storable storable => storable -> Packer ()
skipStorable = skip . sizeOf
--- | fill up from the current position in the stream to the end
+-- | Fill up from the current position in the stream to the end
+--
+-- It is equivalent to:
--
--- it is basically:
-- > fillUpWith s == fillList (repeat s)
+--
fillUpWith :: Storable storable => storable -> Packer ()
fillUpWith s = fillList $ repeat s
{-# RULES "fillUpWithWord8" forall s . fillUpWith s = fillUpWithWord8' s #-}
@@ -104,12 +106,19 @@
-- This function will fail with not enough storage if the given storable can't
-- be written (not enough space)
--
--- example:
--- > pack (fillList $ [1..] :: Word8) 9 ==> "\1\2\3\4\5\6\7\8\9"
--- > pack (fillList $ [1..] :: Word32) 4 ==> "\1\0\0\0"
--- > pack (fillList $ [1..] :: Word32) 64 -- will work
--- > pack (fillList $ [1..] :: Word32) 1 -- will fail (not enough space)
--- > pack (fillList $ [1..] :: Word32) 131 -- will fail (not enough space)
+-- Example:
+--
+-- > > pack (fillList $ [1..] :: Word8) 9
+-- > "\1\2\3\4\5\6\7\8\9"
+-- > > pack (fillList $ [1..] :: Word32) 4
+-- > "\1\0\0\0"
+-- > > pack (fillList $ [1..] :: Word32) 64
+-- > .. <..succesful..>
+-- > > pack (fillList $ [1..] :: Word32) 1
+-- > .. <.. not enough space ..>
+-- > > pack (fillList $ [1..] :: Word32) 131
+-- > .. <.. not enough space ..>
+--
fillList :: Storable storable => [storable] -> Packer ()
fillList [] = return ()
fillList (x:xs) = putStorable x >> fillList xs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memory-0.11/Data/ByteArray/Parse.hs new/memory-0.13/Data/ByteArray/Parse.hs
--- old/memory-0.11/Data/ByteArray/Parse.hs 2016-01-12 23:28:28.000000000 +0100
+++ new/memory-0.13/Data/ByteArray/Parse.hs 2016-05-22 10:29:35.000000000 +0200
@@ -22,6 +22,7 @@
, parse
, parseFeed
-- * Parser methods
+ , hasMore
, byte
, anyByte
, bytes
@@ -55,7 +56,7 @@
-- * success: the remaining unparsed data and the parser value
data Result byteArray a =
ParseFail String
- | ParseMore (byteArray -> Result byteArray a)
+ | ParseMore (Maybe byteArray -> Result byteArray a)
| ParseOK byteArray a
instance (Show ba, Show a) => Show (Result ba a) where
@@ -63,31 +64,37 @@
show (ParseMore _) = "ParseMore _"
show (ParseOK b a) = "ParseOK " ++ show a ++ " " ++ show b
+-- | The continuation of the current buffer, and the error string
type Failure byteArray r = byteArray -> String -> Result byteArray r
+
+-- | The continuation of the next buffer value, and the parsed value
type Success byteArray a r = byteArray -> a -> Result byteArray r
-- | Simple ByteString parser structure
newtype Parser byteArray a = Parser
- { runParser :: forall r . byteArray -> Failure byteArray r -> Success byteArray a r -> Result byteArray r }
+ { runParser :: forall r . byteArray
+ -> Failure byteArray r
+ -> Success byteArray a r
+ -> Result byteArray r }
-instance Monad (Parser byteArray) where
- fail errorMsg = Parser $ \buf err _ -> err buf ("failed: " ++ errorMsg)
- return v = Parser $ \buf _ ok -> ok buf v
- m >>= k = Parser $ \buf err ok ->
- runParser m buf err (\buf' a -> runParser (k a) buf' err ok)
-instance MonadPlus (Parser byteArray) where
- mzero = fail "Parser.MonadPlus.mzero"
- mplus f g = Parser $ \buf err ok ->
- -- rewrite the err callback of @f to call @g
- runParser f buf (\_ _ -> runParser g buf err ok) ok
instance Functor (Parser byteArray) where
fmap f p = Parser $ \buf err ok ->
runParser p buf err (\b a -> ok b (f a))
instance Applicative (Parser byteArray) where
pure = return
(<*>) d e = d >>= \b -> e >>= \a -> return (b a)
+instance Monad (Parser byteArray) where
+ fail errorMsg = Parser $ \buf err _ -> err buf ("Parser failed: " ++ errorMsg)
+ return v = Parser $ \buf _ ok -> ok buf v
+ m >>= k = Parser $ \buf err ok ->
+ runParser m buf err (\buf' a -> runParser (k a) buf' err ok)
+instance MonadPlus (Parser byteArray) where
+ mzero = fail "MonadPlus.mzero"
+ mplus f g = Parser $ \buf err ok ->
+ -- rewrite the err callback of @f to call @g
+ runParser f buf (\_ _ -> runParser g buf err ok) ok
instance Alternative (Parser byteArray) where
- empty = fail "Parser.Alternative.empty"
+ empty = fail "Alternative.empty"
(<|>) = mplus
-- | Run a parser on an @initial byteArray.
@@ -95,7 +102,10 @@
-- If the Parser need more data than available, the @feeder function
-- is automatically called and fed to the More continuation.
parseFeed :: (ByteArrayAccess byteArray, Monad m)
- => m byteArray -> Parser byteArray a -> byteArray -> m (Result byteArray a)
+ => m (Maybe byteArray)
+ -> Parser byteArray a
+ -> byteArray
+ -> m (Result byteArray a)
parseFeed feeder p initial = loop $ parse p initial
where loop (ParseMore k) = feeder >>= (loop . k)
loop r = return r
@@ -106,25 +116,47 @@
parse p s = runParser p s (\_ msg -> ParseFail msg) (\b a -> ParseOK b a)
------------------------------------------------------------
+
+-- When needing more data, getMore append the next data
+-- to the current buffer. if no further data, then
+-- the err callback is called.
getMore :: ByteArray byteArray => Parser byteArray ()
getMore = Parser $ \buf err ok -> ParseMore $ \nextChunk ->
- if B.null nextChunk
- then err buf "EOL: need more data"
- else ok (B.append buf nextChunk) ()
+ case nextChunk of
+ Nothing -> err buf "EOL: need more data"
+ Just nc
+ | B.null nc -> runParser getMore buf err ok
+ | otherwise -> ok (B.append buf nc) ()
+-- Only used by takeAll, which accumulate all the remaining data
+-- until ParseMore is fed a Nothing value.
+--
+-- getAll cannot fail.
getAll :: ByteArray byteArray => Parser byteArray ()
getAll = Parser $ \buf err ok -> ParseMore $ \nextChunk ->
- if B.null nextChunk
- then ok buf ()
- else runParser getAll (B.append buf nextChunk) err ok
+ case nextChunk of
+ Nothing -> ok buf ()
+ Just nc -> runParser getAll (B.append buf nc) err ok
+-- Only used by skipAll, which flush all the remaining data
+-- until ParseMore is fed a Nothing value.
+--
+-- flushAll cannot fail.
flushAll :: ByteArray byteArray => Parser byteArray ()
flushAll = Parser $ \buf err ok -> ParseMore $ \nextChunk ->
- if B.null nextChunk
- then ok buf ()
- else runParser getAll B.empty err ok
+ case nextChunk of
+ Nothing -> ok buf ()
+ Just _ -> runParser flushAll B.empty err ok
------------------------------------------------------------
+hasMore :: ByteArray byteArray => Parser byteArray Bool
+hasMore = Parser $ \buf err ok ->
+ if B.null buf
+ then ParseMore $ \nextChunk ->
+ case nextChunk of
+ Nothing -> ok buf False
+ Just nc -> runParser hasMore nc err ok
+ else ok buf True
-- | Get the next byte from the parser
anyByte :: ByteArray byteArray => Parser byteArray Word8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memory-0.11/Data/ByteArray/ScrubbedBytes.hs new/memory-0.13/Data/ByteArray/ScrubbedBytes.hs
--- old/memory-0.11/Data/ByteArray/ScrubbedBytes.hs 2016-01-12 23:28:28.000000000 +0100
+++ new/memory-0.13/Data/ByteArray/ScrubbedBytes.hs 2016-05-22 10:29:35.000000000 +0200
@@ -69,7 +69,7 @@
in case mkWeak# mbarr () (finalize scrubber mba) s1 of
(# s2, _ #) -> (# s2, mba #)
where
-#if __GLASGOW_HASKELL__ > 800
+#if __GLASGOW_HASKELL__ > 801
finalize :: (State# RealWorld -> State# RealWorld) -> ScrubbedBytes -> State# RealWorld -> State# RealWorld
finalize scrubber mba@(ScrubbedBytes _) = \s1 ->
case scrubber s1 of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/memory-0.11/memory.cabal new/memory-0.13/memory.cabal
--- old/memory-0.11/memory.cabal 2016-01-12 23:28:28.000000000 +0100
+++ new/memory-0.13/memory.cabal 2016-05-22 10:29:35.000000000 +0200
@@ -1,5 +1,5 @@
Name: memory
-Version: 0.11
+Version: 0.13
Synopsis: memory and related abstraction stuff
Description:
Chunk of memory, polymorphic byte array management and manipulation
1
0
Hello community,
here is the log from the commit of package ghc-list-t for openSUSE:Factory checked in at 2016-05-31 12:24:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-list-t (Old)
and /work/SRC/openSUSE:Factory/.ghc-list-t.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-list-t"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-list-t/ghc-list-t.changes 2016-02-23 16:59:32.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-list-t.new/ghc-list-t.changes 2016-05-31 12:24:26.000000000 +0200
@@ -1,0 +2,5 @@
+Tue May 24 18:53:13 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 0.4.7
+
+-------------------------------------------------------------------
Old:
----
list-t-0.4.6.1.tar.gz
New:
----
list-t-0.4.7.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-list-t.spec ++++++
--- /var/tmp/diff_new_pack.VwzKXY/_old 2016-05-31 12:24:27.000000000 +0200
+++ /var/tmp/diff_new_pack.VwzKXY/_new 2016-05-31 12:24:27.000000000 +0200
@@ -20,7 +20,7 @@
%bcond_with tests
Name: ghc-list-t
-Version: 0.4.6.1
+Version: 0.4.7
Release: 0
Summary: ListT done right
Group: System/Libraries
++++++ list-t-0.4.6.1.tar.gz -> list-t-0.4.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/list-t-0.4.6.1/list-t.cabal new/list-t-0.4.7/list-t.cabal
--- old/list-t-0.4.6.1/list-t.cabal 2016-02-21 04:58:39.000000000 +0100
+++ new/list-t-0.4.7/list-t.cabal 2016-05-23 15:29:28.000000000 +0200
@@ -1,7 +1,7 @@
name:
list-t
version:
- 0.4.6.1
+ 0.4.7
synopsis:
ListT done right
description:
@@ -48,9 +48,10 @@
mtl == 2.*,
transformers-base == 0.4.*,
transformers >= 0.3 && < 0.6,
- base-prelude < 2
+ base-prelude < 2,
+ base < 4.10
default-extensions:
- Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFunctor, DeriveGeneric, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, ImpredicativeTypes, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
+ Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFunctor, DeriveGeneric, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, PolyKinds, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
default-language:
Haskell2010
@@ -69,6 +70,6 @@
mtl-prelude < 3,
base-prelude
default-extensions:
- Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFunctor, DeriveGeneric, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, ImpredicativeTypes, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
+ Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFunctor, DeriveGeneric, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, PolyKinds, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
default-language:
Haskell2010
1
0
Hello community,
here is the log from the commit of package ghc-lifted-async for openSUSE:Factory checked in at 2016-05-31 12:24:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-lifted-async (Old)
and /work/SRC/openSUSE:Factory/.ghc-lifted-async.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-lifted-async"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-lifted-async/ghc-lifted-async.changes 2016-01-28 17:24:49.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-lifted-async.new/ghc-lifted-async.changes 2016-05-31 12:24:24.000000000 +0200
@@ -1,0 +2,6 @@
+Mon May 23 10:43:49 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 0.9.0
+* Leverage StM m a ~ a in the Safe module for faster wait/poll/race/concurrently
+
+-------------------------------------------------------------------
Old:
----
lifted-async-0.8.0.1.tar.gz
New:
----
lifted-async-0.9.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-lifted-async.spec ++++++
--- /var/tmp/diff_new_pack.DTlEhh/_old 2016-05-31 12:24:25.000000000 +0200
+++ /var/tmp/diff_new_pack.DTlEhh/_new 2016-05-31 12:24:25.000000000 +0200
@@ -21,7 +21,7 @@
%bcond_with tests
Name: ghc-lifted-async
-Version: 0.8.0.1
+Version: 0.9.0
Release: 0
Summary: Run lifted IO operations asynchronously and wait for their results
License: BSD-3-Clause
++++++ lifted-async-0.8.0.1.tar.gz -> lifted-async-0.9.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lifted-async-0.8.0.1/CHANGELOG.md new/lifted-async-0.9.0/CHANGELOG.md
--- old/lifted-async-0.8.0.1/CHANGELOG.md 2016-01-17 22:16:51.000000000 +0100
+++ new/lifted-async-0.9.0/CHANGELOG.md 2016-05-22 14:26:28.000000000 +0200
@@ -1,3 +1,7 @@
+## v0.9.0 - 2016-05-22
+
+* Leverage `StM m a ~ a` in the `Safe` module for faster `wait`/`poll`/`race`/`concurrently`
+
## v0.8.0.1 - 2015-01-17
* Relax upper bound for constraints
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lifted-async-0.8.0.1/benchmarks/Benchmarks.hs new/lifted-async-0.9.0/benchmarks/Benchmarks.hs
--- old/lifted-async-0.8.0.1/benchmarks/Benchmarks.hs 2016-01-17 22:16:51.000000000 +0100
+++ new/lifted-async-0.9.0/benchmarks/Benchmarks.hs 2016-05-22 14:26:28.000000000 +0200
@@ -1,40 +1,46 @@
-{-# LANGUAGE BangPatterns #-}
module Main where
import Control.Exception (SomeException(..))
import Criterion.Main
import qualified Control.Concurrent.Async as A
import qualified Control.Concurrent.Async.Lifted as L
+import qualified Control.Concurrent.Async.Lifted.Safe as LS
main :: IO ()
main = defaultMain
[ bgroup "async-wait"
[ bench "async" $ whnfIO asyncWait_async
, bench "lifted-async" $ whnfIO asyncWait_liftedAsync
+ , bench "lifted-async-safe" $ whnfIO asyncWait_liftedAsyncSafe
]
, bgroup "async-cancel-waitCatch"
[ bench "async" $ whnfIO asyncCancelWaitCatch_async
, bench "lifted-async" $ whnfIO asyncCancelWaitCatch_liftedAsync
+ , bench "lifted-async-safe" $ whnfIO asyncCancelWaitCatch_liftedAsyncSafe
]
, bgroup "waitAny"
[ bench "async" $ whnfIO waitAny_async
, bench "lifted-async" $ whnfIO waitAny_liftedAsync
+ , bench "lifted-async-safe" $ whnfIO waitAny_liftedAsyncSafe
]
, bgroup "race"
[ bench "async" $ nfIO race_async
, bench "lifted-async" $ nfIO race_liftedAsync
+ , bench "lifted-async-safe" $ nfIO race_liftedAsyncSafe
, bench "async (inlined)" $ nfIO race_async_inlined
, bench "lifted-async (inlined)" $ nfIO race_liftedAsync_inlined
]
, bgroup "concurrently"
[ bench "async" $ nfIO concurrently_async
, bench "lifted-async" $ nfIO concurrently_liftedAsync
+ , bench "lifted-async-safe" $ nfIO concurrently_liftedAsyncSafe
, bench "async (inlined)" $ nfIO concurrently_async_inlined
, bench "lifted-async (inlined)" $ nfIO concurrently_liftedAsync_inlined
]
, bgroup "mapConcurrently"
[ bench "async" $ nfIO mapConcurrently_async
, bench "lifted-async" $ nfIO mapConcurrently_liftedAsync
+ , bench "lifted-async-safe" $ nfIO mapConcurrently_liftedAsyncSafe
]
]
@@ -48,6 +54,11 @@
a <- L.async (return 1)
L.wait a
+asyncWait_liftedAsyncSafe :: IO Int
+asyncWait_liftedAsyncSafe = do
+ a <- LS.async (return 1)
+ LS.wait a
+
asyncCancelWaitCatch_async :: IO (Either SomeException Int)
asyncCancelWaitCatch_async = do
a <- A.async (return 1)
@@ -60,6 +71,12 @@
L.cancel a
L.waitCatch a
+asyncCancelWaitCatch_liftedAsyncSafe :: IO (Either SomeException Int)
+asyncCancelWaitCatch_liftedAsyncSafe = do
+ a <- LS.async (return 1)
+ LS.cancel a
+ LS.waitCatch a
+
waitAny_async :: IO Int
waitAny_async = do
as <- mapM (A.async . return) [1..10]
@@ -72,6 +89,12 @@
(_, n) <- L.waitAny as
return n
+waitAny_liftedAsyncSafe :: IO Int
+waitAny_liftedAsyncSafe = do
+ as <- mapM (LS.async . return) [1..10]
+ (_, n) <- LS.waitAny as
+ return n
+
race_async :: IO (Either Int Int)
race_async =
A.race (return 1) (return 2)
@@ -80,6 +103,10 @@
race_liftedAsync =
L.race (return 1) (return 2)
+race_liftedAsyncSafe :: IO (Either Int Int)
+race_liftedAsyncSafe =
+ LS.race (return 1) (return 2)
+
race_async_inlined :: IO (Either Int Int)
race_async_inlined =
A.withAsync (return 1) $ \a ->
@@ -100,6 +127,10 @@
concurrently_liftedAsync =
L.concurrently (return 1) (return 2)
+concurrently_liftedAsyncSafe :: IO (Int, Int)
+concurrently_liftedAsyncSafe =
+ LS.concurrently (return 1) (return 2)
+
concurrently_async_inlined :: IO (Int, Int)
concurrently_async_inlined =
A.withAsync (return 1) $ \a ->
@@ -119,3 +150,7 @@
mapConcurrently_liftedAsync :: IO [Int]
mapConcurrently_liftedAsync =
L.mapConcurrently return [1..10]
+
+mapConcurrently_liftedAsyncSafe :: IO [Int]
+mapConcurrently_liftedAsyncSafe =
+ LS.mapConcurrently return [1..10]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lifted-async-0.8.0.1/lifted-async.cabal new/lifted-async-0.9.0/lifted-async.cabal
--- old/lifted-async-0.8.0.1/lifted-async.cabal 2016-01-17 22:16:51.000000000 +0100
+++ new/lifted-async-0.9.0/lifted-async.cabal 2016-05-22 14:26:28.000000000 +0200
@@ -1,5 +1,5 @@
name: lifted-async
-version: 0.8.0.1
+version: 0.9.0
synopsis: Run lifted IO operations asynchronously and wait for their results
homepage: https://github.com/maoe/lifted-async
bug-reports: https://github.com/maoe/lifted-async/issues
@@ -12,7 +12,8 @@
build-type: Simple
cabal-version: >= 1.8
tested-with:
- GHC == 7.10.2
+ GHC == 8.0.1
+ , GHC == 7.10.2
, GHC == 7.8.4
, GHC == 7.6.3
@@ -114,5 +115,5 @@
source-repository this
type: git
- tag: v0.8.0.1
+ tag: v0.9.0
location: https://github.com/maoe/lifted-async.git
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lifted-async-0.8.0.1/src/Control/Concurrent/Async/Lifted/Safe.hs new/lifted-async-0.9.0/src/Control/Concurrent/Async/Lifted/Safe.hs
--- old/lifted-async-0.8.0.1/src/Control/Concurrent/Async/Lifted/Safe.hs 2016-01-17 22:16:51.000000000 +0100
+++ new/lifted-async-0.9.0/src/Control/Concurrent/Async/Lifted/Safe.hs 2016-05-22 14:26:28.000000000 +0200
@@ -50,7 +50,7 @@
-- ** Waiting for multiple 'Async's
, waitAny, waitAnyCatch, waitAnyCancel, waitAnyCatchCancel
, waitEither, waitEitherCatch, waitEitherCancel, waitEitherCatchCancel
- , Unsafe.waitEither_
+ , waitEither_
, waitBoth
#if MIN_VERSION_async(2, 1, 0)
@@ -192,25 +192,25 @@
-- | Generalized version of 'A.wait'.
wait
- :: forall m a. (MonadBaseControl IO m, Forall (Pure m))
+ :: forall m a. (MonadBase IO m, Forall (Pure m))
=> Async a -> m a
-wait = Unsafe.wait
+wait = liftBase . A.wait
\\ (inst :: Forall (Pure m) :- Pure m a)
-- | Generalized version of 'A.poll'.
poll
- :: forall m a. (MonadBaseControl IO m, Forall (Pure m))
+ :: forall m a. (MonadBase IO m, Forall (Pure m))
=> Async a
-> m (Maybe (Either SomeException a))
-poll = Unsafe.poll
+poll = liftBase . A.poll
\\ (inst :: Forall (Pure m) :- Pure m a)
-- | Generalized version of 'A.waitCatch'.
waitCatch
- :: forall m a. (MonadBaseControl IO m, Forall (Pure m))
+ :: forall m a. (MonadBase IO m, Forall (Pure m))
=> Async a
-> m (Either SomeException a)
-waitCatch = Unsafe.waitCatch
+waitCatch = liftBase . A.waitCatch
\\ (inst :: Forall (Pure m) :- Pure m a)
-- | Generalized version of 'A.cancel'.
@@ -223,82 +223,86 @@
-- | Generalized version of 'A.waitAny'.
waitAny
- :: forall m a. (MonadBaseControl IO m, Forall (Pure m))
+ :: forall m a. (MonadBase IO m, Forall (Pure m))
=> [Async a] -> m (Async a, a)
-waitAny = Unsafe.waitAny
+waitAny = liftBase . A.waitAny
\\ (inst :: Forall (Pure m) :- Pure m a)
-- | Generalized version of 'A.waitAnyCatch'.
waitAnyCatch
- :: forall m a. (MonadBaseControl IO m, Forall (Pure m))
+ :: forall m a. (MonadBase IO m, Forall (Pure m))
=> [Async a]
-> m (Async a, Either SomeException a)
-waitAnyCatch = Unsafe.waitAnyCatch
+waitAnyCatch = liftBase . A.waitAnyCatch
\\ (inst :: Forall (Pure m) :- Pure m a)
-- | Generalized version of 'A.waitAnyCancel'.
waitAnyCancel
- :: forall m a. (MonadBaseControl IO m, Forall (Pure m))
+ :: forall m a. (MonadBase IO m, Forall (Pure m))
=> [Async a]
-> m (Async a, a)
-waitAnyCancel = Unsafe.waitAnyCancel
+waitAnyCancel = liftBase . A.waitAnyCancel
\\ (inst :: Forall (Pure m) :- Pure m a)
-- | Generalized version of 'A.waitAnyCatchCancel'.
waitAnyCatchCancel
- :: forall m a. (MonadBaseControl IO m, Forall (Pure m))
+ :: forall m a. (MonadBase IO m, Forall (Pure m))
=> [Async a]
-> m (Async a, Either SomeException a)
-waitAnyCatchCancel = Unsafe.waitAnyCatchCancel
+waitAnyCatchCancel = liftBase . A.waitAnyCatchCancel
\\ (inst :: Forall (Pure m) :- Pure m a)
-- | Generalized version of 'A.waitEither'.
waitEither
- :: forall m a b. (MonadBaseControl IO m, Forall (Pure m))
+ :: forall m a b. (MonadBase IO m, Forall (Pure m))
=> Async a
-> Async b
-> m (Either a b)
-waitEither = Unsafe.waitEither
+waitEither = (liftBase .) . A.waitEither
\\ (inst :: Forall (Pure m) :- Pure m a)
\\ (inst :: Forall (Pure m) :- Pure m b)
-- | Generalized version of 'A.waitEitherCatch'.
waitEitherCatch
- :: forall m a b. (MonadBaseControl IO m, Forall (Pure m))
+ :: forall m a b. (MonadBase IO m, Forall (Pure m))
=> Async a
-> Async b
-> m (Either (Either SomeException a) (Either SomeException b))
-waitEitherCatch = Unsafe.waitEitherCatch
+waitEitherCatch = (liftBase .) . A.waitEitherCatch
\\ (inst :: Forall (Pure m) :- Pure m a)
\\ (inst :: Forall (Pure m) :- Pure m b)
-- | Generalized version of 'A.waitEitherCancel'.
waitEitherCancel
- :: forall m a b. (MonadBaseControl IO m, Forall (Pure m))
+ :: forall m a b. (MonadBase IO m, Forall (Pure m))
=> Async a
-> Async b
-> m (Either a b)
-waitEitherCancel = Unsafe.waitEitherCancel
+waitEitherCancel = (liftBase .) . A.waitEitherCancel
\\ (inst :: Forall (Pure m) :- Pure m a)
\\ (inst :: Forall (Pure m) :- Pure m b)
-- | Generalized version of 'A.waitEitherCatchCancel'.
waitEitherCatchCancel
- :: forall m a b. (MonadBaseControl IO m, Forall (Pure m))
+ :: forall m a b. (MonadBase IO m, Forall (Pure m))
=> Async a
-> Async b
-> m (Either (Either SomeException a) (Either SomeException b))
-waitEitherCatchCancel = Unsafe.waitEitherCatchCancel
+waitEitherCatchCancel = (liftBase .) . A.waitEitherCatchCancel
\\ (inst :: Forall (Pure m) :- Pure m a)
\\ (inst :: Forall (Pure m) :- Pure m b)
+-- | Generalized version of 'A.waitEither_'
+waitEither_ :: MonadBase IO m => Async a -> Async b -> m ()
+waitEither_ = Unsafe.waitEither_
+
-- | Generalized version of 'A.waitBoth'.
waitBoth
- :: forall m a b. (MonadBaseControl IO m, Forall (Pure m))
+ :: forall m a b. (MonadBase IO m, Forall (Pure m))
=> Async a
-> Async b
-> m (a, b)
-waitBoth = Unsafe.waitBoth
+waitBoth = (liftBase .) . A.waitBoth
\\ (inst :: Forall (Pure m) :- Pure m a)
\\ (inst :: Forall (Pure m) :- Pure m b)
@@ -306,25 +310,29 @@
race
:: forall m a b. (MonadBaseControl IO m, Forall (Pure m))
=> m a -> m b -> m (Either a b)
-race = Unsafe.race
- \\ (inst :: Forall (Pure m) :- Pure m a)
- \\ (inst :: Forall (Pure m) :- Pure m b)
+race = liftBaseOp2_ A.race
-- | Generalized version of 'A.race_'.
race_
:: forall m a b. (MonadBaseControl IO m, Forall (Pure m))
=> m a -> m b -> m ()
-race_ = Unsafe.race_
- \\ (inst :: Forall (Pure m) :- Pure m a)
- \\ (inst :: Forall (Pure m) :- Pure m b)
+race_ = liftBaseOp2_ A.race_
-- | Generalized version of 'A.concurrently'.
concurrently
:: forall m a b. (MonadBaseControl IO m, Forall (Pure m))
=> m a -> m b -> m (a, b)
-concurrently = Unsafe.concurrently
- \\ (inst :: Forall (Pure m) :- Pure m a)
- \\ (inst :: Forall (Pure m) :- Pure m b)
+concurrently = liftBaseOp2_ A.concurrently
+
+-- | Similar to 'A.liftBaseOp_' but takes a binary function
+-- and leverages @'StM' m a ~ a@.
+liftBaseOp2_
+ :: forall base m a b c. (MonadBaseControl base m, Forall (Pure m))
+ => (base a -> base b -> base c)
+ -> m a -> m b -> m c
+liftBaseOp2_ f left right = liftBaseWith $ \run -> f
+ (run left \\ (inst :: Forall (Pure m) :- Pure m a))
+ (run right \\ (inst :: Forall (Pure m) :- Pure m b))
-- | Generalized version of 'A.mapConcurrently'.
mapConcurrently
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lifted-async-0.8.0.1/src/Control/Concurrent/Async/Lifted.hs new/lifted-async-0.9.0/src/Control/Concurrent/Async/Lifted.hs
--- old/lifted-async-0.8.0.1/src/Control/Concurrent/Async/Lifted.hs 2016-01-17 22:16:51.000000000 +0100
+++ new/lifted-async-0.9.0/src/Control/Concurrent/Async/Lifted.hs 2016-05-22 14:26:28.000000000 +0200
@@ -305,7 +305,7 @@
-- NOTE: This function discards the monadic effects besides IO in the forked
-- computation.
waitEither_
- :: MonadBaseControl IO m
+ :: MonadBase IO m
=> Async a
-> Async b
-> m ()
1
0
Hello community,
here is the log from the commit of package ghc-http2 for openSUSE:Factory checked in at 2016-05-31 12:24:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-http2 (Old)
and /work/SRC/openSUSE:Factory/.ghc-http2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-http2"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-http2/ghc-http2.changes 2016-02-17 12:11:46.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-http2.new/ghc-http2.changes 2016-05-31 12:24:21.000000000 +0200
@@ -1,0 +2,40 @@
+Sat Apr 9 18:01:59 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 1.6.0
+- refreshed cabal-deps.patch
+* Reverse indices of HPACK are now based on tokens.
+* New APIs: encodeTokenHeader and decodeTokenHeader.
+* Deleted API: encodeHeaderBuffer -- use encodeTokenHeader instead.
+* New module: Network.HPACK.Token
+
+-------------------------------------------------------------------
+Fri Mar 18 08:31:58 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 1.5.4
+* Fixing a bug due to misuse of memcpy()
+
+-------------------------------------------------------------------
+Wed Mar 16 09:05:10 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 1.5.3
+* Adding debug information.
+
+-------------------------------------------------------------------
+Sat Mar 12 09:27:51 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 1.5.2
+* Minor optimization for HPACK.
+
+-------------------------------------------------------------------
+Thu Feb 25 09:33:42 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 1.5.1
+
+-------------------------------------------------------------------
+Wed Feb 24 09:43:48 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 1.5.0
+* New API for HPACK. HPACK is much faster than 1.4.x (roughly x3.2). The default
+ encoding is now Linear instead of LinearH.
+
+-------------------------------------------------------------------
Old:
----
http2-1.4.5.tar.gz
New:
----
http2-1.6.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-http2.spec ++++++
--- /var/tmp/diff_new_pack.9zplA6/_old 2016-05-31 12:24:22.000000000 +0200
+++ /var/tmp/diff_new_pack.9zplA6/_new 2016-05-31 12:24:22.000000000 +0200
@@ -20,7 +20,7 @@
%bcond_with tests
Name: ghc-http2
-Version: 1.4.5
+Version: 1.6.0
Release: 0
Summary: HTTP/2.0 library including frames and HPACK
Group: System/Libraries
@@ -40,6 +40,7 @@
BuildRequires: ghc-aeson-pretty-devel
BuildRequires: ghc-array-devel
BuildRequires: ghc-bytestring-devel
+BuildRequires: ghc-case-insensitive-devel
BuildRequires: ghc-containers-devel
BuildRequires: ghc-directory-devel
BuildRequires: ghc-filepath-devel
++++++ cabal-deps.patch ++++++
--- /var/tmp/diff_new_pack.9zplA6/_old 2016-05-31 12:24:22.000000000 +0200
+++ /var/tmp/diff_new_pack.9zplA6/_new 2016-05-31 12:24:22.000000000 +0200
@@ -1,52 +1,52 @@
-Index: http2-1.3.1/http2.cabal
+Index: http2-1.6.0/http2.cabal
===================================================================
---- http2-1.3.1.orig/http2.cabal
-+++ http2-1.3.1/http2.cabal
-@@ -61,7 +61,6 @@ Library
+--- http2-1.6.0.orig/http2.cabal
++++ http2-1.6.0/http2.cabal
+@@ -81,7 +81,6 @@ Library
Build-Depends: base >= 4.6 && < 5
, array
, bytestring >= 0.10
- , bytestring-builder
+ , case-insensitive
, containers >= 0.5
, psqueues
- , stm
-@@ -94,7 +93,6 @@ Test-Suite spec
+@@ -114,7 +113,6 @@ Test-Suite spec
Build-Depends: base >= 4 && < 5
, array
, bytestring
- , bytestring-builder
+ , case-insensitive
, containers
, hex
- , hspec >= 1.3
-@@ -118,7 +116,6 @@ Test-Suite hpack
+@@ -137,7 +135,6 @@ Test-Suite hpack
, aeson-pretty
, array
, bytestring
- , bytestring-builder
+ , case-insensitive
, containers
, directory
- , filepath
-@@ -167,7 +164,6 @@ Executable hpack-encode
+@@ -187,7 +184,6 @@ Executable hpack-encode
, aeson-pretty
, array
, bytestring
- , bytestring-builder
+ , case-insensitive
, containers
, hex
- , text
-@@ -188,7 +184,6 @@ Executable hpack-debug
+@@ -209,7 +205,6 @@ Executable hpack-debug
, aeson
, array
, bytestring
- , bytestring-builder
+ , case-insensitive
, containers
, hex
- , text
-@@ -210,7 +205,6 @@ Executable hpack-stat
+@@ -232,7 +227,6 @@ Executable hpack-stat
, aeson-pretty
, array
, bytestring
- , bytestring-builder
+ , case-insensitive
, containers
, directory
- , filepath
++++++ http2-1.4.5.tar.gz -> http2-1.6.0.tar.gz ++++++
++++ 110935 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package hscolour for openSUSE:Factory checked in at 2016-05-31 12:24:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hscolour (Old)
and /work/SRC/openSUSE:Factory/.hscolour.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "hscolour"
Changes:
--------
--- /work/SRC/openSUSE:Factory/hscolour/hscolour.changes 2015-08-23 17:40:32.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.hscolour.new/hscolour.changes 2016-05-31 12:24:20.000000000 +0200
@@ -1,0 +2,6 @@
+Wed Jan 27 22:46:23 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 1.24
+* support anchors for type/data families
+
+-------------------------------------------------------------------
Old:
----
hscolour-1.23.tar.gz
New:
----
hscolour-1.24.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ hscolour.spec ++++++
--- /var/tmp/diff_new_pack.C30kxR/_old 2016-05-31 12:24:21.000000000 +0200
+++ /var/tmp/diff_new_pack.C30kxR/_new 2016-05-31 12:24:21.000000000 +0200
@@ -22,7 +22,7 @@
%global ghc_without_dynamic 1
Name: hscolour
-Version: 1.23
+Version: 1.24
Release: 0
Summary: Colorise Haskell code
License: GPL-2.0
++++++ hscolour-1.23.tar.gz -> hscolour-1.24.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hscolour-1.23/Language/Haskell/HsColour/Anchors.hs new/hscolour-1.24/Language/Haskell/HsColour/Anchors.hs
--- old/hscolour-1.23/Language/Haskell/HsColour/Anchors.hs 2015-05-11 14:18:07.000000000 +0200
+++ new/hscolour-1.24/Language/Haskell/HsColour/Anchors.hs 2016-01-25 21:09:47.000000000 +0100
@@ -76,8 +76,12 @@
((Varop,v):_) | not (v`inST`st) -> Just (fix v)
_ -> Nothing
identifier st t@((Keyword,"foreign"):stream) = Nothing -- not yet implemented
+identifier st t@((Keyword,"data"):(Space,_):(Keyword,"family"):stream)
+ = getConid stream
identifier st t@((Keyword,"data"):stream) = getConid stream
identifier st t@((Keyword,"newtype"):stream) = getConid stream
+identifier st t@((Keyword,"type"):(Space,_):(Keyword,"family"):stream)
+ = getConid stream
identifier st t@((Keyword,"type"):stream) = getConid stream
identifier st t@((Keyword,"class"):stream) = getConid stream
identifier st t@((Keyword,"instance"):stream)= getInstance stream
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hscolour-1.23/Language/Haskell/HsColour/Classify.hs new/hscolour-1.24/Language/Haskell/HsColour/Classify.hs
--- old/hscolour-1.23/Language/Haskell/HsColour/Classify.hs 2015-05-11 14:18:07.000000000 +0200
+++ new/hscolour-1.24/Language/Haskell/HsColour/Classify.hs 2016-01-25 21:09:47.000000000 +0100
@@ -126,7 +126,7 @@
["case","class","data","default","deriving","do","else","forall"
,"if","import","in","infix","infixl","infixr","instance","let","module"
,"newtype","of","qualified","then","type","where","_"
- ,"foreign","ccall","as","safe","unsafe"]
+ ,"foreign","ccall","as","safe","unsafe","family"]
keyglyphs =
["..","::","=","\\","|","<-","->","@","~","=>","[","]"]
layoutchars =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hscolour-1.23/hscolour.cabal new/hscolour-1.24/hscolour.cabal
--- old/hscolour-1.23/hscolour.cabal 2015-05-11 14:18:07.000000000 +0200
+++ new/hscolour-1.24/hscolour.cabal 2016-01-25 21:09:47.000000000 +0100
@@ -1,6 +1,6 @@
Name: hscolour
-Version: 1.23
-Copyright: 2003-2015 Malcolm Wallace; 2006 Bjorn Bringert
+Version: 1.24
+Copyright: 2003-2016 Malcolm Wallace; 2006 Bjorn Bringert
Maintainer: Malcolm Wallace
Author: Malcolm Wallace
Homepage: http://code.haskell.org/~malcolm/hscolour/
@@ -51,7 +51,7 @@
Main-is: HsColour.hs
--ghc-options: -O -W
Extensions: CPP
- cpp-options: -DMAJOR=1 -DMINOR=22
+ cpp-options: -DMAJOR=1 -DMINOR=24
1
0
Hello community,
here is the log from the commit of package ghc-graph-core for openSUSE:Factory checked in at 2016-05-31 12:24:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-graph-core (Old)
and /work/SRC/openSUSE:Factory/.ghc-graph-core.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-graph-core"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-graph-core/ghc-graph-core.changes 2015-11-10 10:02:13.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-graph-core.new/ghc-graph-core.changes 2016-05-31 12:24:18.000000000 +0200
@@ -1,0 +2,5 @@
+Fri Feb 5 09:24:13 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 0.3.0.0
+
+-------------------------------------------------------------------
Old:
----
graph-core-0.2.2.0.tar.gz
New:
----
graph-core-0.3.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-graph-core.spec ++++++
--- /var/tmp/diff_new_pack.s2EW0z/_old 2016-05-31 12:24:18.000000000 +0200
+++ /var/tmp/diff_new_pack.s2EW0z/_new 2016-05-31 12:24:18.000000000 +0200
@@ -20,7 +20,7 @@
%bcond_with tests
Name: ghc-graph-core
-Version: 0.2.2.0
+Version: 0.3.0.0
Release: 0
Summary: Fast, memory efficient and persistent graph implementation
Group: System/Libraries
++++++ graph-core-0.2.2.0.tar.gz -> graph-core-0.3.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/graph-core-0.2.2.0/LICENSE new/graph-core-0.3.0.0/LICENSE
--- old/graph-core-0.2.2.0/LICENSE 2015-03-31 13:40:45.000000000 +0200
+++ new/graph-core-0.3.0.0/LICENSE 2016-02-04 14:14:17.000000000 +0100
@@ -1,4 +1,4 @@
-Copyright (c) 2014 factis research GmbH
+Copyright (c) 2014 - 2016 factis research GmbH
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/graph-core-0.2.2.0/graph-core.cabal new/graph-core-0.3.0.0/graph-core.cabal
--- old/graph-core-0.2.2.0/graph-core.cabal 2015-03-31 13:40:45.000000000 +0200
+++ new/graph-core-0.3.0.0/graph-core.cabal 2016-02-04 14:16:25.000000000 +0100
@@ -1,5 +1,5 @@
name: graph-core
-version: 0.2.2.0
+version: 0.3.0.0
synopsis: Fast, memory efficient and persistent graph implementation
description: A small package providing a powerful and easy to use Haskell graph implementation.
homepage: https://github.com/factisresearch/graph-core
@@ -7,7 +7,7 @@
license-file: LICENSE
author: Stefan Wehr <wehr(a)cp-med.com>, David Leuschner <leuschner(a)cp-med.com>, Niklas Baumstark, Jonathan Dimond, Alexander Thiemann <thiemann(a)cp-med.com>
maintainer: Alexander Thiemann <thiemann(a)cp-med.com>
-copyright: (c) 2014 factis research GmbH
+copyright: (c) 2014 - 2016 factis research GmbH
category: Data
build-type: Simple
cabal-version: >=1.8
@@ -22,16 +22,15 @@
safe >=0.3,
deepseq >=1.3,
vector >=0.10,
- QuickCheck >=2.6,
mtl >=2.1
hs-source-dirs: src
- ghc-options: -Wall -fno-warn-orphans
+ ghc-options: -Wall
test-suite graph-core-tests
type: exitcode-stdio-1.0
hs-source-dirs: src
main-is: Tests.hs
- other-modules: Test.NodeManager, Test.Core, Test.Persistence
+ other-modules: Test.NodeManager, Test.Core, Test.Persistence, Test.Arbitrary
build-depends: base >=4.6 && <5,
hashable >=1.2,
unordered-containers >=0.2,
@@ -46,4 +45,4 @@
source-repository head
type: git
- location: git://github.com/factisresearch/graph-core.git
+ location: https://github.com/factisresearch/graph-core.git
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/graph-core-0.2.2.0/src/Data/Core/Graph/NodeManager.hs new/graph-core-0.3.0.0/src/Data/Core/Graph/NodeManager.hs
--- old/graph-core-0.2.2.0/src/Data/Core/Graph/NodeManager.hs 2015-03-31 13:40:45.000000000 +0200
+++ new/graph-core-0.3.0.0/src/Data/Core/Graph/NodeManager.hs 2016-02-04 14:11:00.000000000 +0100
@@ -16,7 +16,6 @@
import Control.Monad.State.Strict
import Data.Hashable
import Data.Maybe
-import Test.QuickCheck (NonNegative(..), Arbitrary(..))
import qualified Data.HashMap.Strict as HM
import qualified Data.IntMap.Strict as IM
import qualified Data.IntSet as IS
@@ -110,6 +109,3 @@
unsafeLookupNode :: Node -> NodeManager k -> k
unsafeLookupNode i nm = fromJust $ lookupNode i nm
-
-instance Arbitrary v => Arbitrary (IM.IntMap v) where
- arbitrary = fmap (IM.fromList . map (\(NonNegative i, x) -> (i, x))) arbitrary
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/graph-core-0.2.2.0/src/Data/Core/Graph/PureCore.hs new/graph-core-0.3.0.0/src/Data/Core/Graph/PureCore.hs
--- old/graph-core-0.2.2.0/src/Data/Core/Graph/PureCore.hs 2015-03-31 13:40:45.000000000 +0200
+++ new/graph-core-0.3.0.0/src/Data/Core/Graph/PureCore.hs 2016-02-04 14:11:00.000000000 +0100
@@ -18,7 +18,6 @@
import Data.Hashable
import Data.Maybe
import Data.STRef
-import Test.QuickCheck
import qualified Data.Foldable as F
import qualified Data.HashSet as HS
import qualified Data.IntMap.Strict as IM
@@ -191,13 +190,3 @@
else do newAcc <- f acc x
let succs = IM.findWithDefault VU.empty x adj
go (IS.insert x visited) newAcc (xs ++ VU.toList succs)
-
-instance Arbitrary Graph where
- arbitrary = frequency [(1, return empty), (20, denseGraph)]
- where denseGraph =
- do n <- choose (0, 30::Int)
- let nodeList = [1..n]
- adj <- forM nodeList $ \i ->
- do bits <- vectorOf n arbitrary
- return (i, [ x | (x,b) <- zip nodeList bits, b ])
- return $ fromAdj adj
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/graph-core-0.2.2.0/src/Test/Arbitrary.hs new/graph-core-0.3.0.0/src/Test/Arbitrary.hs
--- old/graph-core-0.2.2.0/src/Test/Arbitrary.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/graph-core-0.3.0.0/src/Test/Arbitrary.hs 2016-02-04 14:11:00.000000000 +0100
@@ -0,0 +1,23 @@
+module Test.Arbitrary where
+
+import Test.QuickCheck
+import Control.Monad (forM)
+import Data.Core.Graph.NodeManager (NodeMap)
+import Data.Core.Graph.PureCore (Graph, empty, fromAdj)
+import qualified Data.IntMap.Strict as IM
+
+
+newtype TestNodeMap v = TestNodeMap(NodeMap v) deriving Show
+
+instance Arbitrary v => Arbitrary (TestNodeMap v) where
+ arbitrary = fmap (TestNodeMap . IM.fromList . map (\(NonNegative i, x) -> (i, x))) arbitrary
+
+instance Arbitrary Graph where
+ arbitrary = frequency [(1, return empty), (20, denseGraph)]
+ where denseGraph =
+ do n <- choose (0, 30::Int)
+ let nodeList = [1..n]
+ adj <- forM nodeList $ \i ->
+ do bits <- vectorOf n arbitrary
+ return (i, [ x | (x,b) <- zip nodeList bits, b ])
+ return $ fromAdj adj
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/graph-core-0.2.2.0/src/Test/Core.hs new/graph-core-0.3.0.0/src/Test/Core.hs
--- old/graph-core-0.2.2.0/src/Test/Core.hs 2015-03-31 13:40:45.000000000 +0200
+++ new/graph-core-0.3.0.0/src/Test/Core.hs 2016-02-04 14:11:00.000000000 +0100
@@ -5,6 +5,7 @@
import Data.Core.Graph.NodeManager (Node)
import Control.Monad
+import Test.Arbitrary ()
import Test.Framework
import qualified Data.IntSet as IS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/graph-core-0.2.2.0/src/Test/NodeManager.hs new/graph-core-0.3.0.0/src/Test/NodeManager.hs
--- old/graph-core-0.2.2.0/src/Test/NodeManager.hs 2015-03-31 13:40:45.000000000 +0200
+++ new/graph-core-0.3.0.0/src/Test/NodeManager.hs 2016-02-04 14:11:00.000000000 +0100
@@ -3,6 +3,7 @@
import Data.Core.Graph.NodeManager
+import Test.Arbitrary
import Test.Framework
import Control.Monad.State.Strict
import qualified Data.IntMap.Strict as IM
@@ -11,8 +12,8 @@
assertConsistent :: StateT (NodeManager Char) IO ()
assertConsistent = get >>= liftIO . assertEqual True . isConsistent
-prop_init :: NodeMap String -> Property
-prop_init m = uniqueValues m && all (>=0) (IM.keys m)
+prop_init :: TestNodeMap String -> Property
+prop_init (TestNodeMap m) = uniqueValues m && all (>=0) (IM.keys m)
==> isConsistent new && m == getNodeMap new
where new = initNodeManager m
uniqueValues im = IM.size im == length (L.nub $ IM.elems im)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/graph-core-0.2.2.0/src/Test/Persistence.hs new/graph-core-0.3.0.0/src/Test/Persistence.hs
--- old/graph-core-0.2.2.0/src/Test/Persistence.hs 2015-03-31 13:40:45.000000000 +0200
+++ new/graph-core-0.3.0.0/src/Test/Persistence.hs 2016-02-04 14:11:00.000000000 +0100
@@ -5,10 +5,11 @@
import Data.Core.Graph.NodeManager
import Data.Core.Graph.Persistence
+import Test.Arbitrary
import Test.Framework
-prop_persistence :: NodeMap Char -> Graph -> Bool
-prop_persistence nodeMap graph =
+prop_persistence :: TestNodeMap Char -> Graph -> Bool
+prop_persistence (TestNodeMap nodeMap) graph =
let nodeMgr = initNodeManager nodeMap
(nodeMgr', graph') = loadGraph (persistGraph nodeMgr graph)
in (nodeMgr' == nodeMgr && graph == graph')
1
0
Hello community,
here is the log from the commit of package cpphs for openSUSE:Factory checked in at 2016-05-31 12:24:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cpphs (Old)
and /work/SRC/openSUSE:Factory/.cpphs.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cpphs"
Changes:
--------
--- /work/SRC/openSUSE:Factory/cpphs/cpphs.changes 2015-09-02 00:36:06.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.cpphs.new/cpphs.changes 2016-05-31 12:24:16.000000000 +0200
@@ -1,0 +2,11 @@
+Mon Mar 7 09:34:44 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 1.20.1
+
+-------------------------------------------------------------------
+Fri Mar 4 18:44:46 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 1.20
+* bugfixes for #if defined(FOO) && FOO(a,b)
+
+-------------------------------------------------------------------
Old:
----
cpphs-1.19.3.tar.gz
New:
----
cpphs-1.20.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cpphs.spec ++++++
--- /var/tmp/diff_new_pack.oEoEu8/_old 2016-05-31 12:24:17.000000000 +0200
+++ /var/tmp/diff_new_pack.oEoEu8/_new 2016-05-31 12:24:17.000000000 +0200
@@ -18,7 +18,7 @@
%global pkg_name cpphs
Name: cpphs
-Version: 1.19.3
+Version: 1.20.1
Release: 0
Summary: A liberalised re-implementation of cpp, the C pre-processor
License: GPL-2.0+
++++++ cpphs-1.19.3.tar.gz -> cpphs-1.20.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpphs-1.19.3/CHANGELOG new/cpphs-1.20.1/CHANGELOG
--- old/cpphs-1.19.3/CHANGELOG 2015-08-23 11:09:27.000000000 +0200
+++ new/cpphs-1.20.1/CHANGELOG 2016-03-04 10:33:47.000000000 +0100
@@ -1,3 +1,8 @@
+Version 1.20
+------------
+ * bugfixes for #if defined(FOO) && FOO(a,b)
+ * (1.20.1): fix version number
+
Version 1.19
------------
* expose more of the cpphs API
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpphs-1.19.3/Language/Preprocessor/Cpphs/CppIfdef.hs new/cpphs-1.20.1/Language/Preprocessor/Cpphs/CppIfdef.hs
--- old/cpphs-1.19.3/Language/Preprocessor/Cpphs/CppIfdef.hs 2015-08-23 11:09:26.000000000 +0200
+++ new/cpphs-1.20.1/Language/Preprocessor/Cpphs/CppIfdef.hs 2016-03-04 10:33:47.000000000 +0100
@@ -216,16 +216,22 @@
-- | Expansion of symbols.
expandSymOrCall :: SymTab HashDefine -> TextParser String
expandSymOrCall st =
- do sym <- parseSym
+ do sym <- parseSym
+ if sym=="defined" then do arg <- skip parseSym; convert sym [arg]
+ <|>
+ do arg <- skip $ parenthesis (do x <- skip parseSym;
+ skip (return x))
+ convert sym [arg]
+ <|> convert sym []
+ else
( do args <- parenthesis (commit $ fragment `sepBy` skip (isWord ","))
args' <- flip mapM args $ \arg->
case runParser (preExpand st) arg of
(Left msg, _) -> fail msg
(Right s, _) -> return s
convert sym args'
- <|>
- if (sym=="defined") then do arg <- skip parseSym; convert sym [arg]
- else convert sym [] )
+ <|> convert sym []
+ )
where
fragment = many1 (satisfy (`notElem`",)"))
convert "defined" [arg] =
@@ -238,14 +244,16 @@
convert sym args =
case lookupST sym st of
Nothing -> if null args then return sym
- else fail (disp sym args++" is not a defined macro")
+ else return "0"
+ -- else fail (disp sym args++" is not a defined macro")
Just (a@SymbolReplacement{}) -> do reparse (replacement a)
return ""
Just (a@MacroExpansion{}) -> do reparse (expandMacro a args False)
return ""
Just (a@AntiDefined{}) ->
if null args then return sym
- else fail (disp sym args++" explicitly undefined with -U")
+ else return "0"
+ -- else fail (disp sym args++" explicitly undefined with -U")
disp sym args = let len = length args
chars = map (:[]) ['a'..'z']
in sym ++ if null args then ""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpphs-1.19.3/README new/cpphs-1.20.1/README
--- old/cpphs-1.19.3/README 2015-08-23 11:09:27.000000000 +0200
+++ new/cpphs-1.20.1/README 2016-03-04 10:33:47.000000000 +0100
@@ -30,7 +30,7 @@
COPYRIGHT
---------
-Copyright (c) 2004-2015 Malcolm Wallace (Malcolm.Wallace(a)me.com)
+Copyright (c) 2004-2016 Malcolm Wallace (Malcolm.Wallace(a)me.com)
LICENCE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpphs-1.19.3/cpphs.cabal new/cpphs-1.20.1/cpphs.cabal
--- old/cpphs-1.19.3/cpphs.cabal 2015-08-23 11:09:27.000000000 +0200
+++ new/cpphs-1.20.1/cpphs.cabal 2016-03-04 10:33:47.000000000 +0100
@@ -1,6 +1,6 @@
Name: cpphs
-Version: 1.19.3
-Copyright: 2004-2015, Malcolm Wallace
+Version: 1.20.1
+Copyright: 2004-2016, Malcolm Wallace
License: LGPL
License-File: LICENCE-LGPL
Cabal-Version: >= 1.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpphs-1.19.3/cpphs.hs new/cpphs-1.20.1/cpphs.hs
--- old/cpphs-1.19.3/cpphs.hs 2015-08-23 11:09:26.000000000 +0200
+++ new/cpphs-1.20.1/cpphs.hs 2016-03-04 10:33:47.000000000 +0100
@@ -20,7 +20,7 @@
import Data.List ( isPrefixOf )
version :: String
-version = "1.19.3"
+version = "1.20.1"
main :: IO ()
main = do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpphs-1.19.3/docs/index.html new/cpphs-1.20.1/docs/index.html
--- old/cpphs-1.19.3/docs/index.html 2015-08-23 11:09:27.000000000 +0200
+++ new/cpphs-1.20.1/docs/index.html 2016-03-04 10:33:47.000000000 +0100
@@ -198,12 +198,12 @@
<b>Current stable version:</b>
<p>
-cpphs-1.19.3, release date 2015-08-23<br>
+cpphs-1.20, release date 2016-03-04<br>
By HTTP:
<a href="http://hackage.haskell.org/package/cpphs">Hackage</a>.
<ul>
-<li> bugfix for hlint ticket #161, for
- the interaction of --unlit and --linepragma options
+<li> bugfix for #if defined(FOO) && FOO(a,b)
+<li> (1.20.1) fix version number
</ul>
<p>
@@ -227,6 +227,15 @@
<b>Older versions:</b>
<p>
+cpphs-1.19.3, release date 2015-08-23<br>
+By HTTP:
+<a href="http://hackage.haskell.org/package/cpphs">Hackage</a>.
+<ul>
+<li> bugfix for hlint ticket #161, for
+ the interaction of --unlit and --linepragma options
+</ul>
+
+<p>
cpphs-1.19.2, release date 2015-07-31<br>
By HTTP:
<a href="http://hackage.haskell.org/package/cpphs">Hackage</a>.
@@ -753,7 +762,7 @@
Malcolm.Wallace(a)me.com</a>
</ul>
-<p><b>Copyright:</b> © 2004-2015 Malcolm Wallace
+<p><b>Copyright:</b> © 2004-2016 Malcolm Wallace
<p><b>License:</b> The library modules in cpphs are distributed under
the terms of the LGPL (see file <a href="LICENCE-LGPL">LICENCE-LGPL</a>
1
0
Hello community,
here is the log from the commit of package ghc-clock for openSUSE:Factory checked in at 2016-05-31 12:24:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-clock (Old)
and /work/SRC/openSUSE:Factory/.ghc-clock.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-clock"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-clock/ghc-clock.changes 2016-01-08 15:23:10.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-clock.new/ghc-clock.changes 2016-05-31 12:24:15.000000000 +0200
@@ -2 +2 @@
-Mon Dec 21 09:09:09 UTC 2015 - mimi.vx(a)gmail.com
+Fri Apr 29 08:57:13 UTC 2016 - mimi.vx(a)gmail.com
@@ -4,6 +4 @@
-- update to 0.6.0.1
-
--------------------------------------------------------------------
-Thu Dec 17 10:36:50 UTC 2015 - mimi.vx(a)gmail.com
-
-- update to 0.5.2
+- update to 0.7.2
Old:
----
clock-0.6.0.1.tar.gz
New:
----
clock-0.7.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-clock.spec ++++++
--- /var/tmp/diff_new_pack.xzRuqk/_old 2016-05-31 12:24:16.000000000 +0200
+++ /var/tmp/diff_new_pack.xzRuqk/_new 2016-05-31 12:24:16.000000000 +0200
@@ -19,7 +19,7 @@
%global pkg_name clock
Name: ghc-clock
-Version: 0.6.0.1
+Version: 0.7.2
Release: 0
Summary: High-resolution clock functions: monotonic, realtime, cputime
License: BSD-3-Clause
++++++ clock-0.6.0.1.tar.gz -> clock-0.7.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clock-0.6.0.1/System/Clock.hsc new/clock-0.7.2/System/Clock.hsc
--- old/clock-0.6.0.1/System/Clock.hsc 2015-12-15 12:42:48.000000000 +0100
+++ new/clock-0.7.2/System/Clock.hsc 2016-04-20 03:14:45.000000000 +0200
@@ -13,6 +13,8 @@
, TimeSpec(..)
, getTime
, getRes
+ , fromNanoSecs
+ , toNanoSecs
, diffTimeSpec
, timeSpecAsNanoSecs
) where
@@ -61,29 +63,30 @@
= Monotonic
-- | The identifier of the system-wide clock measuring real time. For this
- -- clock, the value returned by getTime represents the amount of time (in
+ -- clock, the value returned by 'getTime' represents the amount of time (in
-- seconds and nanoseconds) since the Epoch.
| Realtime
-- | The identifier of the CPU-time clock associated with the calling
- -- process. For this clock, the value returned by getTime represents the
+ -- process. For this clock, the value returned by 'getTime' represents the
-- amount of execution time of the current process.
| ProcessCPUTime
-- | The identifier of the CPU-time clock associated with the calling OS
- -- thread. For this clock, the value returned by getTime represents the
+ -- thread. For this clock, the value returned by 'getTime' represents the
-- amount of execution time of the current OS thread.
| ThreadCPUTime
-#if defined (linux_HOST_OS)
-
+#if defined (CLOCK_MONOTONIC_RAW)
-- | (since Linux 2.6.28; Linux-specific)
-- Similar to CLOCK_MONOTONIC, but provides access to a
-- raw hardware-based time that is not subject to NTP
-- adjustments or the incremental adjustments performed by
-- adjtime(3).
| MonotonicRaw
+#endif
+#if defined (CLOCK_BOOTTIME)
-- | (since Linux 2.6.39; Linux-specific)
-- Identical to CLOCK_MONOTONIC, except it also includes
-- any time that the system is suspended. This allows
@@ -92,17 +95,20 @@
-- CLOCK_REALTIME, which may have discontinuities if the
-- time is changed using settimeofday(2).
| Boottime
+#endif
+#if defined (CLOCK_MONOTONIC_COARSE)
-- | (since Linux 2.6.32; Linux-specific)
-- A faster but less precise version of CLOCK_MONOTONIC.
-- Use when you need very fast, but not fine-grained timestamps.
| MonotonicCoarse
+#endif
+#if defined (CLOCK_REALTIME_COARSE)
-- | (since Linux 2.6.32; Linux-specific)
-- A faster but less precise version of CLOCK_REALTIME.
-- Use when you need very fast, but not fine-grained timestamps.
| RealtimeCoarse
-
#endif
deriving (Eq, Enum, Generic, Read, Show, Typeable)
@@ -137,12 +143,23 @@
clockToConst Realtime = #const CLOCK_REALTIME
clockToConst ProcessCPUTime = #const CLOCK_PROCESS_CPUTIME_ID
clockToConst ThreadCPUTime = #const CLOCK_THREAD_CPUTIME_ID
-#if defined (linux_HOST_OS)
+
+#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
@@ -163,9 +180,9 @@
getTime ProcessCPUTime = allocaAndPeek hs_clock_win32_gettime_processtime
getTime ThreadCPUTime = allocaAndPeek hs_clock_win32_gettime_threadtime
#elif defined(__MACH__) && defined(__APPLE__)
-getTime clk = allocaAndPeek $ hs_clock_darwin_gettime $ clockToConst clk
+getTime clk = allocaAndPeek $! hs_clock_darwin_gettime $! clockToConst clk
#else
-getTime clk = allocaAndPeek $ clock_gettime $ clockToConst clk
+getTime clk = allocaAndPeek $! clock_gettime $! clockToConst clk
#endif
#if defined(_WIN32)
@@ -174,9 +191,9 @@
getRes ProcessCPUTime = allocaAndPeek hs_clock_win32_getres_processtime
getRes ThreadCPUTime = allocaAndPeek hs_clock_win32_getres_threadtime
#elif defined(__MACH__) && defined(__APPLE__)
-getRes clk = allocaAndPeek $ hs_clock_darwin_getres $ clockToConst clk
+getRes clk = allocaAndPeek $! hs_clock_darwin_getres $! clockToConst clk
#else
-getRes clk = allocaAndPeek $ clock_getres $ clockToConst clk
+getRes clk = allocaAndPeek $! clock_getres $! clockToConst clk
#endif
-- | TimeSpec structure
@@ -211,27 +228,36 @@
return $ TimeSpec (fromIntegral xs) (fromIntegral xn)
#endif
+s2ns :: Num a => a
+s2ns = 10^9
+
normalize :: TimeSpec -> TimeSpec
-normalize (TimeSpec xs xn) | xn < 0 || xn >= 10^9 = TimeSpec (xs + q) r
+normalize (TimeSpec xs xn) | xn < 0 || xn >= s2ns = TimeSpec (xs + q) r
| otherwise = TimeSpec xs xn
- where (q, r) = xn `divMod` (10^9)
+ where (q, r) = xn `divMod` s2ns
instance Num TimeSpec where
(TimeSpec xs xn) + (TimeSpec ys yn) = normalize $! TimeSpec (xs + ys) (xn + yn)
(TimeSpec xs xn) - (TimeSpec ys yn) = normalize $! TimeSpec (xs - ys) (xn - yn)
- (TimeSpec xs xn) * (TimeSpec ys yn) =
- let xsi = toInteger xs -- convert to arbitraty Integer type to avoid int overflow
- xni = toInteger xn
- ysi = toInteger ys
- yni = toInteger yn -- seconds -- nanoseconds
- in normalize $! TimeSpec (fromInteger $! xsi * ysi) (fromInteger $! (xni * yni + (xni * ysi + xsi * yni) * (10^9)) `div` (10^9))
- negate (TimeSpec xs xn) =
- normalize $ TimeSpec (negate xs) (negate xn)
+ (TimeSpec xs xn) * (TimeSpec ys yn) = normalize $! TimeSpec (xsi_ysi) (xni_yni)
+ where xsi_ysi = fromInteger $! xsi*ysi
+ xni_yni = fromInteger $! (xni*yni + (xni*ysi + xsi*yni) * s2ns) `div` s2ns
+ xsi = toInteger xs
+ ysi = toInteger ys
+ xni = toInteger xn
+ yni = toInteger yn
+-- let xsi = toInteger xs -- convert to arbitraty Integer type to avoid int overflow
+-- xni = toInteger xn
+-- ysi = toInteger ys
+-- yni = toInteger yn -- seconds -- nanoseconds
+-- in normalize $! TimeSpec (fromInteger $! xsi * ysi) (fromInteger $! (xni * yni + (xni * ysi + xsi * yni) * s2ns) `div` s2ns)
+
+ negate (TimeSpec xs xn) = normalize $! TimeSpec (negate xs) (negate xn)
abs (normalize -> TimeSpec xs xn) | xs == 0 = normalize $! TimeSpec 0 xn
| otherwise = normalize $! TimeSpec (abs xs) (signum xs * xn)
signum (normalize -> TimeSpec xs xn) | xs == 0 = TimeSpec (signum xn) 0
| otherwise = TimeSpec (signum xs) 0
---fromInteger x = TimeSpec (fromInteger q) (fromInteger r) where (q, r) = x `divMod` (10^9)
+ fromInteger x = TimeSpec (fromInteger q) (fromInteger r) where (q, r) = x `divMod` s2ns
instance Eq TimeSpec where
(normalize -> TimeSpec xs xn) == (normalize -> TimeSpec ys yn) | True == es = xn == yn
@@ -243,10 +269,20 @@
| otherwise = os
where os = compare xs ys
+-- | TimeSpec from nano seconds.
+fromNanoSecs :: Integer -> TimeSpec
+fromNanoSecs x = TimeSpec (fromInteger q) (fromInteger r) where (q, r) = x `divMod` s2ns
+
+
+-- | TimeSpec to nano seconds.
+toNanoSecs :: TimeSpec -> Integer
+toNanoSecs (TimeSpec (toInteger -> s) (toInteger -> n)) = s * s2ns + n
+
-- | Compute the absolute difference.
diffTimeSpec :: TimeSpec -> TimeSpec -> TimeSpec
diffTimeSpec ts1 ts2 = abs (ts1 - ts2)
+{-# DEPRECATED timeSpecAsNanoSecs "Use toNanoSecs instead! Replaced timeSpecAsNanoSecs with the same signature TimeSpec -> Integer" #-}
-- | TimeSpec as nano seconds.
timeSpecAsNanoSecs :: TimeSpec -> Integer
-timeSpecAsNanoSecs t = toInteger (sec t) * (10^9) + toInteger (nsec t)
\ No newline at end of file
+timeSpecAsNanoSecs (TimeSpec s n) = toInteger s * s2ns + toInteger n
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clock-0.6.0.1/clock.cabal new/clock-0.7.2/clock.cabal
--- old/clock-0.6.0.1/clock.cabal 2015-12-15 12:42:48.000000000 +0100
+++ new/clock-0.7.2/clock.cabal 2016-04-20 03:14:45.000000000 +0200
@@ -1,5 +1,5 @@
name: clock
-version: 0.6.0.1
+version: 0.7.2
stability: stable
synopsis: High-resolution clock functions: monotonic, realtime, cputime.
description: A package for convenient access to high-resolution clock and
@@ -29,12 +29,16 @@
.
New Linux-specific Clocks: MonotonicRaw, Boottime, MonotonicCoarse, RealtimeCoarse by Cetin Sert on 2015-12-15.
.
+ Reintroduction fromInteger : Integer -> TimeSpec by Cetin Sert on 2016-04-05.
+ .
+ Fixes for older Linux build failures introduced by new Linux-specific clocks by Mario Longobardi on 2016-04-18.
+ .
[Version Scheme]
Major-@/R/@-ewrite . New-@/F/@-unctionality . @/I/@-mprovementAndBugFixes . @/P/@-ackagingOnly
.
* @PackagingOnly@ changes are made for quality assurance reasons.
-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
+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 <cetin(a)corsis.eu>, Corsis Research
1
0
Hello community,
here is the log from the commit of package ghc-cgi for openSUSE:Factory checked in at 2016-05-31 12:24:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-cgi (Old)
and /work/SRC/openSUSE:Factory/.ghc-cgi.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-cgi"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-cgi/ghc-cgi.changes 2016-01-28 17:24:34.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-cgi.new/ghc-cgi.changes 2016-05-31 12:24:14.000000000 +0200
@@ -1,0 +2,17 @@
+Sun Apr 10 18:50:21 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 3001.3.0.1
+* Bumped doctest to version < 0.12
+
+-------------------------------------------------------------------
+Mon Mar 7 08:50:52 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 3001.3.0.0
+- remove uselees _service
+* Cookie.hs: cookieExpires now has type `Maybe UTCTime` rather than
+ `Maybe CalendarTime`
+* Protocol.hs: URL decoding functions no longer decode UTF-8 encoding
+* Functor and Applicative instance of CGIT no longer constrain Functor or
+ Applicative parameter to be an instance of Monad
+
+-------------------------------------------------------------------
Old:
----
_service
cgi-3001.2.2.3.tar.gz
New:
----
cgi-3001.3.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-cgi.spec ++++++
--- /var/tmp/diff_new_pack.G4cbMA/_old 2016-05-31 12:24:15.000000000 +0200
+++ /var/tmp/diff_new_pack.G4cbMA/_new 2016-05-31 12:24:15.000000000 +0200
@@ -18,7 +18,7 @@
%global pkg_name cgi
Name: ghc-cgi
-Version: 3001.2.2.3
+Version: 3001.3.0.1
Release: 0
Summary: A library for writing CGI programs
Group: System/Libraries
@@ -38,8 +38,7 @@
BuildRequires: ghc-multipart-devel
BuildRequires: ghc-network-devel
BuildRequires: ghc-network-uri-devel
-BuildRequires: ghc-old-locale-devel
-BuildRequires: ghc-old-time-devel
+BuildRequires: ghc-time-devel
BuildRequires: ghc-parsec-devel
BuildRequires: ghc-xhtml-devel
# End cabal-rpm deps
++++++ cgi-3001.2.2.3.tar.gz -> cgi-3001.3.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cgi-3001.2.2.3/CHANGELOG.md new/cgi-3001.3.0.1/CHANGELOG.md
--- old/cgi-3001.2.2.3/CHANGELOG.md 1970-01-01 01:00:00.000000000 +0100
+++ new/cgi-3001.3.0.1/CHANGELOG.md 2016-04-09 20:05:04.000000000 +0200
@@ -0,0 +1,59 @@
+# Change Log
+All notable changes to this project will be documented in this file.
+This project adheres to the [Package Versioning Policy](https://wiki.haskell.org/Package_versioning_policy).
+
+## [3001.3.0.1]
+### Changed
+- Bumped doctest to version < 0.12
+
+## [3001.3.0.0]
+### Changed
+- Cookie.hs: cookieExpires now has type `Maybe UTCTime` rather than
+`Maybe CalendarTime`
+- Protocol.hs: URL decoding functions no longer decode UTF-8 encoding
+- Functor and Applicative instance of CGIT no longer constrain Functor or
+Applicative parameter to be an instance of Monad
+
+## [3001.2.2.3]
+### Changed
+* CGI.hs haddock: Use web.archive.org link for CGI specification
+
+## [3001.2.2.2]
+### Changed
+- Added support for building with mtl < 2.2.1 via flags
+
+## [3001.2.2.1]
+### Changed
+- Bumped exceptions version to < 0.9
+
+## [3001.2.2.0]
+### Added
+- MonadMask instance for CGIT
+
+## [3001.2.1.0]
+### Added
+- Applicative instance for CGI Monad
+
+### Changed
+- Deduplicate shared with `multipart` code
+
+## 3001.2.0.0
+### Changed
+- GHC 7.8.3 support
+
+[Unreleased]:
+https://github.com/cheecheeo/haskell-cgi/compare/3001.3.0.1...HEAD
+[3001.3.0.1]:
+https://github.com/cheecheeo/haskell-cgi/compare/3001.3.0.0...3001.3.0.1
+[3001.3.0.0]:
+https://github.com/cheecheeo/haskell-cgi/compare/3001.2.2.3...3001.3.0.0
+[3001.2.2.3]:
+https://github.com/cheecheeo/haskell-cgi/compare/3001.2.2.2...3001.2.2.3
+[3001.2.2.2]:
+https://github.com/cheecheeo/haskell-cgi/compare/3001.2.2.1...3001.2.2.2
+[3001.2.2.1]:
+https://github.com/cheecheeo/haskell-cgi/compare/3001.2.2.0...3001.2.2.1
+[3001.2.2.0]:
+https://github.com/cheecheeo/haskell-cgi/compare/3001.2.1.0...3001.2.2.0
+[3001.2.1.0]:
+https://github.com/cheecheeo/haskell-cgi/compare/3001.2.0.0...3001.2.1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cgi-3001.2.2.3/Network/CGI/Cookie.hs new/cgi-3001.3.0.1/Network/CGI/Cookie.hs
--- old/cgi-3001.2.2.3/Network/CGI/Cookie.hs 2016-01-20 08:43:22.000000000 +0100
+++ new/cgi-3001.3.0.1/Network/CGI/Cookie.hs 2016-04-09 20:05:04.000000000 +0200
@@ -29,9 +29,9 @@
import Data.Char (isSpace)
import Data.List (intersperse)
import Data.Maybe (catMaybes)
-import System.Locale (defaultTimeLocale, rfc822DateFormat)
-import System.Time (CalendarTime(..), Month(..), Day(..),
- formatCalendarTime)
+import Data.Time.Calendar (Day(..))
+import Data.Time.Clock (UTCTime(..))
+import Data.Time.Format (defaultTimeLocale, formatTime, rfc822DateFormat)
--
-- * Types
@@ -47,7 +47,7 @@
-- cookie expires when the browser sessions ends.
-- If the date is in the past, the client should
-- delete the cookie immediately.
- cookieExpires :: Maybe CalendarTime,
+ cookieExpires :: Maybe UTCTime,
-- | The domain suffix to which this cookie will be sent.
cookieDomain :: Maybe String,
-- | The path to which this cookie will be sent.
@@ -96,20 +96,7 @@
-> Cookie
deleteCookie c = c { cookieExpires = Just epoch }
where
- epoch = CalendarTime {
- ctYear = 1970,
- ctMonth = January,
- ctDay = 1,
- ctHour = 0,
- ctMin = 0,
- ctSec = 0,
- ctPicosec = 0,
- ctWDay = Thursday,
- ctYDay = 1,
- ctTZName = "GMT",
- ctTZ = 0,
- ctIsDST = False
- }
+ epoch = UTCTime (ModifiedJulianDay 40587) 0
--
-- * Reading and showing cookies
@@ -124,7 +111,7 @@
domain = fmap (showPair "domain") (cookieDomain c)
path = fmap (showPair "path") (cookiePath c)
secure = if cookieSecure c then Just "secure" else Nothing
- dateFmt = formatCalendarTime defaultTimeLocale rfc822DateFormat
+ dateFmt = formatTime defaultTimeLocale rfc822DateFormat
-- | Show a name-value pair. FIXME: if the name or value
-- contains semicolons, this breaks. The problem
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cgi-3001.2.2.3/Network/CGI/Monad.hs new/cgi-3001.3.0.1/Network/CGI/Monad.hs
--- old/cgi-3001.2.2.3/Network/CGI/Monad.hs 2016-01-20 08:43:22.000000000 +0100
+++ new/cgi-3001.3.0.1/Network/CGI/Monad.hs 2016-04-09 20:05:04.000000000 +0200
@@ -65,10 +65,10 @@
[typeOf1 (undefined :: m a), typeOf (undefined :: a)]
#endif
-instance (Functor m, Monad m) => Functor (CGIT m) where
+instance (Functor m) => Functor (CGIT m) where
fmap f c = CGIT (fmap f (unCGIT c))
-instance (Applicative m, Monad m) => Applicative (CGIT m) where
+instance (Applicative m) => Applicative (CGIT m) where
pure = CGIT . pure
f <*> x = CGIT (unCGIT f <*> unCGIT x)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cgi-3001.2.2.3/Network/CGI/Protocol.hs new/cgi-3001.3.0.1/Network/CGI/Protocol.hs
--- old/cgi-3001.2.2.3/Network/CGI/Protocol.hs 2016-01-20 08:43:22.000000000 +0100
+++ new/cgi-3001.3.0.1/Network/CGI/Protocol.hs 2016-04-09 20:05:04.000000000 +0200
@@ -33,11 +33,12 @@
) where
import Control.Monad.Trans (MonadIO(..))
+import Data.Char (chr, isHexDigit, digitToInt)
import Data.List (intersperse)
import qualified Data.Map as Map
import Data.Map (Map)
import Data.Maybe (fromMaybe, listToMaybe, isJust)
-import Network.URI (unEscapeString,escapeURIString,isUnescapedInURI)
+import Network.URI (escapeURIString,isUnescapedInURI)
import System.Environment (getEnvironment)
import System.IO (Handle, hPutStrLn, stderr, hFlush, hSetBinaryMode)
@@ -175,7 +176,7 @@
-- | The default content-type for variables.
defaultInputType :: ContentType
-defaultInputType = ContentType "text" "plain" [] -- FIXME: use some default encoding?
+defaultInputType = ContentType "text" "plain" [("charset","windows-1252")]
--
-- * Environment variables
@@ -237,6 +238,16 @@
urlDecode :: String -> String
urlDecode = unEscapeString . replace '+' ' '
+-- | Unescape a percent-encoded string, but doesn't decode UTF-8 encoding.
+--
+-- >>> unEscapeString "Hell%C3%B3 w%C3%B3rld"
+-- "Hell\195\179 w\195\179rld"
+unEscapeString :: String -> String
+unEscapeString [] = ""
+unEscapeString ('%':x1:x2:s) | isHexDigit x1 && isHexDigit x2 =
+ chr (digitToInt x1 * 16 + digitToInt x2) : unEscapeString s
+unEscapeString (c:s) = c : unEscapeString s
+
--
-- * Request content and form-data stuff
--
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cgi-3001.2.2.3/cgi.cabal new/cgi-3001.3.0.1/cgi.cabal
--- old/cgi-3001.2.2.3/cgi.cabal 2016-01-20 08:43:22.000000000 +0100
+++ new/cgi-3001.3.0.1/cgi.cabal 2016-04-09 20:05:04.000000000 +0200
@@ -1,5 +1,5 @@
Name: cgi
-Version: 3001.2.2.3
+Version: 3001.3.0.1
Copyright: Bjorn Bringert, John Chee, Andy Gill, Anders Kaseorg,
Ian Lynagh, Erik Meijer, Sven Panne, Jeremy Shaw
Category: Network
@@ -13,8 +13,8 @@
Description:
This is a Haskell library for writing CGI programs.
Build-Type: Simple
-extra-source-files: changelog
-Cabal-Version: >=1.6
+extra-source-files: CHANGELOG.md
+Cabal-Version: >=1.8
source-repository head
type: git
@@ -48,8 +48,7 @@
xhtml >= 3000.0.0 && < 3000.3,
bytestring < 0.11,
base >= 4.5 && < 5,
- old-time < 1.2,
- old-locale < 1.1,
+ time >= 1.5 && < 1.7,
containers < 0.6,
multipart >= 0.1.2 && < 0.2
If flag(network-uri)
@@ -63,6 +62,19 @@
Build-depends:
mtl>=2.2.1 && < 2.3
+test-suite doctests
+ type: exitcode-stdio-1.0
+ ghc-options: -threaded
+ main-is: DocTestMain.hs
+ other-modules:
+ DocTest
+ hs-source-dirs: src
+ ghc-options: -Wall
+ build-depends:
+ base
+ , doctest >= 0.8 && < 0.12
+ , QuickCheck >= 2.8.1 && < 2.9
+
--Executable: printinput
--Main-Is: printinput.hs
--Hs-Source-Dir: examples
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cgi-3001.2.2.3/changelog new/cgi-3001.3.0.1/changelog
--- old/cgi-3001.2.2.3/changelog 2016-01-20 08:43:22.000000000 +0100
+++ new/cgi-3001.3.0.1/changelog 1970-01-01 01:00:00.000000000 +0100
@@ -1,27 +0,0 @@
-3001.2.2.3
-
-### Changed
-* CGI.hs haddock: Use web.archive.org link for CGI specification
-
-3001.2.2.2
-
-### Changed
-* Added support for building with mtl < 2.2.1 via flags
-
-3001.2.2.1
-
-### Changed
-* Bumped exceptions version to < 0.9
-
-3001.2.2.0
-
-* MonadMask instance for CGIT
-
-3001.2.1.0
-
-* Applicative instance for CGI Monad
-* Deduplicate shared with `multipart` code
-
-3001.2.0.0
-
-* GHC 7.8.3 support
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cgi-3001.2.2.3/src/DocTest.hs new/cgi-3001.3.0.1/src/DocTest.hs
--- old/cgi-3001.2.2.3/src/DocTest.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/cgi-3001.3.0.1/src/DocTest.hs 2016-04-09 20:05:04.000000000 +0200
@@ -0,0 +1,7 @@
+module DocTest (
+ test
+ ) where
+import Test.DocTest
+
+test :: IO ()
+test = doctest ["-iNetwork", "Network/CGI/Protocol.hs"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cgi-3001.2.2.3/src/DocTestMain.hs new/cgi-3001.3.0.1/src/DocTestMain.hs
--- old/cgi-3001.2.2.3/src/DocTestMain.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/cgi-3001.3.0.1/src/DocTestMain.hs 2016-04-09 20:05:04.000000000 +0200
@@ -0,0 +1,8 @@
+module Main (
+ main
+ ) where
+
+import qualified DocTest
+
+main :: IO ()
+main = DocTest.test
1
0