Switch to new operation for obtaining file descriptors #20
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There is an effort to move some GHC-specific modules out of
base. Candidates for such moving areGHC.IO.Handle.TypesandGHC.IO.Handle.Internals. These modules are often used for obtaining POSIX file descriptors from Haskell handles. Such a use is also present in theterminal-sizepackage as part of the implementation of thehSizeoperation for POSIX.There is a proposal to add dedicated operations for operating-system handle acquisition to
base. A corresponding draft implementation can be found in GHC merge request !14732. The present pull request changes the implementation ofhSizeto use one of those new operations.Note that this pull request slightly changes the behavior of the POSIX version of
hSize, which previously returnedNothingwhen the given handle was not backed by a file descriptor but with the changes in this pull request throws an exception in such a situation. This actually makes the POSIX version ofhSizebehave analogous to the Windows version ofhSize, which may be considered a good thing.