Description
Describe the bug
GHC 8.12 will have a new asynchronous I/O manager for Windows. This new I/O manager will require changes to any library that uses GHC internal I/O modules such as GHC.IO.FD
.
When the new I/O manager is enabled any use of FD
will lead to an error. So there are two options, avoid the use of GHC internals and stick to end user interfaces (i.e. only use Handle
).
Or detect the new I/O manager support with the macro __IO_MANAGER_WINIO__
and provide a codepath for versions of functions that use HANDLE
instead of FD
.
GHC provides some helper utilities to switch between the two. Namely the helper operator <!>
.
Cabal seems to only use FD
in Cabal/Distribution/Compat/CreatePipe.hs
, so is this module still needed?
If it is, anonymous pipes can't be used and instead named pipes opened with OVERLAPPED
support with proper security descriptors should be used.
System information
- Windows
- GHC 8.12
Additional context
Also the minimum supported versions of binaries compiled with GHC 8.12 will be moved up to Vista SP1. For while the user will be able to switch between the two managers at startup.