Base should use native Win32 IO on Windows
There are a variety of issues caused by the impedance mismatch between GHC's use of Posix I/O interfaces on Windows (particularly with respect to console I/O),
- #10542 (closed): Incorrect Unicode input on Windows Console
- #7593 (closed): Unable to print exceptions of unicode identifiers
- #4471 (closed): Incorrect Unicode output on Windows Console
- #2189 (closed): hSetBuffering stdin NoBuffering doesn't work on Windows
As pointed on in ticket:2189#comment:30058 the ultimate solution to this would be to move all of GHC's IO to use the respective Win32 interfaces.
Also relevant
- #7353 (closed): Windows lacks support in the I/O manager
- #806 (closed): hGetBufNonBlocking doesn't work on Windows
- #3081 (closed): Double output after Ctrl+C on Windows
-
#13440 (closed):
putStr
has different behaviour on Windows -
#4942:
GHC.ConsoleHandler
does not call back application when Close button is pressed.