packages feed

deepseq-bounded 0.7.0.1 → 0.7.0.2

raw patch · 6 files changed

+139/−41 lines, 6 filesdep +cpphsdep ~deepseqPVP ok

version bump matches the API change (PVP)

Dependencies added: cpphs

Dependency ranges changed: deepseq

API changes (from Hackage documentation)

Files

HTML/grammar.html view
@@ -37,10 +37,10 @@  <h3 style="margin-top: 50px;">Grammar for <tt class="virgin" style="font-size: 90%;">Control.DeepSeq.Bounded.Pattern</tt> Language</h3> -<p style="margin-top: 16px;">+<!--p style="margin-top: 16px;"> <div style="color: #F33; font-size: 80%;"> This change is in 0.6.&nbsp;&nbsp;All related online documents<br />have been revised to use the <em>new</em> grammar.-</div>+</div-->  <p style="margin-top: 16px;"> The current grammar for the deepseq-bounded <tt>Pattern</tt> DSL is:
changelog.txt view
@@ -1,4 +1,10 @@ +0.7.0.1 -> 0.7.0.2+ - still trying to decide on policy regarding cpphs+ - this is all motivated by one pesky rogue anonymous build spammer+ - had a spot of trouble over this, but learned a few tricks+ - hopefully this upload is the ticket; sorry for the extra version uploads+ 0.7.0.0 -> 0.7.0.1  - documentation touch-ups, mostly  - truncatePat did actually have an API-breaking change here (sorry!
+ cpphs.sh view
@@ -0,0 +1,37 @@+#!/usr/bin/env bash++# (Hopefully that works on mingw32.)++## #!/bin/sh++# This is mostly to get rid of rogue failed build reports.+# Not my fault I have to make things ugly to fix mistakes of+# others (build reporters with misconfigured environemnts; and+# hackage, for allowing this to smear a perfectly good library+# by displaying the report so prominently, and making it+# impossible for the maintainer to get rid of it or even+# add an annotation).  I could have been doing something+# constructive with this time.++env PATH=$PATH:$HOME/.cabal/bin:.cabal-sandbox/bin:/home/builder/hackage-server/build-cache/tmp-install/bin cpphs --cpp $*++if [ 0 ]; then++if [ -f .cabal-sandbox/bin/cpphs ]; then+  # Building in a sandbox, you want the sandbox's cpphs:+  .cabal-sandbox/bin/cpphs --cpp $*+elif [ $(which cpphs) ]; then+  # Either cpphs was already on your path, or it was just installed and+  # is seen on your path -- use this one:+  cpphs --cpp $*+elif [ -f $HOME/.cabal/bin/cpphs ]; then+  $HOME/.cabal/bin/cpphs --cpp $*+elif [ $(which cpp) ]; then+  cpp $*+else+  echo 'ERROR: Neither cpphs nor cpp could be found!'+  exit 1+fi++fi+
deepseq-bounded.cabal view
@@ -2,7 +2,7 @@ -------------------------------------------------------------------------------  name:		deepseq-bounded-version:        0.7.0.1+version:        0.7.0.2 synopsis:       Bounded deepseq, including support for generic deriving license:	BSD3 license-file:	LICENSE@@ -57,7 +57,7 @@     and <http://hackage.haskell.org/package/deepseq-bounded-0.7.0.0/docs/Control-DeepSeq-Bounded-Seqable.html Seqable> modules) may justify renaming this library to     something which encompasses both strictness and parallelism aspects.     .-    / NOTE: Versions >=0.6.* are substantially different from the original (now deprecated) 0.5.* release, particularly as regards NFDataP. /+    / NOTE: Versions >=0.6 are substantially different from the original (now deprecated) 0.5.* releases, particularly as regards NFDataP. /  extra-source-files:       README@@ -69,6 +69,7 @@     , deepseq-bounded-seqaid-leaky.html     , deepseq-bounded-seqaid-leaky.css     , cafe-and-glasgow-users-0.6.txt+    , cpphs.sh  -- source-repository head --   type:     git@@ -182,12 +183,6 @@   Default: False   Manual: True -Flag PROVIDE_OLD_SHRINK_PAT-  Description: Provide shrinkPat_old temporarily, for compatibility of seqaid demo output with documents already written. This flag (and the shrinkPat_old function) will probably be removed in 0.7.-  Default: True---Default: False-  Manual: True- Flag USE_WW_DEEPSEQ   Description: Depend on deepseq and deepseq-generics, to provide conditional deep forcing. This is optional.   Default: True@@ -215,18 +210,28 @@ -- This does indeed work for me (it is auto-toggled when cpphs is unavailable). -- Default to False, since it seems more likely there's a native cpp, than -- that a cpphs installation works smoothly.+-- Later: Defaulting to True, since found some tricks...+-- (Not even going to let this be manual:false anymore.) Flag USE_CPPHS   Description: Non-manual flag to allow the build system to try cpphs first, and if that fails, then to try system-wide cpp (typically GNU). I've actually toggled the default, so the build system will try for a system-wide cpp first, and failing that, will try to use cpphs, installing it if necessary. I prefer cpp. I am not getting my most invaluable -Wundef option with cpphs using -optP-Wundef -optP--cpp in my ghc-options. Does cpphs implement it? Not sure...-  Default: False---Default: True-  Manual: False+--Default: False+  Default: True+--Manual: False+  Manual: True  -------------------------------------------------------------------------------  library { -  if flag(USE_CPPHS)-     build-tools: cpphs+-- I feel like declaring this is only asking for more trouble;+-- cpphs installs because it's mentioned as a dependency, and+-- that does install both the library and the executable.+---------+--   build-tools: cpphs  +--   -- (This seems /not/ to work, since, when USE_CPPHS is default:false,+--   -- cpphs is still mentioned in the hackage deps.)+-- --if flag(USE_CPPHS)+-- --   build-tools: cpphs    hs-source-dirs: src @@ -270,14 +275,6 @@           , Control.DeepSeq.Bounded.Generic.GSeqable           , Control.DeepSeq.Bounded.NFDataPDyn -  ghc-options: -optP-Wundef -fno-warn-overlapping-patterns--  if flag(USE_CPPHS)-     ghc-options: -pgmPcpphs -optP--cpp---else---   ghc-options: -cpp---ghc-options: -pgmP/usr/bin/cpp- --ghc-options:         -Wall -fenable-rewrite-rules    -ddump-rules -ddump-simpl-stats -ddump-rule-firings --ghc-options:         -Wall -fenable-rewrite-rules   ghc-options:         -fenable-rewrite-rules   @@ -285,6 +282,24 @@    ghc-options:         -fno-warn-duplicate-exports +  ghc-options: -optP-Wundef -fno-warn-overlapping-patterns++  -- -ags+ 20150202+--cpp-options: PATH=$PATH:.cabal-sandbox/bin:$HOME/.cabal/bin:/home/builder/hackage-server/build-cache/tmp-install/bin cpphs+--cpp-options: PATH={$PATH}:{$HOME}/.cabal/bin:.cabal-sandbox/bin:/home/builder/hackage-server/build-cache/tmp-install/bin cpphs+--cpp-options: PATH=${PATH}:${HOME}/.cabal/bin:.cabal-sandbox/bin:/home/builder/hackage-server/build-cache/tmp-install/bin cpphs+--cpp-options: PATH=$PATH:~/.cabal/bin:.cabal-sandbox/bin:/home/builder/hackage-server/build-cache/tmp-install/bin cpphs+--cpp-options: PATH=$PATH:~/.cabal/bin:.cabal-sandbox/bin:/home/builder/hackage-server/build-cache/tmp-install/bin cpphs --cpp++  if flag(USE_CPPHS)+     ghc-options: -pgmP./cpphs.sh+     -- -ags+ 20150202+--   ghc-options: -pgmPenv -optP--cpp+--   ghc-options: -pgmPenv+--else+--   ghc-options: -cpp+--ghc-options: -pgmP/usr/bin/cpp+   build-depends:        base == 4.*@@ -298,12 +313,12 @@ --  , mtl == 2.1.3.1     , mtl == 2.1.* ----- We don't really depend on the cpphs /library/, but installing----- the library also installs the cpphs executable, so in case----- build-tools doesn't nab it, this ought to!---if flag(USE_CPPHS)---   build-depends:---       cpphs >= 1.14+-- We don't really depend on the cpphs /library/, but installing+-- the library also installs the cpphs executable, so in case+-- build-tools doesn't nab it, this ought to!+  if flag(USE_CPPHS)+     build-depends:+         cpphs >= 1.14    if ! flag(HASKELL98_FRAGMENT)      build-depends:@@ -465,8 +480,15 @@  test-suite deepseq-bounded-tests { -  if flag(USE_CPPHS)-     build-tools: cpphs+-- I feel like declaring this is only asking for more trouble;+-- cpphs installs because it's mentioned as a dependency, and+-- that does install both the library and the executable.+---------+--   build-tools: cpphs  +--   -- (This seems /not/ to work, since, when USE_CPPHS is default:false,+--   -- cpphs is still mentioned in the hackage deps.)+-- --if flag(USE_CPPHS)+-- --   build-tools: cpphs    if flag(HASKELL98_FRAGMENT)     default-language: Haskell98@@ -474,9 +496,10 @@     default-language: Haskell2010    type:                exitcode-stdio-1.0+   hs-source-dirs:      tests+   main-is:             Suite.hs-  default-extensions:  CPP    other-modules:       Tests, Foo   if flag(HASKELL98_FRAGMENT)@@ -484,18 +507,31 @@   else      other-modules:       Blah, Bottom, FooG -  ghc-options: -optP-Wundef -fno-warn-overlapping-patterns+  default-extensions:  CPP -  if flag(USE_CPPHS)-     ghc-options: -pgmPcpphs -optP--cpp---else---   ghc-options: -cpp+  ghc-options: -optP-Wundef -fno-warn-overlapping-patterns  --ghc-options:         -Wall -fenable-rewrite-rules -O -ddump-rules -ddump-simpl-stats -ddump-rule-firings --ghc-options:         -Wall -fenable-rewrite-rules -O --ghc-options:         -fenable-rewrite-rules -O --ghc-options:         -fenable-rewrite-rules -O2 +  -- -ags+ 20150202+--cpp-options: PATH=$PATH:.cabal-sandbox/bin:$HOME/.cabal/bin:/home/builder/hackage-server/build-cache/tmp-install/bin cpphs+--cpp-options: "PATH=${PATH}:${HOME}/.cabal/bin:.cabal-sandbox/bin:/home/builder/hackage-server/build-cache/tmp-install/bin" cpphs+--cpp-options: PATH=$PATH:~/.cabal/bin:.cabal-sandbox/bin:/home/builder/hackage-server/build-cache/tmp-install/bin cpphs+--cpp-options: PATH=$PATH:~/.cabal/bin:.cabal-sandbox/bin:/home/builder/hackage-server/build-cache/tmp-install/bin cpphs --cpp++  if flag(USE_CPPHS)+     ghc-options: -pgmP./cpphs.sh+     -- -ags+ 20150202+--   ghc-options: -pgmPenv+--   ghc-options: -pgmPenv -optP--cpp+--else+--   ghc-options: -cpp+--ghc-options: -pgmP/usr/bin/cpp+---  ghc-options: -pgmPcpphs -optP--cpp+   build-depends:       base == 4.* @@ -509,9 +545,9 @@ ---- We don't really depend on the cpphs /library/, but installing ---- the library also installs the cpphs executable, so in case ---- build-tools doesn't nab it, this ought to!---if flag(USE_CPPHS)---   build-depends:---       cpphs >= 1.14+  if flag(USE_CPPHS)+     build-depends:+         cpphs >= 1.14    if ! flag(HASKELL98_FRAGMENT)      build-depends:
src/Control/DeepSeq/Bounded/PatUtil.hs view
@@ -985,9 +985,20 @@   growPat pat x = growPat' pat $ shapeOf x   growPat' :: Pattern -> Shape -> Pattern   growPat' (Node pas cs) (Node q ds)+#if 1+   | null cs    = let subleaf = Node (WI $ getPatNodeAttrs pas) [] in+                       let pas2 = WR $ getPatNodeAttrs pas in+                            Node pas2 $ map (const subleaf) ds+#else    | null cs    = let subleaf = Node (WI $ getPatNodeAttrs pas) []+#if 1+                      pas2 = WR $ getPatNodeAttrs pas in+                        Node pas2 $ map (const subleaf) ds+#else                       pas' = WR $ getPatNodeAttrs pas                   in Node pas' $ map (const subleaf) ds+#endif+#endif    | otherwise  = Node pas $ zipWith growPat' cs ds #endif 
src/Control/DeepSeq/Bounded/Pattern.hs view
@@ -385,6 +385,14 @@   -- @\'.\'@, @\'!\'@, @\'(\'@ or @\'*\'@   -- pattern node designator).   -- Prefix modifiers may be given in any order.+  --+  -- / NOTE: The 'depth' field in 'PatNodeAttrs' is not really an attribute, /+  -- / it is logically a (mandatory) extra parameter to 'WN' and 'TN' /+  -- / nodes (and only those).  (Whereas attributes are all optional /+  -- / and node-type-agnostic.)  The 'depth' is stored here as a /+  -- / convenient hack only!  Explanation becomes necessary since /+  -- / Haddock makes it visible no matter what, I mention this, in case /+  -- / of confusion, because the 'depth' is always __post__fix, not prefix. /   --  {--}   -- XXX Is there any particular reason these fields should be marked strict?@@ -393,7 +401,7 @@   data PatNodeAttrs          = PatNodeAttrs {                uniqueID :: !Int              -- ^ Optional for convenience; set up with 'setPatternPatNodeUniqueIDs'. Beware that this function is not called automatically (or if it happens to be at the moment, this behaviour shouldn't be relied upon). For example, if you were to call <http://hackage.haskell.org/package/deepseq-bounded-0.7.0.1/docs/Control-DeepSeq-Bounded-PatUtil.html#v:growPat growPat>, the added nodes would all have \"uniqueID\" of 0.-             , depth :: !Int                 -- ^ (__*__/n/) &#8195; Depth of forcing for 'WN' and 'TN' nodes (/n/ is decimal integer depth).+             , depth :: !Int                 -- ^ (__*__/n/) &#8195; Depth of forcing for 'WN' and 'TN' nodes (/n/ is decimal integer depth). /(This is not an attribute, it's a displaced mandatory parameter, specific to these two node types.)/              , doConstrainType :: !Bool      -- ^ (__:__) &#8195; Constrain pattern to match only types named in 'typeConstraints'. /__XXX__ This should be considered experimental still in 0.6. This and the "NFDataPDyn" aspects lost attention to/ <http://hackage.haskell.org/package/seqaid seqaid>.              , typeConstraints :: ![String]  -- ^ The list of type rep strings used in the type constraint (when 'doConstrainType' is 'True').              , doDelay :: !Bool              -- ^ (__@__) &#8195; Delay (current thread) for 'delayus' microseconds. /__XXX__ Still buggy?/