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: Incorrect Unicode input on Windows Console
- #7593: Unable to print exceptions of unicode identifiers
- #4471: Incorrect Unicode output on Windows Console
- #2189: hSetBuffering stdin NoBuffering doesn't work on Windows
As pointed on in [ticket:2189\#comment:30058](https://gitlab.haskell.org//ghc/ghc/issues/2189#note_30058) the ultimate solution to this would be to move all of GHC's IO to use the respective Win32 interfaces.
# Also relevant
- #7353: Windows lacks support in the I/O manager
- #806: hGetBufNonBlocking doesn't work on Windows
- #3081: Double output after Ctrl+C on Windows
- #13440: `putStr` has different behaviour on Windows
- #4942: `GHC.ConsoleHandler` does not call back application when Close button is pressed.
issue