hoopl 3.10.0.2 → 3.10.1.0
raw patch · 10 files changed
+64/−38 lines, 10 filesnew-uploaderPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Compiler.Hoopl: [bp_lattice] :: BwdPass m n f -> DataflowLattice f
- Compiler.Hoopl: [bp_rewrite] :: BwdPass m n f -> BwdRewrite m n f
- Compiler.Hoopl: [bp_transfer] :: BwdPass m n f -> BwdTransfer n f
- Compiler.Hoopl: [fact_bot] :: DataflowLattice a -> a
- Compiler.Hoopl: [fact_join] :: DataflowLattice a -> JoinFun a
- Compiler.Hoopl: [fact_name] :: DataflowLattice a -> String
- Compiler.Hoopl: [fp_lattice] :: FwdPass m n f -> DataflowLattice f
- Compiler.Hoopl: [fp_rewrite] :: FwdPass m n f -> FwdRewrite m n f
- Compiler.Hoopl: [fp_transfer] :: FwdPass m n f -> FwdTransfer n f
- Compiler.Hoopl: [getBRewrite3] :: BwdRewrite m n f -> (n C O -> f -> m (Maybe (Graph n C O, BwdRewrite m n f)), n O O -> f -> m (Maybe (Graph n O O, BwdRewrite m n f)), n O C -> FactBase f -> m (Maybe (Graph n O C, BwdRewrite m n f)))
- Compiler.Hoopl: [getBTransfer3] :: BwdTransfer n f -> (n C O -> f -> f, n O O -> f -> f, n O C -> FactBase f -> f)
- Compiler.Hoopl: [getFRewrite3] :: FwdRewrite m n f -> (n C O -> f -> m (Maybe (Graph n C O, FwdRewrite m n f)), n O O -> f -> m (Maybe (Graph n O O, FwdRewrite m n f)), n O C -> f -> m (Maybe (Graph n O C, FwdRewrite m n f)))
- Compiler.Hoopl: [getFTransfer3] :: FwdTransfer n f -> (n C O -> f -> f, n O O -> f -> f, n O C -> f -> FactBase f)
- Compiler.Hoopl.Internals: [bp_lattice] :: BwdPass m n f -> DataflowLattice f
- Compiler.Hoopl.Internals: [bp_rewrite] :: BwdPass m n f -> BwdRewrite m n f
- Compiler.Hoopl.Internals: [bp_transfer] :: BwdPass m n f -> BwdTransfer n f
- Compiler.Hoopl.Internals: [fact_bot] :: DataflowLattice a -> a
- Compiler.Hoopl.Internals: [fact_join] :: DataflowLattice a -> JoinFun a
- Compiler.Hoopl.Internals: [fact_name] :: DataflowLattice a -> String
- Compiler.Hoopl.Internals: [fp_lattice] :: FwdPass m n f -> DataflowLattice f
- Compiler.Hoopl.Internals: [fp_rewrite] :: FwdPass m n f -> FwdRewrite m n f
- Compiler.Hoopl.Internals: [fp_transfer] :: FwdPass m n f -> FwdTransfer n f
- Compiler.Hoopl.Internals: [getBRewrite3] :: BwdRewrite m n f -> (n C O -> f -> m (Maybe (Graph n C O, BwdRewrite m n f)), n O O -> f -> m (Maybe (Graph n O O, BwdRewrite m n f)), n O C -> FactBase f -> m (Maybe (Graph n O C, BwdRewrite m n f)))
- Compiler.Hoopl.Internals: [getBTransfer3] :: BwdTransfer n f -> (n C O -> f -> f, n O O -> f -> f, n O C -> FactBase f -> f)
- Compiler.Hoopl.Internals: [getFRewrite3] :: FwdRewrite m n f -> (n C O -> f -> m (Maybe (Graph n C O, FwdRewrite m n f)), n O O -> f -> m (Maybe (Graph n O O, FwdRewrite m n f)), n O C -> f -> m (Maybe (Graph n O C, FwdRewrite m n f)))
- Compiler.Hoopl.Internals: [getFTransfer3] :: FwdTransfer n f -> (n C O -> f -> f, n O O -> f -> f, n O C -> f -> FactBase f)
- Compiler.Hoopl.Passes.Dominator: instance GHC.Show.Show Compiler.Hoopl.Passes.Dominator.DPath
- Compiler.Hoopl.Passes.Dominator: instance GHC.Show.Show Compiler.Hoopl.Passes.Dominator.DominatorNode
- Compiler.Hoopl.Passes.Dominator: instance GHC.Show.Show Compiler.Hoopl.Passes.Dominator.DominatorTree
+ Compiler.Hoopl: bp_lattice :: BwdPass m n f -> DataflowLattice f
+ Compiler.Hoopl: bp_rewrite :: BwdPass m n f -> BwdRewrite m n f
+ Compiler.Hoopl: bp_transfer :: BwdPass m n f -> BwdTransfer n f
+ Compiler.Hoopl: fact_bot :: DataflowLattice a -> a
+ Compiler.Hoopl: fact_join :: DataflowLattice a -> JoinFun a
+ Compiler.Hoopl: fact_name :: DataflowLattice a -> String
+ Compiler.Hoopl: fp_lattice :: FwdPass m n f -> DataflowLattice f
+ Compiler.Hoopl: fp_rewrite :: FwdPass m n f -> FwdRewrite m n f
+ Compiler.Hoopl: fp_transfer :: FwdPass m n f -> FwdTransfer n f
+ Compiler.Hoopl: getBRewrite3 :: BwdRewrite m n f -> (n C O -> f -> m (Maybe (Graph n C O, BwdRewrite m n f)), n O O -> f -> m (Maybe (Graph n O O, BwdRewrite m n f)), n O C -> FactBase f -> m (Maybe (Graph n O C, BwdRewrite m n f)))
+ Compiler.Hoopl: getBTransfer3 :: BwdTransfer n f -> (n C O -> f -> f, n O O -> f -> f, n O C -> FactBase f -> f)
+ Compiler.Hoopl: getFRewrite3 :: FwdRewrite m n f -> (n C O -> f -> m (Maybe (Graph n C O, FwdRewrite m n f)), n O O -> f -> m (Maybe (Graph n O O, FwdRewrite m n f)), n O C -> f -> m (Maybe (Graph n O C, FwdRewrite m n f)))
+ Compiler.Hoopl: getFTransfer3 :: FwdTransfer n f -> (n C O -> f -> f, n O O -> f -> f, n O C -> f -> FactBase f)
+ Compiler.Hoopl.Internals: bp_lattice :: BwdPass m n f -> DataflowLattice f
+ Compiler.Hoopl.Internals: bp_rewrite :: BwdPass m n f -> BwdRewrite m n f
+ Compiler.Hoopl.Internals: bp_transfer :: BwdPass m n f -> BwdTransfer n f
+ Compiler.Hoopl.Internals: fact_bot :: DataflowLattice a -> a
+ Compiler.Hoopl.Internals: fact_join :: DataflowLattice a -> JoinFun a
+ Compiler.Hoopl.Internals: fact_name :: DataflowLattice a -> String
+ Compiler.Hoopl.Internals: fp_lattice :: FwdPass m n f -> DataflowLattice f
+ Compiler.Hoopl.Internals: fp_rewrite :: FwdPass m n f -> FwdRewrite m n f
+ Compiler.Hoopl.Internals: fp_transfer :: FwdPass m n f -> FwdTransfer n f
+ Compiler.Hoopl.Internals: getBRewrite3 :: BwdRewrite m n f -> (n C O -> f -> m (Maybe (Graph n C O, BwdRewrite m n f)), n O O -> f -> m (Maybe (Graph n O O, BwdRewrite m n f)), n O C -> FactBase f -> m (Maybe (Graph n O C, BwdRewrite m n f)))
+ Compiler.Hoopl.Internals: getBTransfer3 :: BwdTransfer n f -> (n C O -> f -> f, n O O -> f -> f, n O C -> FactBase f -> f)
+ Compiler.Hoopl.Internals: getFRewrite3 :: FwdRewrite m n f -> (n C O -> f -> m (Maybe (Graph n C O, FwdRewrite m n f)), n O O -> f -> m (Maybe (Graph n O O, FwdRewrite m n f)), n O C -> f -> m (Maybe (Graph n O C, FwdRewrite m n f)))
+ Compiler.Hoopl.Internals: getFTransfer3 :: FwdTransfer n f -> (n C O -> f -> f, n O O -> f -> f, n O C -> f -> FactBase f)
+ Compiler.Hoopl.Passes.Dominator: instance [safe] Show DPath
+ Compiler.Hoopl.Passes.Dominator: instance [safe] Show DominatorNode
+ Compiler.Hoopl.Passes.Dominator: instance [safe] Show DominatorTree
- Compiler.Hoopl: bodyList :: NonLocal (block n) => Body' block n -> [(Label, block n C C)]
+ Compiler.Hoopl: bodyList :: Body' block n -> [(Label, block n C C)]
- Compiler.Hoopl: joinOutFacts :: (NonLocal node) => DataflowLattice f -> node O C -> FactBase f -> f
+ Compiler.Hoopl: joinOutFacts :: NonLocal node => DataflowLattice f -> node O C -> FactBase f -> f
- Compiler.Hoopl: showGraph :: (NonLocal n) => Showing n -> Graph n e x -> String
+ Compiler.Hoopl: showGraph :: Showing n -> Graph n e x -> String
- Compiler.Hoopl.Internals: bodyList :: NonLocal (block n) => Body' block n -> [(Label, block n C C)]
+ Compiler.Hoopl.Internals: bodyList :: Body' block n -> [(Label, block n C C)]
Files
- README +0/−28
- README.md +43/−0
- changelog.md +6/−0
- hoopl.cabal +3/−3
- src/Compiler/Hoopl.hs +1/−1
- src/Compiler/Hoopl/Dataflow.hs +1/−1
- src/Compiler/Hoopl/Fuel.hs +2/−0
- src/Compiler/Hoopl/Graph.hs +4/−3
- src/Compiler/Hoopl/Show.hs +2/−2
- src/Compiler/Hoopl/Unique.hs +2/−0
− README
@@ -1,28 +0,0 @@-This repository contains things related to-- Hoopl: A Higher-Order OPtimization Library--** The closest thing we have to a SAMPLE CLIENT is in ./testing **--Directory Contents--paper/ A paper about Hoopl-prototypes/ A sampling of prototypes and early designs-src/ The current official sources to the Cabal package-testing/ Tests, including a sample client. See ./testing/README.--To build the library, change to the src directory and run-- cabal configure --prefix=$HOME --user # we have no idea what this means- cabal build- cabal install --enable-documentation--You'll need a Haskell Platform, which should include appropriate-versions of Cabal and GHC.--To upload to Hackage,-- cabal sdist- cabal upload dist/something.tar.gz--Developers, please see HOWTO-BRANCHES
+ README.md view
@@ -0,0 +1,43 @@+The `hoopl` Package [](https://hackage.haskell.org/package/hoopl) [](https://travis-ci.org/haskell/hoopl)+===================++## Hoopl: A Higher-Order OPtimization Library++API documentation can be found on [Hackage](https://hackage.haskell.org/package/hoopl).++| Directory | Contents+| -------------- | ---------+| `paper/` | A paper about Hoopl+| `prototypes/` | A sampling of prototypes and early designs+| `src/` | The current official sources to the Cabal package+| `testing/` | Tests, including a sample client. See [`testing/README`](testing/README)++### Development Notes++To build the library, change to the src directory and run++ cabal configure --prefix=$HOME --user # we have no idea what this means+ cabal build+ cabal install --enable-documentation++You'll need a Haskell Platform, which should include appropriate+versions of Cabal and GHC.++### Checklist for Making Releases++In order to facilitate GHC development's workflow, the version in [`hoopl.cabal`](hoopl.cabal) is to be bumped as soon as a change requires a respective version bump (according to the PVP) relative to the last released `hoopl` version.++1. Make sure `hoopl` passes Travis for all GHC versions in the build-matrix+2. Update Changelog (& `git commit`)+3. Generate source tarball via `cabal sdist` and upload a candidate to Hackage (see note below), and inspect the result. +4. If everything checks out, make an annotated and GPG-signed Git release tag: `git tag -a -s v${VER} -m "hoopl ${VER}"`+5. Publish (there's a button for that on Hackage) the package candidate+6. Work on next release++Note: To upload to Hackage,++ cabal sdist+ cabal upload dist/hoopl-*.tar.gz++However, it's recommended use the Hackage feature for+[uploading a candidate](http://hackage.haskell.org/packages/candidates/upload).
changelog.md view
@@ -1,5 +1,11 @@ # Changelog for [`hoopl` package](http://hackage.haskell.org/package/hoopl) +## 3.10.1.0 *Apr 2015*++ - Re-export runWithFuel from Compiler.Hoopl.++ - Remove redundant constraints+ ## 3.10.0.2 *Dec 2014* - Add support for `base-4.8.0.0` package version
hoopl.cabal view
@@ -1,5 +1,5 @@ Name: hoopl-Version: 3.10.0.2+Version: 3.10.1.0 -- NOTE: Don't forget to update ./changelog.md Description: Higher-order optimization library@@ -10,7 +10,7 @@ License: BSD3 License-File: LICENSE Author: Norman Ramsey, Joao Dias, Simon Marlow and Simon Peyton Jones-Maintainer: nr@cs.tufts.edu+Maintainer: nr@cs.tufts.edu, andreas.voellmy@gmail.com, email@ningwang.org Homepage: http://ghc.cs.tufts.edu/hoopl/ Bug-Reports: http://ghc.haskell.org/trac/ghc/newticket?component=libraries/hoopl Build-Type: Simple@@ -18,7 +18,7 @@ Synopsis: A library to support dataflow analysis and optimization Category: Compilers/Interpreters Tested-With: GHC>=7.0.1-Extra-Source-Files: README, hoopl.pdf, changelog.md+Extra-Source-Files: README.md, hoopl.pdf, changelog.md Source-repository head Type: git
src/Compiler/Hoopl.hs view
@@ -27,7 +27,7 @@ import Compiler.Hoopl.Dataflow hiding ( wrapFR, wrapFR2, wrapBR, wrapBR2 ) import Compiler.Hoopl.Debug-import Compiler.Hoopl.Fuel hiding (withFuel, getFuel, setFuel, runWithFuel)+import Compiler.Hoopl.Fuel hiding (withFuel, getFuel, setFuel) import Compiler.Hoopl.Block import Compiler.Hoopl.Graph hiding (splice, gSplice) import Compiler.Hoopl.Label hiding (uniqueToLbl, lblToUnique)
src/Compiler/Hoopl/Dataflow.hs view
@@ -736,7 +736,7 @@ exitFacts (JustO (DBlock f b)) = mapSingleton (entryLabel b) f bodyFacts :: LabelMap (DBlock f n C C) -> FactBase f bodyFacts body = mapFoldWithKey f noFacts body- where f :: forall t a x. (NonLocal t) => Label -> DBlock a t C x -> LabelMap a -> LabelMap a+ where f :: forall t a x. Label -> DBlock a t C x -> LabelMap a -> LabelMap a f lbl (DBlock f _) fb = mapInsert lbl f fb --- implementation of the constructors (boring)
src/Compiler/Hoopl/Fuel.hs view
@@ -21,7 +21,9 @@ import Compiler.Hoopl.Checkpoint import Compiler.Hoopl.Unique +#if !MIN_VERSION_base(4,8,0) import Control.Applicative (Applicative(..))+#endif import Control.Monad (ap,liftM) class Monad m => FuelMonad m where
src/Compiler/Hoopl/Graph.hs view
@@ -46,7 +46,9 @@ import Compiler.Hoopl.Block import Compiler.Hoopl.Label +#if !MIN_VERSION_base(4,8,0) import Control.Applicative (Applicative(..))+#endif import Control.Monad (ap,liftM,liftM2) -- -----------------------------------------------------------------------------@@ -65,7 +67,7 @@ bodyUnion = mapUnionWithKey nodups where nodups l _ _ = error $ "duplicate blocks with label " ++ show l -bodyList :: NonLocal (block n) => Body' block n -> [(Label,block n C C)]+bodyList :: Body' block n -> [(Label,block n C C)] bodyList body = mapToList body addBlock :: NonLocal thing@@ -306,8 +308,7 @@ -- Better to get [A,B,C,D] -graphDfs :: (NonLocal (block n))- => (LabelMap (block n C C) -> block n O C -> LabelSet -> [block n C C])+graphDfs :: (LabelMap (block n C C) -> block n O C -> LabelSet -> [block n C C]) -> (Graph' block n O x -> [block n C C]) graphDfs _ (GNil) = [] graphDfs _ (GUnit{}) = []
src/Compiler/Hoopl/Show.hs view
@@ -20,9 +20,9 @@ type Showing n = forall e x . n e x -> String -showGraph :: forall n e x . (NonLocal n) => Showing n -> Graph n e x -> String+showGraph :: forall n e x . Showing n -> Graph n e x -> String showGraph node = g- where g :: (NonLocal n) => Graph n e x -> String+ where g :: Graph n e x -> String g GNil = "" g (GUnit block) = b block g (GMany g_entry g_blocks g_exit) =
src/Compiler/Hoopl/Unique.hs view
@@ -24,7 +24,9 @@ import qualified Data.IntMap as M import qualified Data.IntSet as S +#if !MIN_VERSION_base(4,8,0) import Control.Applicative+#endif import Control.Monad (ap,liftM) -----------------------------------------------------------------------------