diff --git a/cli/GingerCLI.hs b/cli/GingerCLI.hs
--- a/cli/GingerCLI.hs
+++ b/cli/GingerCLI.hs
@@ -8,7 +8,8 @@
 
 import Text.Ginger
 import Text.Ginger.Html
-import Data.Text as Text
+import Data.Text (Text)
+import qualified Data.Text as Text
 import qualified Data.Aeson as JSON
 import qualified Data.Yaml as YAML
 import Data.Maybe
diff --git a/ginger.cabal b/ginger.cabal
--- a/ginger.cabal
+++ b/ginger.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.2
 name:                ginger
-version:             0.10.5.2
+version:             0.10.6.0
 synopsis:            An implementation of the Jinja2 template language in Haskell
 description:         Ginger is Jinja, minus the most blatant pythonisms. Wants
                      to be feature complete, but isn't quite there yet.
@@ -24,11 +24,11 @@
 common deps
   build-depends: base >=4.8 && <5
                , aeson >=1.4.2.0 && <2.3
-               , bytestring >=0.10.8.2 && <0.12
-               , data-default >= 0.5 && <0.8
+               , bytestring >=0.10.8.2 && <0.13
+               , data-default >= 0.5 && <0.9
                , mtl >= 2.2 && <2.4
-               , text >=1.2.3.1 && <2.1
-               , time >= 0.1.6.0 && <1.13
+               , text >=1.2.3.1 && <2.2
+               , time >= 0.1.6.0 && <1.15
                , transformers >= 0.3 && <0.7
                , unordered-containers >= 0.2.5 && <0.3
                , utf8-string >=1.0.1.1 && <1.1
@@ -50,8 +50,8 @@
   -- other-modules:
   -- other-extensions:
   build-depends: aeson-pretty >=0.8.7 && <0.9
-               , containers >=0.6.4 && <0.7
-               , filepath >= 1.3 && <1.5
+               , containers >=0.6.4 && <0.8
+               , filepath >= 1.3 && <1.6
                , http-types >= 0.8 && (< 0.11 || >= 0.12) && <0.13
                , parsec >= 3.0 && <3.2
                , regex-tdfa >=1.2.3 && <=1.4
@@ -85,6 +85,6 @@
     hs-source-dirs: test
     default-language: Haskell2010
     build-depends: ginger
-                 , tasty >=1.2 && <1.5
+                 , tasty >=1.2 && <1.6
                  , tasty-hunit >=0.10.0.1 && <0.11
-                 , tasty-quickcheck >=0.10 && <0.11
+                 , tasty-quickcheck >=0.10 && <0.12
diff --git a/src/Text/Ginger/Run.hs b/src/Text/Ginger/Run.hs
--- a/src/Text/Ginger/Run.hs
+++ b/src/Text/Ginger/Run.hs
@@ -186,6 +186,7 @@
     , ("product", fromFunction . variadicNumericFunc 1 $ Prelude.product)
     , ("ratio", fromFunction . variadicNumericFunc 1 $ Scientific.fromFloatDigits . ratio . Prelude.map Scientific.toRealFloat)
     , ("replace", fromFunction gfnReplace)
+    , ("reverse", fromFunction gfnReverse)
     , ("round", fromFunction . unaryNumericFunc 0 $ Prelude.fromIntegral . Prelude.round)
     , ("show", fromFunction . unaryFunc $ fromString . show)
     , ("slice", fromFunction gfnSlice)
diff --git a/src/Text/Ginger/Run/Builtins.hs b/src/Text/Ginger/Run/Builtins.hs
--- a/src/Text/Ginger/Run/Builtins.hs
+++ b/src/Text/Ginger/Run/Builtins.hs
@@ -453,6 +453,17 @@
         (Nothing, Nothing) ->
             return def
 
+gfnReverse :: forall p m h. Monad m => Function (Run p m h)
+gfnReverse args = do
+    let parsedArgs = extractArgsDefL
+            [ ("reversee", def)
+            ]
+            args
+    reversee <- case parsedArgs of
+        Right [reversee] -> return reversee
+        _ -> throwHere $ ArgumentsError (Just "reverse") "expected: (reversee)"
+    return . toGVal $ List.reverse <$> asList reversee
+    
 
 gfnSort :: forall p m h. Monad m => Function (Run p m h)
 gfnSort args = do
