Skip to content

Repository files navigation

Condy🍬

C++LicenseReleaseStars

CI (Main)CI (Latest Kernel)CI (Toolchain)CI (Static Check)Deploy Docs

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_awaitcondy::async_write(STDOUT_FILENO, condy::buffer(msg), 0);
}
intmain() { condy::sync_wait(co_main()); }
# Make sure liburing (>=2.3) is installed on your system# On Ubuntu: sudo apt install liburing-dev
c++ 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!

About

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

Topics

Resources

Stars

21 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages