
#11394: Base should use native Win32 IO on Windows -------------------------------------+------------------------------------- Reporter: bgamari | Owner: Phyx- Type: task | Status: new Priority: normal | Milestone: 8.8.1 Component: Core Libraries | Version: 7.10.3 Resolution: | Keywords: Operating System: Windows | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: 806, 2189, | 2408, 4471, 7353, 7593, 10542, | 12873, 14530 Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Old description:
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:12 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
New description: 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:12 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. -- Comment (by Phyx-): Started designing the last piece of the puzzle which is non-threaded RTS. The non-threaded I/O manager seems to have a completely different interface on Windows, going so far as to having 3 Windows only prim-ops. Trying to understand why... With the threaded RTS I still have to track down a race condition somewhere. I think it has to do with the foreign pointer's finalizers... Wonder if I can turn off GC completely. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11394#comment:23 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler