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