WIP: Implement I/O event manager based on io_uring
This MR adds an I/O event manager backend based on the io_uring
interface available in modern Linux kernels. The relevant code is in /libraries/base/GHC/Event/IoUring.hsc
. It also contains the following changes to support the new backend:
- Port over the
io_uring
bindings from @bgamari intobase
. - Add a new
HAVE_IO_URING
check similar to HAVE_EPOLL, HAVE_KQUEUE etc. All changes are no-opped if this flag is not set.
Linked issue: #18390. NOT included yet is a unit test, since I was not sure what to test and how the CI environment looks (is io_uring
even available there?). It does work however, both "on my machine" and on AWS (blog post about test results).
Please take a few moments to verify that your commits fulfill the following:
-
are either individually buildable or squashed -
have commit messages which describe what they do -
have added source comments describing your change. For larger changes you likely should add a Note and cross-reference it from the relevant places. -
add a testcase to the testsuite. -
if your MR affects library interfaces (e.g. changes base
) or affects whether GHC will accept user-written code, please add the ~"user facing" label. -
updates the users guide if applicable -
mentions new features in the release notes for the next release
Edited by Wander Hillen