packages feed

ghc-events-analyze-0.2.9: ghc-events-analyze.cabal

cabal-version:       2.2
name:                ghc-events-analyze
version:             0.2.9
synopsis:            Analyze and visualize event logs
description:         ghc-events-analyze is a simple Haskell profiling tool that
                     uses GHC's eventlog system. It helps with some profiling
                     use cases that are not covered by the existing GHC
                     profiling modes or tools. It has two major features:
                     .
                     1. While ThreadScope shows CPU activity across all your
                     cores, ghc-events-analyze shows CPU activity across all
                     your Haskell threads.
                     .
                     2. It lets you label periods of time during program
                     execution (by instrumenting your code with special trace
                     calls) and then lets you visualize those time periods or
                     get statistics on them.
                     .
                     It is very useful for profiling code when ghc's normal
                     profiling mode is not available, or when using profiling
                     mode would perturb the code too much. It is also useful
                     when you want time-profiling information with a breakdown
                     over time rather than totals for the whole run.
                     .
                     The blog post
                     <http://www.well-typed.com/blog/2014/02/ghc-events-analyze/ Performance profiling with ghc-events-analyze>
                     describes the motivation in more detail.
license:             BSD-3-Clause
license-file:        LICENSE
author:              Edsko de Vries, Duncan Coutts, Mikolaj Konarski
maintainer:          edsko@well-typed.com
copyright:           2013-2025 Well-Typed LLP
category:            Development, Profiling, Trace
build-type:          Simple
extra-doc-files:     ChangeLog
tested-with:         GHC==9.2.8
                     GHC==9.4.8
                     GHC==9.6.7
                     GHC==9.8.4
                     GHC==9.10.2
                     GHC==9.12.2


source-repository head
  type: git
  location: https://github.com/edsko/ghc-events-analyze

common lang
  default-language: GHC2021
  build-depends:    base >= 4.16 && < 4.22

  ghc-options:
      -Wall
      -Wredundant-constraints
      -Wunused-packages
      -Wprepositive-qualified-module
      -rtsopts

  default-extensions:
      DeriveAnyClass
      DerivingStrategies
      RecordWildCards
      ViewPatterns

  if impl(ghc >= 9.8)
    ghc-options: -Wno-x-partial

executable ghc-events-analyze
  import:         lang
  hs-source-dirs: src
  main-is:        GHC/RTS/Events/Analyze.hs

  other-modules:
      GHC.RTS.Events.Analyze.Analysis
      GHC.RTS.Events.Analyze.Options
      GHC.RTS.Events.Analyze.Reports.Timed
      GHC.RTS.Events.Analyze.Reports.Timed.SVG
      GHC.RTS.Events.Analyze.Reports.Totals
      GHC.RTS.Events.Analyze.Script
      GHC.RTS.Events.Analyze.Script.Standard
      GHC.RTS.Events.Analyze.StrictState
      GHC.RTS.Events.Analyze.Types
      GHC.RTS.Events.Analyze.Utils

  build-depends:
     -- bundled libraries
    , containers       >= 0.6  && < 0.8
    , filepath         >= 1.4  && < 1.6
    , mtl              >= 2.2  && < 2.4
    , parsec           >= 3.1  && < 3.2
    , template-haskell >= 2.18 && < 2.24
    , text             >= 1.2  && < 2.2
    , transformers     >= 0.5  && < 0.7

  build-depends:
      -- other external dependencies
    , diagrams-lib         >= 1.5  && < 1.6
    , diagrams-svg         >= 1.5  && < 1.6
    , ghc-events           >= 0.20 && < 0.21
    , hashable             >= 1.4  && < 1.6
    , lens                 >= 5.3  && < 5.4
    , optparse-applicative >= 0.19 && < 0.20
    , regex-pcre-builtin   >= 0.95 && < 0.96
    , SVGFonts             >= 1.8  && < 1.9
    , th-lift              >= 0.8  && < 0.9
    , th-lift-instances    >= 0.1  && < 0.2
    , unordered-containers >= 0.2  && < 0.3

  other-extensions:
      TemplateHaskell
      QuasiQuotes

common blogpost-examples
  import:         lang
  ghc-options:    -main-is BlogpostExamples
  hs-source-dirs: examples

  other-modules:
      Examples.Common
      Examples.Ex0
      Examples.Ex0_Windowed
      Examples.Ex1

  build-depends:
    , async >= 2.2 && < 2.3

test-suite blogpost-examples-nt
  import:      blogpost-examples
  main-is:     BlogpostExamples.hs
  type:        exitcode-stdio-1.0

test-suite blogpost-examples-threaded
  import:      blogpost-examples
  type:        exitcode-stdio-1.0
  main-is:     BlogpostExamples.hs
  ghc-options: -threaded