Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare Cabal for new Windows I/O manager in GHC 8.12 #6847

Closed
Mistuke opened this issue May 25, 2020 · 3 comments
Closed

Prepare Cabal for new Windows I/O manager in GHC 8.12 #6847

Mistuke opened this issue May 25, 2020 · 3 comments
Assignees
Milestone

Comments

@Mistuke
Copy link
Collaborator

Mistuke commented May 25, 2020

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.

@phadej
Copy link
Collaborator

phadej commented Jun 2, 2020

I merged #6865, so the #6848 would resolve this issue. Am I right, @Mistuke ?

@Mistuke
Copy link
Collaborator Author

Mistuke commented Jun 2, 2020

I merged #6865, so the #6848 would resolve this issue. Am I right, @Mistuke ?

yes, I have an update for it but haven't posted it yet as I'm trying to get clean bootstrap + testsuite run so I know all libraries are good. Should be done this week.

@phadej
Copy link
Collaborator

phadej commented Jun 21, 2020

This is resolved as far as I can see

@phadej phadej closed this as completed Jun 21, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants