Add more sanity checking
[ghc-heap-view.git] / ghc-heap-view.cabal
1 Name:                ghc-heap-view
2 Version:             0.5.3
3 Synopsis:            Extract the heap representation of Haskell values and thunks
4 Description:
5   This library provides functions to introspect the Haskell heap, for example
6   to investigate sharing and lazy evaluation.
7   .
8   It has been inspired by (and taken code from) the vacuum package and the GHCi
9   debugger, but also allows to investiage thunks and other closures. 
10   .
11   This package also provides a new GHCi-command, @:printHeap@, which allows you
12   to inspect the current heap representation of a value, including sharing and
13   cyclic references. To enable the command, you need to load the included ghci
14   script or add it to @~/.ghci@, as explained by @cabal install@. Once it is
15   set up, you can do this:
16   .
17   >> let value = "A Value"
18   >> let x = (value, if head value == 'A' then value else "", cycle [True, False])
19   >> :printHeap x
20   >let x1 = _bco
21   >    x21 = []
22   >in (x1,_bco,_bco)
23   >> length (take 100 (show x)) `seq` return () -- evaluate everything
24   >> :printHeap x
25   >let x1 = "A Value"
26   >    x16 = True : False : x16
27   >in (x1,x1,x16)
28   .
29   You can change the maximum recursion depth using @:setPrintHeapDepth@:
30   .
31   >> :setPrintHeapDepth 3
32   >> :printHeap x
33   >let x1 = C# 'A' : ... : ...
34   >in (x1,x1,True : ... : ...)
35   .
36   If the view is impaired by blackholes (written @_bh@), running
37   @System.Mem.performGC@ usually helps.
38   .
39   The work on this package has been supported by the Deutsche Telekom Stiftung
40   (<http://telekom-stiftung.de>).
41 License:             BSD3
42 License-file:        LICENSE
43 Author:              Joachim Breitner, Dennis Felsing
44 Maintainer:          Joachim Breitner <mail@joachim-breitner.de>
45 Copyright:           2012-2014 Joachim Breitner
46 bug-reports:         https://github.com/nomeata/ghc-heap-view
47 Category:            Debug, GHC
48 Build-type:          Custom
49 Cabal-version:       >=1.14
50 Extra-source-files:  Demo.hs
51 data-files:          ghci
52
53 Flag prim-supports-any
54     Description: The used GHC supports Any as an argument to foreign prim functions (GHC ticket #5931)
55     Default: False
56
57 Flag ghc_7_7
58
59 Library
60   Default-Language:    Haskell2010
61   Exposed-modules:
62     GHC.HeapView 
63     GHC.AssertNF 
64     GHC.Disassembler
65     GHC.HeapView.Debug
66   Build-depends:
67     base >= 4.5 && < 4.8,
68     containers,
69     transformers,
70     template-haskell,
71     bytestring >= 0.10,
72     binary
73   if flag(ghc_7_7)
74     build-depends: ghc >= 7.7
75     cc-options: -DGHC_7_7
76     cpp-options: -DGHC_7_7
77   else
78     build-depends: ghc < 7.7
79   C-Sources: cbits/HeapView.c cbits/HeapViewPrim.cmm
80   Hs-source-dirs: src/
81   Ghc-options: -Wall
82   default-language: Haskell2010
83
84   if flag(prim-supports-any)
85     cpp-options: -DPRIM_SUPPORTS_ANY
86  
87 test-suite Test
88   type:           exitcode-stdio-1.0
89   main-is:        Test.hs
90   build-depends:  base, ghc-heap-view, deepseq
91   default-language: Haskell2010
92   Ghc-options:    -O0
93
94   
95 source-repository head
96   type:     git
97   location: git://git.nomeata.de/ghc-heap-view.git
98   subdir:   Cabal