packages feed

threadscope 0.2.14 → 0.2.14.1

raw patch · 17 files changed

+51/−47 lines, 17 filesdep ~bytestringdep ~containersdep ~filepath

Dependency ranges changed: bytestring, containers, filepath, ghc-events, mtl, template-haskell, text, time, unix

Files

CHANGELOG.md view
@@ -1,10 +1,16 @@ # Revision history for threadscope +## 2022-05-10 - v0.2.14.1++* Spelling fixes ([#121](https://github.com/haskell/ThreadScope/pull/121), [#123](https://github.com/haskell/ThreadScope/pull/123))+* Add compatibility with GHC-9.2 ([#124](https://github.com/haskell/ThreadScope/pull/124), [#125](https://github.com/haskell/ThreadScope/pull/125))+* Update dependencies ([#126](https://github.com/haskell/ThreadScope/pull/126))+ ## 2021-01-09 - v0.2.14 -* Print times with more sensible units [#111](https://github.com/haskell/ThreadScope/pull/111)-* EventDuration: Make it more robust to truncated eventlogs [#110](https://github.com/haskell/ThreadScope/pull/110)-* Use GitHub Actions for CI [#113](https://github.com/haskell/ThreadScope/pull/113)+* Print times with more sensible units ([#111](https://github.com/haskell/ThreadScope/pull/111))+* EventDuration: Make it more robust to truncated eventlogs ([#110](https://github.com/haskell/ThreadScope/pull/110))+* Use GitHub Actions for CI ([#113](https://github.com/haskell/ThreadScope/pull/113)) * Relax upper version bounds for ghc-events, time, bytestring, and template-haskell  ## 2020-04-06 - v0.2.13
Events/EventDuration.hs view
@@ -17,9 +17,9 @@ import qualified GHC.RTS.Events as GHC  ---------------------------------------------------------------------------------- This datastructure is a duration-based representation of the event--- loginformation where thread-runs and GCs are explicitly represented--- by a single constructor identifying their start and end points.+-- This data structure is a duration-based representation of the eventlog+-- information where thread-runs and GCs are explicitly represented by a+-- single constructor identifying their start and end points.  data EventDuration   = ThreadRun {-#UNPACK#-}!ThreadId
Events/ReadEvents.hs view
@@ -35,12 +35,12 @@ -- import qualified GHC.RTS.Events as GHCEvents -- -- The GHC.RTS.Events library returns the profile information--- in a data-streucture which contains a list data structure+-- in a data-structure which contains a list data structure -- representing the events i.e. [GHCEvents.Event] -- ThreadScope transforms this list into an alternative representation -- which (for each HEC) records event *durations* which are ordered in time. -- The durations represent the run-lengths for thread execution and--- run-lengths for garbage colleciton. This data-structure is called+-- run-lengths for garbage collection. This data-structure is called -- EventDuration. -- ThreadScope then transformations this data-structure into another -- data-structure which gives a binary-tree view of the event information@@ -207,7 +207,7 @@       allHisto :: [(Timestamp, Int, Timestamp)]       allHisto = catMaybes . sparkSummary M.empty . toList $ sparkProfile -      -- Sparks of zero lenght are already well visualized in other graphs:+      -- Sparks of zero length are already well visualized in other graphs:       durHistogram = filter (\ (_, logdur, _) -> logdur > 0) allHisto       -- Precompute some extremums of the maximal interval, needed for scales.       durs = [(logdur, dur) | (_start, logdur, dur) <- durHistogram]
Events/SparkStats.hs view
@@ -24,7 +24,7 @@ -- | Create spark stats for a duration, given absolute -- numbers of sparks in all categories at the start and end of the duration. -- The units for spark transitions (first 6 counters) is [spark/duration]:--- the fact that intervals may have different lenghts is ignored here.+-- the fact that intervals may have different lengths is ignored here. -- The units for the pool stats are just [spark]. -- The values in the second counter have to be greater or equal -- to the values in the first counter, except for the spark pool size.
Events/TestEvents.hs view
@@ -119,7 +119,7 @@      EventType wakeup "Wakeup thread" (Just 10),      EventType startGC "Start GC" (Just 0),      EventType finishGC "Finish GC" (Just 0),-     EventType reqSeqGC "Request sequetial GC" (Just 0),+     EventType reqSeqGC "Request sequential GC" (Just 0),      EventType reqParGC "Reqpargc parallel GC" (Just 0),      EventType createSparkThread "Create spark thread" (Just 8),      EventType logMessage "Log message" Nothing,
GUI/App.hs view
@@ -9,6 +9,6 @@ -------------------------------------------------------------------------------  -- | Initialize application--- Perform application initialization for non-Mac OS X platforms+-- Perform application initialization for non-macOS platforms initApp :: IO () initApp = return ()
GUI/DataFiles.hs view
@@ -21,7 +21,7 @@ logoFile :: FilePath logoFile = "threadscope.png" --- | Textual representaion of the UI file+-- | Textual representation of the UI file ui :: Q Exp ui = [| TE.decodeUtf8 $(makeRelativeToProject uiFile >>= embedFile) |] 
GUI/KeyView.hs view
@@ -106,10 +106,10 @@      "In the spark conversion  graph the coloured area represents the number " ++      "of sparks that have fizzled.")   , ("GCed spark",      KEventAndGraph, gcColour,-     "As an event it indicates a spark has been GC'd, meaning it has been " +++     "As an event it indicates a spark has been GCed, meaning it has been " ++      "discovered that the spark's thunk was no longer needed anywhere. " ++      "In the spark conversion graph the coloured area represents the number " ++-     "of sparks that were GC'd.")+     "of sparks that were GCed.")   ]  @@ -136,7 +136,7 @@ renderKeyIcon KEvent keyColour = renderKEvent keyColour renderKeyIcon KEventAndGraph keyColour = do   renderKEvent keyColour-  -- An icon roughly repreenting a jagedy graph.+  -- An icon roughly representing a jaggedy graph.   let x = fromIntegral ox       y = fromIntegral hecBarHeight   C.moveTo    (2*x)    (y - 2)
GUI/SaveAs.hs view
@@ -27,7 +27,7 @@  saveAs :: HECs -> ViewParameters -> Double -> DrawingArea        -> (Int, Int, Render ())-saveAs hecs params' @ViewParameters{xScaleAreaHeight, width,+saveAs hecs params'@ViewParameters{xScaleAreaHeight, width,                                     height = oldHeight {-, histogramHeight-}}        yScaleAreaWidth yScaleArea =   let histTotalHeight = histXScaleHeight -- + histogramHeight
GUI/SummaryView.hs view
@@ -124,7 +124,7 @@       [ cellText := show ovf ]     addSparksColumn "Dud" $ \(_, SparkCounts _ _ _ dud _ _) ->       [ cellText := show dud ]-    addSparksColumn "GC'd" $ \(_, SparkCounts _ _ _ _ gc _) ->+    addSparksColumn "GCed" $ \(_, SparkCounts _ _ _ _ gc _) ->       [ cellText := show gc ]     addSparksColumn "Fizzled" $ \(_, SparkCounts _ _ _ _ _ fiz) ->       [ cellText := show fiz ]@@ -714,7 +714,7 @@       -- For events that contain discrete increments. We assume the event       -- is emitted close to the end of the process it measures,       -- so we ignore the first found event, because most of the process-      -- could have happened before the start of the current inverval.+      -- could have happened before the start of the current interval.       -- This is consistent with @alterCounter@. For interval beginning       -- at time 0, we start with @Just 0@.       alterIncrement _ Nothing = Just 0@@ -881,7 +881,7 @@                         }                   -- Cap is not in the GC. Mark it as idle to complete                   -- the identification of caps that take part-                  -- in the current GC. Without overwritin the mode,+                  -- in the current GC. Without overwriting the mode,                   -- the cap could be processed later on as if                   -- it took part in the GC, giving wrong results.                   ModeEnd  -> dGC { gcMode = ModeIdle }@@ -934,7 +934,7 @@                  ModeIdle  -> errorAs "scanEvents: EndGC ModeIdle"                               $ sd { dGCTable = IM.insert cap endedGC dGCTable }           SparkCounters crt dud ovf cnv fiz gcd _rem ->-            -- We are guranteed the first spark counters event has all zeroes,+            -- We are guaranteed the first spark counters event has all zeroes,             -- do we don't need to rig the counters for maximal interval.             let current = RtsSpark crt dud ovf cnv fiz gcd             in sd { dsparkTable =
GUI/Timeline.hs view
@@ -331,7 +331,7 @@     return (xv, xv')  ---------------------------------------------------------------------------------- Update the internal state and the timemline view after changing which+-- Update the internal state and the timeline view after changing which -- traces are displayed, or the order of traces.  queueRedrawTimelines :: TimelineState -> IO ()
GUI/Timeline/Render.hs view
@@ -170,7 +170,7 @@ -------------------------------------------------------------------------------  -- We currently have two different way of converting from logical units--- (ie timestamps in micro-seconds) to device units (ie pixels):+-- (i.e. timestamps in micro-seconds) to device units (i.e. pixels): --   * the first is to set the cairo context to the appropriate scale --   * the second is to do the conversion ourself --@@ -450,7 +450,7 @@   "Activity" showTrace _ TraceGroup{} = error "Render.showTrace" --- | Calcaulate the maximal Y value for a graph-like trace, or Nothing.+-- | Calculate the maximal Y value for a graph-like trace, or Nothing. traceMaxSpark :: Double -> Double -> Double -> Trace -> Maybe Double traceMaxSpark maxS _ _ TraceCreationHEC{}   = Just $ maxS * 1000 traceMaxSpark maxS _ _ TraceConversionHEC{} = Just $ maxS * 1000
GUI/Timeline/Render/Constants.hs view
@@ -18,7 +18,7 @@ firstTraceY :: Int firstTraceY = 13 --- Gap betweem traces in the timeline view+-- Gap between traces in the timeline view  tracePad :: Int tracePad = 20
GUI/Timeline/Sparks.hs view
@@ -239,7 +239,7 @@     drawVRulers     drawHRulers     -- Move to the bottom and draw the X scale. The Y scale is drawn-    -- independetly in another drawing area.+    -- independently in another drawing area.     translate 0 (fromIntegral histogramHeight)     drawXScale     restore
GUI/Timeline/Ticks.hs view
@@ -86,7 +86,7 @@ data XScaleMode = XScaleTime | XScaleLog Double Double deriving Eq  -- | Render the X (vertical) scale: render X axis and call ticks rendering.--- TODO: refactor common parts with renderVRulers, in particlar to expose+-- TODO: refactor common parts with renderVRulers, in particular to expose -- that ruler positions match tick positions. renderXScale :: Double -> Double -> Timestamp -> Int              -> (Int -> Int) -> XScaleMode
README.md view
@@ -2,18 +2,17 @@  [![Hackage](https://img.shields.io/hackage/v/threadscope.svg)](https://hackage.haskell.org/package/threadscope) [![Hackage-Deps](https://img.shields.io/hackage-deps/v/threadscope.svg)](http://packdeps.haskellers.com/feed?needle=threadscope)-[![Build Status](https://travis-ci.org/haskell/ThreadScope.svg?branch=master)](https://travis-ci.org/haskell/ThreadScope)-[![Build status](https://ci.appveyor.com/api/projects/status/tiwkb7k6p38dde03/branch/master?svg=true)](https://ci.appveyor.com/project/maoe/threadscope-44t6e/branch/master)+![CI](https://github.com/haskell/ThreadScope/workflows/CI/badge.svg?branch=master)  ## Using pre-built binaries  Currently [pre-built binaries](https://github.com/haskell/ThreadScope/releases) for the following platforms are provided: -* Ubuntu Trusty (64-bit)-* macOS (XCode 11)-* Windows (x64)+* Ubuntu 18.04 (64-bit)+* macOS 10.15+* Windows Server 2019 (x64) -GTK+2 needs to be installed for those binaries to work.+GTK+2 needs to be installed for these binaries to work.  On Windows, the [MSYS2](http://www.msys2.org) is the recommended way to install GTK+2. In MSYS2 MINGW64 shell: @@ -25,7 +24,7 @@  ## Building from source -Use `git clone` or `cabal unpack threadscope` to get the source and move into the threadscope directory.+Use `git clone` or `cabal get threadscope` to get the source and move into the threadscope directory.  ### Linux @@ -49,12 +48,12 @@ stack install # to build and install the binary ``` -### OS X+### macOS -GTK+ and GCC 9 are required:+GTK+ is required:  ```sh-brew install gtk+ gcc@9+brew install gtk+ ```  Then you can build threadscope using cabal:
threadscope.cabal view
@@ -1,6 +1,6 @@ Cabal-version:       1.24 Name:                threadscope-Version:             0.2.14+Version:             0.2.14.1 Category:            Development, Profiling, Trace Synopsis:            A graphical tool for profiling parallel Haskell programs. Description:         ThreadScope is a graphical viewer for thread profile@@ -36,11 +36,10 @@ Extra-source-files:  include/windows_cconv.h                      README.md                      CHANGELOG.md-Tested-with:         GHC == 8.2.2-                     GHC == 8.4.4-                     GHC == 8.6.5-                     GHC == 8.8.4-                     GHC == 8.10.3+Tested-with:         GHC == 8.8.4+                     GHC == 8.10.7+                     GHC == 9.0.2+                     GHC == 9.2.2  source-repository head   type:     git@@ -57,14 +56,14 @@                      array < 0.6,                      mtl < 2.3,                      filepath < 1.5,-                     ghc-events >= 0.13 && < 0.16,+                     ghc-events >= 0.13 && < 0.18,                      containers >= 0.2 && < 0.7,                      deepseq >= 1.1,-                     text < 1.3,-                     time >= 1.1 && < 1.12,+                     text < 2.1,+                     time >= 1.1 && < 1.13,                      bytestring < 0.12,                      file-embed < 0.1,-                     template-haskell < 2.17,+                     template-haskell < 2.19,                      temporary >= 1.1 && < 1.4    include-dirs:      include