diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,10 @@
 All notable changes to this project will be documented in this file.
 This project adheres to [Semantic Versioning](http://semver.org/).
 
+## [0.3.0.1] - 2020-03-21
+
+- GHC 8.8 warnings fixed
+
 ## [0.3.0.0] - 2019-09-29
 
 ### Added
@@ -77,6 +81,7 @@
 
 - Use utf8-string parsing for unicode literals.
 
+[0.3.0.1]: https://gitlab.com/dpwiz/hedn/tree/v0.3.0.1
 [0.3.0.0]: https://gitlab.com/dpwiz/hedn/tree/v0.3.0.0
 [0.2.0.1]: https://gitlab.com/dpwiz/hedn/tree/v0.2.0.1
 [0.2.0.0]: https://gitlab.com/dpwiz/hedn/tree/0.2.0.0
diff --git a/hedn.cabal b/hedn.cabal
--- a/hedn.cabal
+++ b/hedn.cabal
@@ -1,13 +1,13 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.31.1.
+-- This file has been generated from package.yaml by hpack version 0.31.2.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 51ffeea2c9239d08c2d1e746437afcd12120103d004da5308747b27a697dcd05
+-- hash: f3b90ccbe3e47e61b73ecfb02d73d8aef5786484faa6ee6c6a2d0dc8594a4627
 
 name:           hedn
-version:        0.3.0.0
+version:        0.3.0.1
 synopsis:       EDN parsing and encoding
 description:    A EDN parsing and encoding library.
                 .
@@ -18,7 +18,7 @@
 copyright:      (c) 2019 Alexander Bondarenko
 license:        BSD3
 license-file:   LICENSE
-tested-with:    GHC==8.2.2, GHC==8.4.4, GHC==8.6.3, GHC==8.8.1
+tested-with:    GHC==8.2.2, GHC==8.4.4, GHC==8.6.5, GHC==8.8.3
 build-type:     Simple
 extra-source-files:
     CHANGELOG.md
@@ -51,7 +51,7 @@
     , containers >=0.5.7 && <0.7
     , deepseq >=1.4 && <2
     , deriving-compat >=0.3.6 && <0.6
-    , megaparsec >=7.0 && <8
+    , megaparsec >=7.0 && <9
     , parser-combinators >=1.0 && <2
     , prettyprinter >=1.2 && <2
     , scientific >=0.3 && <0.4
@@ -80,7 +80,7 @@
     , containers >=0.5.7 && <0.7
     , hedgehog >=0.6 && <2
     , hedn >=0.2 && <1
-    , megaparsec >=7.0 && <8
+    , megaparsec >=7.0 && <9
     , text >=1.2 && <2
     , time >=1.6 && <2
     , uuid-types >=1.0 && <2
diff --git a/lib/Data/EDN/AST/Printer.hs b/lib/Data/EDN/AST/Printer.hs
--- a/lib/Data/EDN/AST/Printer.hs
+++ b/lib/Data/EDN/AST/Printer.hs
@@ -1,4 +1,5 @@
-{-# LANGUAGE LambdaCase        #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Data.EDN.AST.Printer
@@ -9,7 +10,10 @@
 
 import Data.Char (ord)
 import Data.Foldable (toList)
+#if MIN_VERSION_base(4,13,0)
+#else
 import Data.Semigroup ((<>))
+#endif
 import Data.Text (Text)
 import Data.Text.Prettyprint.Doc (Doc, pretty, (<+>))
 import Text.Printf (printf)
diff --git a/lib/Data/EDN/Class/Parser.hs b/lib/Data/EDN/Class/Parser.hs
--- a/lib/Data/EDN/Class/Parser.hs
+++ b/lib/Data/EDN/Class/Parser.hs
@@ -16,7 +16,10 @@
 
 import Control.Applicative (Alternative(..))
 import Control.Monad (MonadPlus(..))
+#if MIN_VERSION_base(4,13,0)
+#else
 import Data.Semigroup (Semigroup(..))
+#endif
 
 import qualified Control.Monad.Fail as Fail
 import qualified Data.List as List
diff --git a/lib/Data/EDN/QQ.hs b/lib/Data/EDN/QQ.hs
--- a/lib/Data/EDN/QQ.hs
+++ b/lib/Data/EDN/QQ.hs
@@ -1,10 +1,11 @@
 {-# LANGUAGE AllowAmbiguousTypes #-}
-{-# LANGUAGE FlexibleInstances   #-}
-{-# LANGUAGE LambdaCase          #-}
-{-# LANGUAGE OverloadedStrings   #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TemplateHaskell     #-}
-{-# LANGUAGE TypeApplications    #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeApplications #-}
 
 -- XXX: Lift instances. Don't want to pollute main module with TH shenanigans.
 {-# OPTIONS_GHC -fno-warn-orphans #-}
@@ -19,7 +20,10 @@
   ) where
 
 import Data.Data (Data)
+#if MIN_VERSION_base(4,13,0)
+#else
 import Data.Semigroup ((<>))
+#endif
 import Data.Text (Text)
 import Data.Typeable (cast)
 import Language.Haskell.TH.Quote (QuasiQuoter(..))
