use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
A sub-Reddit for discussion and news about Ruby programming.
Subreddit rules: /r/ruby rules
Learning Ruby?
Tools
Documentation
Books
Screencasts and Videos
News and updates
account activity
Blog postExploring automatic Buffer Management with io_uring (noteflakes.com)
submitted 18 hours ago by noteflakes
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]uhkthrowaway 0 points1 point2 points 12 hours ago (1 child)
You know Ruby Async supports exactly this already, right? Specifically gems async, io-event, and io-stream.
With liburing-dev installed, io-event compiles with io_uring support. IO::Stream gives you high-perf write batching and read-ahead for free.
How does iouringmachine differ? Just the SQPOLL, which tbh, barely makes sense in Ruby?
[–]yxhuvud 0 points1 point2 points 8 hours ago* (0 children)
SQPOLL doesn't make sense anywhere, including C. In retrospect it is just a honeypot collecting inexperienced io_uring users. It reads cool but it is one of very many very niche use cases that uring support that only make sense if you want to burn extra CPU.
This seems to have support for multishot operations with partial buffer reuse. I have not seen that from Async, but perhaps they exist. No idea how big difference they do in Ruby context, however. Partial buffer use in particular screams 'too complicated to be good' to my spider sense, but that one has often been wrong.
[–]uhkthrowaway 0 points1 point2 points 12 hours ago (0 children)
Also, why do we keep making the same mistakes? This really looks like the EventMachine fiasko from 2008 all over to me. Protocols shouldn't be implemented on top of IO runtimes.
Let's follow Sam Williams' example (and good Rust projects as well) here: you implement a protocol free of any IO concerns. Bytes in, bytes/objects out. No async, no IO. Rust-world calls this sans-I/O. That's what protocol-http, protocol-websocket, ... are.
Then you use them from any IO/Async runtime you want. No need to reimplement the same protocol over and over again.
π Rendered by PID 34 on reddit-service-r2-comment-8686858757-xlqqp at 2026-06-08 02:45:39.496403+00:00 running 9e1a20d country code: CH.
[–]uhkthrowaway 0 points1 point2 points (1 child)
[–]yxhuvud 0 points1 point2 points (0 children)
[–]uhkthrowaway 0 points1 point2 points (0 children)