Skip to content
/ zedio Public

A runtime for writing asynchronous applications with Modern C++, based on C++20 coroutine and liburing (io-uring)

License

Notifications You must be signed in to change notification settings

8sileus/zedio

Repository files navigation

Zedio

C++23 Platform

  ______  ______   _____    _____    ____  
 |___  / |  ____| |  __ \  |_   _|  / __ \ 
    / /  | |__    | |  | |   | |   | |  | |
   / /   |  __|   | |  | |   | |   | |  | |
  / /__  | |____  | |__| |  _| |_  | |__| |
 /_____| |______| |_____/  |_____|  \____/ 
                                                                       

Documentation: https://8sileus.github.io/zedio/

Zedio is an event-driven header library for writing asynchronous applications in modern C++:

Feature:

  • Multithreaded, work-stealing based task scheduler. (reference tokio)
  • Proactor event handling backed by io_uring.
  • Zero overhead abstraction, no virtual, no dynamic

Sub library:

  • I/O
  • NetWorking
  • FileSystem
  • Time
  • Sync
  • Log

It's being developed, if you're interested in zedio and want to participate in its development, see contributing

Example

// An echo server
// Ignore all errors
#include "zedio/core.hpp"
#include "zedio/net.hpp"

using namespace zedio;
using namespace zedio::async;
using namespace zedio::net;

auto process(TcpStream stream) -> Task<void> {
    char buf[1024]{};
    while (true) {
        auto len = (co_await (stream.read(buf))).value();
        if (len == 0) {
            break;
        }
        co_await stream.write_all({buf, len});
    }
}

auto server() -> Task<void> {
    auto addr = SocketAddr::parse("localhost", 9999).value();
    auto listener = TcpListener::bind(addr).value();
    while (true) {
        auto [stream, addr] = (co_await listener.accept()).value();
        spawn(process(std::move(stream)));
    }
}

auto main() -> int {
    // zedio::runtime::CurrentThreadBuilder::default_create().block_on(server());
    zedio::runtime::MultiThreadBuilder::default_create().block_on(server());
}

About

A runtime for writing asynchronous applications with Modern C++, based on C++20 coroutine and liburing (io-uring)

Topics

Resources

License

Stars

Watchers

Forks

Languages