diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,10 @@
+1.5.2.0
+
+* Fix a bug in which HTML reports would render incorrectly when including
+  benchmark names containing apostrophes.
+
+* Only incur a dependency on `fail` on old GHCs.
+
 1.5.1.0
 
 * Add a `MonadFail Criterion` instance.
diff --git a/criterion.cabal b/criterion.cabal
--- a/criterion.cabal
+++ b/criterion.cabal
@@ -1,5 +1,5 @@
 name:           criterion
-version:        1.5.1.0
+version:        1.5.2.0
 synopsis:       Robust, reliable performance measurement and analysis
 license:        BSD3
 license-file:   LICENSE
@@ -90,7 +90,6 @@
     deepseq >= 1.1.0.0,
     directory,
     exceptions >= 0.8.2 && < 0.11,
-    fail == 4.9.*,
     filepath,
     Glob >= 0.7.2,
     microstache >= 1.0.1 && < 1.1,
@@ -100,7 +99,6 @@
     mwc-random >= 0.8.0.3,
     optparse-applicative >= 0.13,
     parsec >= 3.1.0,
-    semigroups,
     statistics >= 0.14 && < 0.15,
     text >= 0.11,
     time,
@@ -111,6 +109,10 @@
   if impl(ghc < 7.6)
     build-depends:
       ghc-prim
+  if !impl(ghc >= 8.0)
+    build-depends:
+      fail == 4.9.*,
+      semigroups
 
   default-language: Haskell2010
   ghc-options: -Wall -funbox-strict-fields
@@ -139,12 +141,15 @@
     base,
     base-compat-batteries,
     criterion,
-    optparse-applicative >= 0.13,
-    semigroups
+    optparse-applicative >= 0.13
 
   if impl(ghc < 7.6)
     build-depends:
       ghc-prim
+
+  if !impl(ghc >= 8.0)
+    build-depends:
+      semigroups
 
 test-suite sanity
   type:                 exitcode-stdio-1.0
diff --git a/templates/default.tpl b/templates/default.tpl
--- a/templates/default.tpl
+++ b/templates/default.tpl
@@ -287,7 +287,7 @@
   reports.map(mangulate);
 
   var benches = [{{#report}}"{{name}}",{{/report}}];
-  var ylabels = [{{#report}}[-{{number}},'<a href="#b{{number}}">{{name}}</a>'],{{/report}}];
+  var ylabels = [{{#report}}[-{{number}},"<a href=\"#b{{number}}\">{{name}}</a>"],{{/report}}];
   var means = $.scaleTimes([{{#report}}{{anMean.estPoint}},{{/report}}]);
   var stddevs = [{{#report}}{{anStdDev.estPoint}},{{/report}}];
   stddevs = $.scaleBy(means[1], stddevs);
