Update `hoopl.cabal` to `cabal-version>=1.10`
authorHerbert Valerio Riedel <hvr@gnu.org>
Fri, 25 Oct 2013 06:51:47 +0000 (08:51 +0200)
committerHerbert Valerio Riedel <hvr@gnu.org>
Fri, 25 Oct 2013 06:55:38 +0000 (08:55 +0200)
...also renames `CHANGES` to `changelog` so Hackage can display it, and
adds an entry for 3.9.0.0

Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
changelog [moved from CHANGES with 65% similarity]
hoopl.cabal

similarity index 65%
rename from CHANGES
rename to changelog
index 8fedff9..6492799 100644 (file)
--- a/CHANGES
+++ b/changelog
@@ -1,3 +1,101 @@
+
+3.9.0.0
+
+   - Lots of API changes; mainly a new API for working with Blocks
+
+  Summary of refactorings:
+
+   - Compiler.Hoopl.Block contains the Block datatype and all the
+     operations on Blocks.  It seemed like a good idea to collect all
+     this stuff together in one place.
+
+   - Compiler.Hoopl.Graph now has the operations on Graphs.
+
+   - Compiler.Hoopl.Util and Compiler.Hoopl.GraphUtil are no more; their
+     contents have been moved to other homes.  (and a bit of duplicated
+     functionality has been removed).
+
+   - I removed the newtypes around Unique and Label, these are now just
+     type synonyms.  The newtype wrappers were costing some performance in
+     GHC, because in cases like mapToList the newtype isn't optimised away.
+
+     This change might be controversial.  Feel free to complain.
+
+  Other changes:
+
+   - Optimisations to the Dataflow algorithms.  I'm not actually using
+     this implementation of Dataflow in GHC any more, instead I have a
+     local copy specialised to our monad, for speed.  Nevertheless I've
+     put some of the optimisations I'm using in the GHC version into the
+     generic library version too.
+
+  Summary of API changes:
+
+  ADDED
+
+   - IsMap(mapInsertWith, mapFromListWith)
+
+   - mapGraphBlocks
+     (was previously called graphMapBlocks, and not exported)
+
+   - mapBlock'
+     (strict version of mapBlock)
+
+   - New API for working with Blocks:
+
+      -- ** Predicates on Blocks
+    , isEmptyBlock
+
+      -- ** Constructing blocks
+    , emptyBlock, blockCons, blockSnoc
+    , blockJoinHead, blockJoinTail, blockJoin, blockJoinAny
+    , blockAppend
+
+      -- ** Deconstructing blocks
+    , firstNode, lastNode, endNodes
+    , blockSplitHead, blockSplitTail, blockSplit, blockSplitAny
+
+      -- ** Modifying blocks
+    , replaceFirstNode, replaceLastNode
+
+      -- ** Converting to and from lists
+    , blockToList, blockFromList
+
+      -- ** Maps and folds
+    , mapBlock, mapBlock', mapBlock3'
+    , foldBlockNodesF, foldBlockNodesF3
+    , foldBlockNodesB, foldBlockNodesB3
+
+  REMOVED
+
+   - mapMaybeO, mapMaybeC
+     (no need: we have Functor instances)
+
+   - Block constructors are no longer exported
+     (use the block API instead)
+
+   - blockToNodeList, blockToNodeList', blockToNodeList'', blockToNodeList'''
+     (use the block API instead)
+
+   - tfFoldBlock, ScottBlock, scottFoldBlock, fbnf3,
+     BlockResult(..), lookupBlock,
+     (I don't know what any of these are for, if they're still important
+     we could reinstate)
+
+  CHANGED
+
+   - Compiler.Hoopl.GHC is now Compiler.Hoopl.Internals and exports some
+     more stuff.
+
+   - Label is not a newtype; type Label = Unique
+   - Unique is not a newtype: type Unique = Int
+     (these newtypes were adding overhead)
+
+   - blockMapNodes3 is now mapBlock3'
+
+   - Lots of internal refactoring and tidying up
+
+
 3.8.7.4
   Re-export runWithFuel as per Justin Bailey
 
 3.7.13.0
 
   Pointed type replaces WithTop and WithBot, which are now synonyms.
