Condy v1.1.0
C++ Asynchronous System Call Layer for Linux
Loading...
Searching...
No Matches
Condy🍬

C++ Asynchronous System Call Layer for Linux, Powered by io_uring and C++20 Coroutines

Condy is designed to provide an intuitive, high-performance coroutine runtime on top of io_uring:

  • 🛠️ Comprehensive io_uring Integration Designed to integrate and maintain support for most io_uring features, with ongoing updates to track kernel and liburing advancements.
  • 🏃 Low Overhead Efficient template-based abstractions and precise lifetime management eliminate nearly all heap allocations outside coroutine frames, resulting in extremely low runtime overhead.
  • 💡 Intuitive Programming Model Write asynchronous code in a direct, readable style using C++20 coroutines—no callbacks. Friendly APIs, high-level combinators, and channels make complex async flows easy to express.

Quick Start

// hello.cpp
#include <condy.hpp>
condy::Coro<> co_main() {
std::string msg = "Hello, Condy!\n";
co_await condy::async_write(STDOUT_FILENO, condy::buffer(msg), 0);
}
int main() { condy::sync_wait(co_main()); }
Coroutine type used to define a coroutine function.
Definition coro.hpp:26
Main include file for the Condy library.
auto async_write(Fd fd, Buffer &&buf, __u64 offset)
See io_uring_prep_write.
Definition async_operations.hpp:386
T sync_wait(Runtime &runtime, Coro< T, Allocator > coro)
Synchronously wait for a coroutine to complete in the given runtime.
Definition sync_wait.hpp:24
MutableBuffer buffer(void *data, size_t size)
Create a buffer object from various data sources.
Definition buffers.hpp:84
# Make sure liburing (>=2.3) is installed on your system
# On Ubuntu: sudo apt install liburing-dev
clang++ hello.cpp -o hello -std=c++20 -luring -I./include
./hello
# Hello, Condy!

See Documentation for more details.

Documentation

Support

  • For questions, bug reports, or feature requests, please open an issue.
  • Pull requests are welcome!