socketry / nio4r

Cross-platform asynchronous I/O primitives for scalable network clients and servers.
Other
965 stars 86 forks source link

Upgrade libev to version 4.33 #256

Closed jcmfernandes closed 3 years ago

jcmfernandes commented 3 years ago

Updating libev to version 4.33. The new version includes experimental support for linux's new asynchronous IO framework io_uring.

While we were baking support for the also experimental linuxaio backend into libev, we were not making it available. This PR "fixes" that too.

libev will never default to io_uring or linuxaio backends so the only way to use them is by explicitly request it via NIO::Selector.new or env var LIBEV_FLAGS.

Types of Changes

Testing

jcmfernandes commented 3 years ago

Must confess that the intent was only to play around with my fork and I ended up opening a PR here by mistake :sweat_smile: is this of interest? Support for linuxaio and io_uring in libev is currently marked as experimental.

tarcieri commented 3 years ago

@jcmfernandes looks good to me!

ioquatix commented 3 years ago

I only did a brief review but it looks okay to me.

jcmfernandes commented 3 years ago

Great! I updated the PR's description.

I'm going to document that support for io_uring and linuxaio are experimental.

jcmfernandes commented 3 years ago

Oh, and I ran async's test suite locally using this branch and it's all OK. I used LIBEV_FLAGS to run them with both linuxaio and io_uring backends.

ioquatix commented 3 years ago

Awesome, nice work!