diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.8.0
+
+* Warp 3.1
+
 ## 0.7.0.8
 
 * Compile with GHC 7.10
diff --git a/yackage.cabal b/yackage.cabal
--- a/yackage.cabal
+++ b/yackage.cabal
@@ -1,5 +1,5 @@
 Name:                yackage
-Version:             0.7.0.8
+Version:             0.8.0
 Synopsis:            Personal Hackage replacement for testing new packages.
 description:         Hackage documentation generation is not reliable. For up to date documentation, please see: <http://www.stackage.org/package/yackage>.
 Homepage:            http://github.com/snoyberg/yackage
@@ -19,8 +19,8 @@
 Executable yackage
   Main-is:             yackage.hs
   Build-depends:       base >= 4 && < 5
-                     , yesod-core >= 1.2
-                     , warp >= 1.3
+                     , yesod-core >= 1.4
+                     , warp >= 3.1
                      , Cabal
                      , bytestring
                      , text
diff --git a/yackage.hs b/yackage.hs
--- a/yackage.hs
+++ b/yackage.hs
@@ -37,7 +37,7 @@
 import Control.Monad (join, unless)
 import System.Console.CmdArgs
 import Network.Wai
-import Network.Wai.Handler.Warp (runSettings, defaultSettings, settingsPort, settingsHost)
+import Network.Wai.Handler.Warp (runSettings, defaultSettings, setPort, setHost)
 import Network.HTTP.Types (status403)
 import qualified Data.Text as T
 import Text.Blaze.Html (toHtml)
@@ -220,10 +220,10 @@
     m' <- liftIO $ newMVar m
     app <- toWaiApp $ Yackage path m' (password args) (title args)
     putStrLn $ "Running Yackage on port " ++ show (port args) ++ ", rootdir: " ++ path
-    runSettings defaultSettings
-        { settingsPort = port args
-        , settingsHost = if localhost args then "127.0.0.1" else "*"
-        } app
+    runSettings
+        ( setPort (port args)
+        $ setHost (if localhost args then "127.0.0.1" else "*")
+          defaultSettings) app
 
 unPackageName' (PackageName s) = s
 
