← Graph

UringMachine

project 16 connections

Ruby concurrency library developed by Sharon Rosner for roughly a year prior to wroclove.rb 2026. A UringMachine instance is an io_uring instance paired with a run queue; it controls fiber lifetimes and exposes a low-level API closely mirroring the normal IO syscall interface (raw file descriptors and caller-provided buffers), plus higher-level abstractions: a UringMachine::IO class with buffered reads, a fiber scheduler implementation compatible with Ruby 3.0+ Fiber::SchedulerInterface, synchronization primitives (mutexes, queues) built on futex, OpenSSL integration via a custom BIO, and support for Linux-specific interfaces (pidfd, inotify). Supports IO-operation cancellation, universal timeouts, graceful shutdown via Ruby exceptions, multi-shot accept/timeout/read/receive, and fully automatic buffer management built on io_uring provided buffers with incremental consumption and segmented (linked-list) buffers. Named in homage to EventMachine, which it aims to replace.

status
active
license
open-source
language
Ruby
The talk introduces and explains UringMachine.
about
UringMachine project
UringMachine's benchmark advantage over threads and async.
about
UringMachine project
Explains UringMachine's positioning.
about
UringMachine project
How UringMachine's automatic buffer management works.
project UringMachine
related_to
Named in homage to EventMachine and intended as its replacement.
project UringMachine
related_to
A proof-of-concept Rack-compatible web server runs Rails on UringMachine; Sharon wants deeper Rails integration.
project UringMachine
related_to
Hanami tool
Sharon lists Hanami as a future integration target.
project UringMachine
related_to
Sidekiq tool
Sharon lists Sidekiq as a future integration target.
project UringMachine
uses
io_uring concept
UringMachine is built on Linux io_uring.
project UringMachine
uses
Fiber concept
UringMachine drives concurrency using Ruby fibers.
project UringMachine
uses
Run Queue concept
A UringMachine instance is an io_uring instance plus a run queue for fibers.
project UringMachine
uses
UringMachine builds automatic buffer management on io_uring provided buffers.
project UringMachine
uses
UringMachine exposes multi-shot accept/timeout/read/receive as iterator-style APIs.
project UringMachine
uses
Fiber Scheduler concept
UringMachine includes a Ruby Fiber Scheduler implementation for ecosystem compatibility.
project Syntropy
uses
UringMachine project
Syntropy runs on a custom Rack server on top of UringMachine.
person Sharon Rosner
works_on
UringMachine project
Sharon has been developing UringMachine for about a year.
role: author

Provenance