Advertise ghci support in the package description
[ghc-heap-view.git] / ghc-heap-view.cabal
index 8cf1840..b770423 100644 (file)
@@ -1,24 +1,73 @@
 Name:                ghc-heap-view
 Name:                ghc-heap-view
-Version:             0.1
+Version:             0.4.0.0
 Synopsis:            Extract the heap representation of Haskell values and thunks
 Description:
   This library provides functions to introspect the Haskell heap, for example
 Synopsis:            Extract the heap representation of Haskell values and thunks
 Description:
   This library provides functions to introspect the Haskell heap, for example
-  to investigate sharing and lazy eavaluation.
+  to investigate sharing and lazy evaluation.
   .
   It has been inspired by (and taken code from) the vacuum package and the GHCi
   debugger, but also allows to investiage thunks and other closures. 
   .
   It has been inspired by (and taken code from) the vacuum package and the GHCi
   debugger, but also allows to investiage thunks and other closures. 
+  .
+  This package also provides a new GHCi-command, @:printHeap@, which allows you
+  to inspect the current heap representation of a value, including sharing and
+  cyclic references. To enable the command, you need to load the included ghci
+  script or add it to @~/.ghci@, as explained by @cabal install@. Once it is
+  set up, you can do this:
+  .
+  >> let value = "A Value"
+  >> let x = (value, if head value == 'A' then value else "", cycle [True, False])
+  >> :printHeap x
+  >let x1 = _bco
+  >    x21 = []
+  >let (x1,_bco,_bco)
+  >> length (take 100 (show x)) `seq` return () -- evaluate everything
+  >> :printHeap x
+  >let x1 = "A Value"
+  >    x16 = True : False : x16
+  >let (x1,x1,x16)
+  .
+  You can change the maximum recursion depth using @:setPrintHeapDepth@:
+  .
+  >> :setPrintHeapDepth 3
+  >> :printHeap x
+  >let x1 = C# 'A' : ... : ...
+  >let (x1,x1,True : ... : ...)
+  .
+  If the view is impaired by blackholes (written @_bh@), running
+  'System.Mem.perfromGC' usually helps.
+  .
+  The work on this package has been supported by the Deutsche Telekom Stiftung
+  (<http://telekom-stiftung.de>).
 License:             BSD3
 License-file:        LICENSE
 License:             BSD3
 License-file:        LICENSE
-Author:              Joachim Breitner
+Author:              Joachim Breitner, Dennis Felsing
 Maintainer:          Joachim Breitner <mail@joachim-breitner.de>
 Maintainer:          Joachim Breitner <mail@joachim-breitner.de>
+Copyright:           2012 Joachim Breitner
 Category:            Debug, GHC
 Category:            Debug, GHC
-Build-type:          Simple
-Cabal-version:       >=1.2
+Build-type:          Custom
+Cabal-version:       >=1.14
 Extra-source-files:  Demo.hs
 Extra-source-files:  Demo.hs
+data-files:          ghci
+
+Flag prim-supports-any
+    Description: The used GHC supports Any as an argument to foreign prim functions (GHC ticket #5931)
+    Default: False
 
 Library
   Exposed-modules: GHC.HeapView 
 
 Library
   Exposed-modules: GHC.HeapView 
-  Build-depends:  base, ghc, integer-gmp, ghc-prim
+  Default-Language:    Haskell2010
+  Build-depends:
+    base >= 4.5 && < 4.7,
+    containers,
+    transformers,
+    ghc
   C-Sources: cbits/HeapView.c cbits/HeapViewPrim.cmm
   Hs-source-dirs: src/
   C-Sources: cbits/HeapView.c cbits/HeapViewPrim.cmm
   Hs-source-dirs: src/
+  Ghc-options: -Wall
+
+  if flag(prim-supports-any)
+    cpp-options: -DPRIM_SUPPORTS_ANY
   
   
+source-repository head
+  type:     darcs
+  location: http://darcs.nomeata.de/ghc-heap-view/