diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -17,7 +17,8 @@
 import Control.Monad
 import Data.Maybe       ( isNothing )
 import System.IO
-import Data.List
+import Data.Foldable
+import Data.List (intersperse, unzip4, transpose)
 
 -----------------------------------------------------------------------------
 -- Top level stuff
@@ -296,7 +297,7 @@
  = error "latex_show_results: Can't happen?"
 latex_show_results (r:rs) f stat _result_ok norm inc_baseline
         = makeLatexTable $
-             [ TableRow (BoxString prog : boxes) | 
+             [ TableRow (BoxString prog : boxes) |
                (prog,boxes) <- results_per_prog ] ++
              if nodevs then [] else
              [ TableLine,
@@ -845,9 +846,9 @@
            = str "\\hline\n"
 
 latexTableLayout :: Layout
-latexTableLayout boxes = 
+latexTableLayout boxes =
   foldr (.) id . intersperse (str " & ") . map abox $ boxes
-  where 
+  where
         abox (RunFailed NotDone) = id
         abox s = str (mungeForLaTeX (show s))
 
diff --git a/Slurp.hs b/Slurp.hs
--- a/Slurp.hs
+++ b/Slurp.hs
@@ -261,7 +261,7 @@
                       module_size    = Map.unionWith (flip const) ms1 ms2,
                       link_time      = lt1 `mplus` lt2,
                       run_time       = rt1 ++ rt2,
-                      elapsed_time   = et1 ++ et2, 
+                      elapsed_time   = et1 ++ et2,
                       mut_time       = mt1 ++ mt2,
                       mut_elapsed_time = me1 ++ me2,
                       instrs         = is1 `mplus` is2,
@@ -492,7 +492,7 @@
             Nothing -> parse_size progName modName ls
             Just (text, datas, _bss)
                  | progName == modName ->
-                        [(progName,emptyResults{binary_size = 
+                        [(progName,emptyResults{binary_size =
                                              Just (text + datas),
                                     compile_status = Success})]
                  | otherwise ->
diff --git a/nofib-analyse.cabal b/nofib-analyse.cabal
--- a/nofib-analyse.cabal
+++ b/nofib-analyse.cabal
@@ -1,5 +1,5 @@
 name:                nofib-analyse
-version:             8.5.0.20180213
+version:             9.4.4
 synopsis:            Parse and compare nofib runs
 description:
   The nofib benchmark suite is the standard benchmark suite
@@ -20,17 +20,17 @@
 category:            Development
 build-type:          Simple
 cabal-version:       >=1.10
-tested-with:         GHC==8.5.*, GHC==8.4.1, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2, GHC==7.2.2, GHC==7.0.4
+tested-with:         GHC==9.6.*, GHC==9.6.*, GHC==9.2.*, GHC==9.0.*, GHC==8.10.*, GHC==8.6.*, GHC==8.4.*, GHC==8.2.*, GHC==8.0.*
 
 
 executable nofib-analyse
   main-is:             Main.hs
   other-modules:       CmdLine, GenUtils, Slurp
   build-depends:
-    base >=4.3 && <4.12,
+    base >=4.3 && <4.18,
     regex-compat == 0.95.*,
     array >= 0.3 && < 0.6,
-    containers >= 0.4 && < 0.6
+    containers >= 0.4 && < 0.6.7
   default-language:    Haskell2010
 
 source-repository head
