winio: Add support to iserv for winio
This fixes it so that iserv
gets the same dynamic dispatch support that the rest of the runtime has for picking between I/O managers.
It also fixes some probably safe but not entirely cludge we added years ago to coerce a HANDLE
into a CInt
because usually only the lower bits are set. But a HANDLE
is a pointer, so it'll be longer than a CInt
on 64-bit platforms.
It's usually fine since there's usually not enough Handles open to exceed the limit but lets play it safe.
This requires some fixes in process
to work properly https://github.com/haskell/process/pull/234 because of this I don't know if a backport is warranted or not or how to do that.
Fix #20955 (closed)