Repository navigation
Release 3.5.0 — Linux io_uring Backend
Release 3.5.0 — Linux io_uring Backend
Overview
This release introduces a new io_uring-based backend for Linux, providing an alternative to the existing epoll engine.
It integrates directly into Uvent’s coroutine I/O pipeline and keeps the same high-level API, adding a lower-overhead I/O submission path on modern kernels.
Changes
New io_uring backend
-
Added:
SocketLinuxIOUringIOUringPoller
-
Supports:
recv/sendvia SQEsacceptvia SQEs- completion-queue–driven coroutine resumption
- proper timeout, disconnect, and refcount handling
-
Fully compatible with:
TCPServerSocket
TCPClientSocket
UDPSocket-
Enabled explicitly during build:
cmake -DUVENT_ENABLE_IO_URING=ON ..
-
Fallback remains
epollwhen the flag is disabled.
Internal I/O path cleanup
-
Separated Linux socket layer into:
SocketLinux(epoll)SocketLinuxIOUring(io_uring)
-
No impact on external APIs.
Impact
- No public API changes.
- Existing applications work unchanged.
- Linux users can opt-in to io_uring for lower syscall overhead.
- All other platforms remain unaffected.
Notes
io_uringrequires Linux kernel 5.1+ (recommended ≥ 5.10) and liburing.epollstays the default backend unless explicitly overridden.