-  
+
 
 3.7.12.3
 
     -- interface.
     firstXfer :: Edges n => (n C O -> f -> f) -> (n C O -> FactBase f -> f)
     firstXfer xfer n fb = xfer n $ fromJust $ lookupFact fb $ entryLabel n
-    
+
     -- | This utility function handles a common case in which a transfer function
     -- produces a single fact out of a last node, which is then distributed
     -- over the outgoing edges.
     distributeXfer :: Edges n => (n O C -> f -> f) -> (n O C -> f -> FactBase f)
     distributeXfer xfer n f = mkFactBase [ (l, xfer n f) | l <- successors n ]
-    
+
     -- | This utility function handles a common case in which a transfer function
     -- for a last node takes the incoming fact unchanged and simply distributes
     -- that fact over the outgoing edges.
   I added a function showGraph to print Graphs.  Right now it requires a
   polymorphic node-showing function as argument. When we change the
   Block representation we may get enough static type information that we
-  can simply have an instance declaration for 
+  can simply have an instance declaration for
 
     instance (Show n C O, Show n O O, Show n O C) => Show (Graph n e x)
 
   transfer functions.  The implementation will use monomorphic
   functions, which will enable more useful combinators on passes,
   including adding more debugging information and enabling us to combine
-  passes. 
+  passes.
 
   Perhaps we should provide splicing and 'addBlocks' on Graph?
 
index faeb712..2874788 100644 (file)
@@ -1,5 +1,6 @@
 Name:                hoopl
 Version:             3.10.0.0
+-- NOTE: Don't forget to update 'repository this' tag when incrementing version!
 -- GHC 7.6.1 released with 3.9.0.0
 -- version 3.8.6.0 is the version that goes with the camera-ready Haskell'10 paper
 -- version 3.8.7.0 works with GHC 7
@@ -20,14 +21,29 @@ Author:              Norman Ramsey, João Dias, Simon Marlow and Simon Peyton Jo
 Maintainer:          nr@cs.tufts.edu
 Homepage:            http://ghc.cs.tufts.edu/hoopl/
 Build-Type:          Simple
-Cabal-Version:       >=1.6
+Cabal-Version:       >=1.10
 Synopsis:            A library to support dataflow analysis and optimization
 Category:            Compilers/Interpreters
-Extra-Source-Files:  README, hoopl.pdf, CHANGES, FAQ
+Tested-With:         GHC==7.6.3, GHC==7.6.2, GHC==7.6.1, GHC==7.4.2, GHC==7.4.1, GHC==7.2.2, GHC==7.0.4, GHC==7.0.3, GHC==7.0.2, GHC==7.0.1
+Extra-Source-Files:  README, hoopl.pdf, changelog
 
 Library
+  Default-Language:  Haskell2010
+  Other-Extensions:  CPP
+                     FlexibleContexts
+                     FlexibleInstances
+                     GADTs
+                     LiberalTypeSynonyms
+                     MultiParamTypeClasses
+                     RankNTypes
+                     ScopedTypeVariables
+                     TypeFamilies
+                     TypeSynonymInstances
+  If impl(ghc>=7.2)
+    Other-Extensions: Safe Trustworthy
+
   Hs-Source-Dirs:    src
-  Build-Depends:     base >= 3 && < 5, containers
+  Build-Depends:     base >= 4.3 && < 4.8, containers >= 0.4 && < 0.6
   Exposed-Modules:   Compiler.Hoopl,
                      Compiler.Hoopl.Internals,
                      Compiler.Hoopl.Wrappers,
@@ -49,13 +65,17 @@ Library
                      Compiler.Hoopl.Fuel,
                      Compiler.Hoopl.Pointed,
                      Compiler.Hoopl.Shape,
-                     Compiler.Hoopl.Show, 
-                     Compiler.Hoopl.Unique, 
+                     Compiler.Hoopl.Show,
+                     Compiler.Hoopl.Unique,
                      Compiler.Hoopl.XUtil
 
   Ghc-Options:       -Wall -fno-warn-name-shadowing
-  Extensions:        CPP
 
 Source-repository head
   Type:       git
-  Location:   git://ghc.cs.tufts.edu/hoopl/hoopl.git
+  Location:   git://ghc.haskell.org/packages/hoopl.git
+
+Source-repository this
+  Type:       git
+  Location:   git://ghc.haskell.org/packages/hoopl.git
+  Tag:        hoopl-3.10.0.0-release