3 ms·
IIRC, io-uring makes it very complex to expose a safe zero-overhead async interface, because the kernel expects any buffers that you pass it to live until the o
by wwright 6y ago
IIRC, io-uring makes it very complex to expose a safe zero-overhead async interface, because the kernel expects any buffers that you pass it to live until the operation completes (ie, you can’t allocate your own buffer, give it to the kernel, then decide you are uninterested and throw away your buffer). In Rust, this would mean that any buffer basically needs to be 'static.
It should be possible to create a an API that uses an intermediate, managed pool of buffers to pass to the kernel, but this would imply extra copies.
- steveklabnik 6y agowithoutboats has been writing a lot about these various issues while building ringbahn https://without.boats/blog/ https://without.boats/blog/
- zozbot234 6y agoAIUI, withoutboats has described this issue in depth in https://without.boats/blog/io-uring/ https://without.boats/blog/io-uring/ and follow-on blog posts, which also go into the design of ringbahn itself.