I was chatting with Alex Gaynor about UMCG-related stuff, and that made me wonder: Has anyone bolted io_uring to a fibers runtime, so that you get fibers that can basically do synchronous buffered filesystem I/O and socket I/O without thread switches on the fastpath, but if the I/O has to block, you can switch to a different fiber? That might be the closest thing to UMCG that we have in mainline Linux now...
Like, you could have something like a shim layer around libc that replaces read() and write() and so on with versions that still have a synchronous API contract, but internally they post work to io_uring, and instead of sleeping they yield to another fiber. And when the current fiber is done running and you have no other runnable fiber to switch to, you wait for io_uring to give you events that make fibers runnable again.
cc @axboeJens Axboe
If you have a fediverse account, you can quote this note from your own instance. Search https://infosec.exchange/users/jann/statuses/114656208467274397 on your instance and quote it. (Note that quoting is not supported in Mastodon.)