liburing is a C library that provides helpers for setting up and using the Linux kernel io_uring interface.
The library solves the problem of simplifying io_uring integration for applications that want to leverage asynchronous I/O without directly managing the full kernel-side implementation. It offers helper functions for io_uring instance setup and teardown, along with a simplified interface that abstracts away complexity while still allowing applications that need it to access the full kernel implementation details.
Developers should choose liburing if they are building applications on Linux that benefit from asynchronous I/O operations. The library is not tied to any specific kernel release, so newer versions can run on older kernels, though newer features require more recent kernel support. One important consideration is that io_uring accounts memory under the rlimit memlocked setting, which can be restrictive for regular users on some systems; this affects kernels up to version 5.11, with newer kernels being less dependent on this limit. The library provides both shared and static library variants, including FFI-specific versions for languages and applications that cannot use static inline functions.
The project includes an extensive regression and unit test suite covering both the library and kernel io_uring support, though this test suite is not expected to pass on older kernels and may even crash or hang them. The build system supports standard configuration and out-of-source builds, with options to specify C and C++ compilers. The library is dual licensed under LGPL and MIT, with kernel headers included under GPL with a Linux-syscall-note exception and MIT.