ringbahn / ringbahn

safe bindings to io-uring

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Roadmap

withoutboats opened this issue · comments

I'm soon going to be employed and I don't know how much I will be able to contribute to ringbahn after that. My hope is to release a version 0.1 in a matter of days. Unfortunately, that means some things will have to be cut.

Here's my plan:

  1. Release iou v0.3 which wraps basically all of liburing's most recent release API. This will provide a good, up-to-date basis for interacting with io-uring, through ringbahn or not.
  2. Merge #47 and release v0.1. This will contain a lot of good APIs (most of the events are supported out of the box, files, TCP, Unix streams, etc) and fix outstanding issues like #22.

The big thing that will be missed is integrating better buffer management strategies with the IO handles. I won't be able to revisit #34 in that time. Unfortunately, buffer pre-allocation is necessary to make a full io-uring TCP server performant, so this will be a major blocker. I hope I will be able to return to it soon, and if not that someone else will be able and interested.

Also, I doubt I'll be able to benchmark or stress test ringbahn/maglev before starting work.

Providing ways to support pre-registered FDs, automatic buffer selection, and a fast and correct driver are the only things standing in the way of ringbahn being an awesome driver for io-uring based IO. With those things covered, ringbahn combined with the smol ecosystem's executor could be the basis of the absolute best performance network services on recent Linux kernels, while still giving users straightforward async/await IO objects.