diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,4 +1,28 @@
+### 3.1.13.0
+
+- Add official support for [`SafeHaskell`](http://downloads.haskell.org/~ghc/latest/docs/html/users_guide/safe_haskell.html)
+
+    **NOTE**: This is the first version whose `SafeHaskell` properties
+    have become an intentional part of the API contract; previous
+    versions were merely accidentally safe-inferred (or not depending
+    on various factors; in other words, this was a fragile
+    property). If you rely on `SafeHaskell` to consider module imports
+    from `parsec` *safe*, this is the first version of `parsec` which
+    actually guarantees a well-defined state; you can declare this
+    requirement by either specifying
+
+        build-depends: parsec >= 3.1.13.0 && < 3.2
+
+    or, starting with `cabal-version:2.0`, via
+
+        build-depends: parsec ^>= 3.1.13.0
+
+- Drop support for GHC 7.0, GHC 7.2, and GHC 7.4.1; support window
+  starts with GHC 7.4.2.
+
 ### 3.1.12.0
+
+- Support limited to GHC 7.0 & GHC 7.2 only
 
 - Add `MonadFail` instance for `ParsecT`
 - Add `Semigroup`/`Monoid` instances for `ParsecT` (#80,#82)
diff --git a/parsec.cabal b/parsec.cabal
--- a/parsec.cabal
+++ b/parsec.cabal
@@ -1,6 +1,6 @@
-cabal-version:  >= 1.10
+cabal-version:  1.12
 name:           parsec
-version:        3.1.12.0
+version:        3.1.13.0
 
 synopsis:       Monadic parser combinators
 description:    Parsec is designed from scratch as an industrial-strength parser
@@ -21,18 +21,18 @@
 license-file:   LICENSE
 author:         Daan Leijen <daan@microsoft.com>, Paolo Martini <paolo@nemail.it>, Antoine Latter <aslatter@gmail.com>
 maintainer:     Herbert Valerio Riedel <hvr@gnu.org>
-homepage:       https://github.com/haskell/parsec
-bug-reports:    https://github.com/haskell/parsec/issues
+homepage:       https://github.com/hvr/parsec
+bug-reports:    https://github.com/hvr/parsec/issues
 category:       Parsing
 
 build-type:     Simple
-tested-with:    GHC ==8.2.2 || ==8.0.2 || ==7.10.3 || ==7.8.4 || ==7.6.3 || ==7.4.2 || ==7.2.2 || ==7.0.4
+tested-with:    GHC ==8.4.1 || ==8.2.2 || ==8.0.2 || ==7.10.3 || ==7.8.4 || ==7.6.3 || ==7.4.2
 
 extra-source-files: ChangeLog.md, README.md
 
 source-repository head
     type: git
-    location: https://github.com/haskell/parsec
+    location: https://github.com/hvr/parsec
 
 library
     hs-source-dirs: src
@@ -64,10 +64,10 @@
         Text.ParserCombinators.Parsec.Token
 
     build-depends:
-        base       >= 4.3   && < 5,
-        mtl        >= 1.1   && < 2.3,
-        bytestring >= 0.9.1 && < 0.11,
-        text       >= 0.2   && < 1.3
+        base       >= 4.5.1   && < 4.12,
+        mtl        >= 1.1.1   && < 2.3,
+        bytestring >= 0.9.2.1 && < 0.11,
+        text       >= 0.11.3  && < 1.3
 
     default-language: Haskell2010
     other-extensions:
@@ -80,15 +80,19 @@
         MultiParamTypeClasses
         PolymorphicComponents
         StandaloneDeriving
+        Safe
+        Trustworthy
         UndecidableInstances
 
     ghc-options: -Wall
     if impl(ghc >= 8.0)
-        ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
+        ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances -Wno-trustworthy-safe
     else
         -- provide/emulate `Control.Monad.Fail` and `Semigroup` API for pre-GHC8
         build-depends: fail == 4.9.*, semigroups == 0.18.*
 
+        if impl(ghc >= 7.10)
+            ghc-options: -fno-warn-trustworthy-safe
 
 test-suite parsec.
     type: exitcode-stdio-1.0
diff --git a/src/Text/Parsec.hs b/src/Text/Parsec.hs
--- a/src/Text/Parsec.hs
+++ b/src/Text/Parsec.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 {-|
 Module      :  Text.Parsec
 Copyright   :  (c) Daan Leijen 1999-2001, (c) Paolo Martini 2007
diff --git a/src/Text/Parsec/ByteString.hs b/src/Text/Parsec/ByteString.hs
--- a/src/Text/Parsec/ByteString.hs
+++ b/src/Text/Parsec/ByteString.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.Parsec.ByteString
diff --git a/src/Text/Parsec/ByteString/Lazy.hs b/src/Text/Parsec/ByteString/Lazy.hs
--- a/src/Text/Parsec/ByteString/Lazy.hs
+++ b/src/Text/Parsec/ByteString/Lazy.hs
@@ -1,9 +1,11 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.Parsec.ByteString.Lazy
 -- Copyright   :  (c) Paolo Martini 2007
 -- License     :  BSD-style (see the LICENSE file)
--- 
+--
 -- Maintainer  :  derek.a.elkins@gmail.com
 -- Stability   :  provisional
 -- Portability :  portable
diff --git a/src/Text/Parsec/Char.hs b/src/Text/Parsec/Char.hs
--- a/src/Text/Parsec/Char.hs
+++ b/src/Text/Parsec/Char.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP, FlexibleContexts #-}
+{-# LANGUAGE CPP, FlexibleContexts, Safe #-}
 
 -----------------------------------------------------------------------------
 -- |
diff --git a/src/Text/Parsec/Combinator.hs b/src/Text/Parsec/Combinator.hs
--- a/src/Text/Parsec/Combinator.hs
+++ b/src/Text/Parsec/Combinator.hs
@@ -1,3 +1,6 @@
+-- due to Debug.Trace
+{-# LANGUAGE Trustworthy #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.Parsec.Combinator
diff --git a/src/Text/Parsec/Error.hs b/src/Text/Parsec/Error.hs
--- a/src/Text/Parsec/Error.hs
+++ b/src/Text/Parsec/Error.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE Safe #-}
 
 -----------------------------------------------------------------------------
 -- |
diff --git a/src/Text/Parsec/Expr.hs b/src/Text/Parsec/Expr.hs
--- a/src/Text/Parsec/Expr.hs
+++ b/src/Text/Parsec/Expr.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE Safe #-}
 
 -----------------------------------------------------------------------------
 -- |
diff --git a/src/Text/Parsec/Language.hs b/src/Text/Parsec/Language.hs
--- a/src/Text/Parsec/Language.hs
+++ b/src/Text/Parsec/Language.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.Parsec.Language
diff --git a/src/Text/Parsec/Perm.hs b/src/Text/Parsec/Perm.hs
--- a/src/Text/Parsec/Perm.hs
+++ b/src/Text/Parsec/Perm.hs
@@ -3,6 +3,7 @@
 {-# LANGUAGE ExistentialQuantification #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE Safe #-}
 
 -----------------------------------------------------------------------------
 -- |
diff --git a/src/Text/Parsec/Pos.hs b/src/Text/Parsec/Pos.hs
--- a/src/Text/Parsec/Pos.hs
+++ b/src/Text/Parsec/Pos.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE Safe #-}
 
 -----------------------------------------------------------------------------
 -- |
diff --git a/src/Text/Parsec/Prim.hs b/src/Text/Parsec/Prim.hs
--- a/src/Text/Parsec/Prim.hs
+++ b/src/Text/Parsec/Prim.hs
@@ -6,6 +6,7 @@
 {-# LANGUAGE FunctionalDependencies #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE PolymorphicComponents #-}
+{-# LANGUAGE Safe #-}
 {-# LANGUAGE StandaloneDeriving #-}
 {-# LANGUAGE UndecidableInstances #-}
 
diff --git a/src/Text/Parsec/String.hs b/src/Text/Parsec/String.hs
--- a/src/Text/Parsec/String.hs
+++ b/src/Text/Parsec/String.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.Parsec.String
diff --git a/src/Text/Parsec/Text.hs b/src/Text/Parsec/Text.hs
--- a/src/Text/Parsec/Text.hs
+++ b/src/Text/Parsec/Text.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.Parsec.String
diff --git a/src/Text/Parsec/Text/Lazy.hs b/src/Text/Parsec/Text/Lazy.hs
--- a/src/Text/Parsec/Text/Lazy.hs
+++ b/src/Text/Parsec/Text/Lazy.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.Parsec.String
diff --git a/src/Text/Parsec/Token.hs b/src/Text/Parsec/Token.hs
--- a/src/Text/Parsec/Token.hs
+++ b/src/Text/Parsec/Token.hs
@@ -2,6 +2,7 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE PolymorphicComponents #-}
+{-# LANGUAGE Safe #-}
 
 -----------------------------------------------------------------------------
 -- |
diff --git a/src/Text/ParserCombinators/Parsec.hs b/src/Text/ParserCombinators/Parsec.hs
--- a/src/Text/ParserCombinators/Parsec.hs
+++ b/src/Text/ParserCombinators/Parsec.hs
@@ -1,15 +1,17 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.ParserCombinators.Parsec
 -- Copyright   :  (c) Paolo Martini 2007
 -- License     :  BSD-style (see the LICENSE file)
--- 
+--
 -- Maintainer  :  derek.a.elkins@gmail.com
 -- Stability   :  provisional
 -- Portability :  portable
--- 
+--
 -- Parsec compatibility module
--- 
+--
 -----------------------------------------------------------------------------
 
 module Text.ParserCombinators.Parsec
diff --git a/src/Text/ParserCombinators/Parsec/Char.hs b/src/Text/ParserCombinators/Parsec/Char.hs
--- a/src/Text/ParserCombinators/Parsec/Char.hs
+++ b/src/Text/ParserCombinators/Parsec/Char.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.ParserCombinators.Parsec.Char
diff --git a/src/Text/ParserCombinators/Parsec/Combinator.hs b/src/Text/ParserCombinators/Parsec/Combinator.hs
--- a/src/Text/ParserCombinators/Parsec/Combinator.hs
+++ b/src/Text/ParserCombinators/Parsec/Combinator.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.ParserCombinators.Parsec.Combinator
diff --git a/src/Text/ParserCombinators/Parsec/Error.hs b/src/Text/ParserCombinators/Parsec/Error.hs
--- a/src/Text/ParserCombinators/Parsec/Error.hs
+++ b/src/Text/ParserCombinators/Parsec/Error.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.ParserCombinators.Parsec.Error
diff --git a/src/Text/ParserCombinators/Parsec/Expr.hs b/src/Text/ParserCombinators/Parsec/Expr.hs
--- a/src/Text/ParserCombinators/Parsec/Expr.hs
+++ b/src/Text/ParserCombinators/Parsec/Expr.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.ParserCombinators.Parsec.Expr
diff --git a/src/Text/ParserCombinators/Parsec/Language.hs b/src/Text/ParserCombinators/Parsec/Language.hs
--- a/src/Text/ParserCombinators/Parsec/Language.hs
+++ b/src/Text/ParserCombinators/Parsec/Language.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.ParserCombinators.Parsec.Language
diff --git a/src/Text/ParserCombinators/Parsec/Perm.hs b/src/Text/ParserCombinators/Parsec/Perm.hs
--- a/src/Text/ParserCombinators/Parsec/Perm.hs
+++ b/src/Text/ParserCombinators/Parsec/Perm.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.ParserCombinators.Parsec.Perm
diff --git a/src/Text/ParserCombinators/Parsec/Pos.hs b/src/Text/ParserCombinators/Parsec/Pos.hs
--- a/src/Text/ParserCombinators/Parsec/Pos.hs
+++ b/src/Text/ParserCombinators/Parsec/Pos.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.ParserCombinators.Parsec.Pos
diff --git a/src/Text/ParserCombinators/Parsec/Prim.hs b/src/Text/ParserCombinators/Parsec/Prim.hs
--- a/src/Text/ParserCombinators/Parsec/Prim.hs
+++ b/src/Text/ParserCombinators/Parsec/Prim.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.ParserCombinators.Parsec.Prim
diff --git a/src/Text/ParserCombinators/Parsec/Token.hs b/src/Text/ParserCombinators/Parsec/Token.hs
--- a/src/Text/ParserCombinators/Parsec/Token.hs
+++ b/src/Text/ParserCombinators/Parsec/Token.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.ParserCombinators.Parsec.Token
