Make stdout and stderr line-buffered
authorPatrick Palka <patrick@parcs.ath.cx>
Wed, 21 Aug 2013 20:53:15 +0000 (16:53 -0400)
committerPatrick Palka <patrick@parcs.ath.cx>
Tue, 27 Aug 2013 02:21:16 +0000 (22:21 -0400)
An unbuffered handle is very slow to output to and there doesn't seem to
be any reason to have these handles unbuffered.

ghc/InteractiveUI.hs
ghc/Main.hs

index 91648a3..80032f2 100644 (file)
@@ -388,6 +388,7 @@ interactiveUI config srcs maybe_exprs = do
         -- We don't want the cmd line to buffer any input that might be
         -- intended for the program, so unbuffer stdin.
         hSetBuffering stdin NoBuffering
+        hSetBuffering stderr NoBuffering
 #if defined(mingw32_HOST_OS)
         -- On Unix, stdin will use the locale encoding.  The IO library
         -- doesn't do this on Windows (yet), so for now we use UTF-8,
index 66db90a..868042b 100644 (file)
@@ -76,8 +76,8 @@ import Data.Maybe
 
 main :: IO ()
 main = do
-   hSetBuffering stdout NoBuffering
-   hSetBuffering stderr NoBuffering
+   hSetBuffering stdout LineBuffering
+   hSetBuffering stderr LineBuffering
    GHC.defaultErrorHandler defaultFatalMessager defaultFlushOut $ do
     -- 1. extract the -B flag from the args
     argv0 <- getArgs