uring v0.0.0-alpha2 — Pure Go io_uring alpha2 for Linux 6.18+ #2
hayabusa-cloud
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Introduction
uringis a minimal, pure Goio_uringlibrary for Linux 6.18+. It handlesring setup and teardown, SQE preparation, CQE decoding, and identity transport
through the kernel's 64-bit
user_datafield. On top of that it providesbuffer registration, provided buffer rings, multishot operations, zero-copy
send/receive, multicast helpers, and listener-setup primitives.
The design keeps the same boundary established in the initial alpha release:
kernel-facing mechanics and completion facts live at the API surface, while
scheduling, retry, and orchestration stay in higher layers. There is no built-
in event loop, scheduler, or goroutine management. In the dependency graph
uringstill sits between the foundation packages (zcall,iox,iofd,iobuf,sock,spin,dwcas,framer) and the proactor/runtime layersabove.
The hot submit-and-reap paths remain zero-allocation.
SQEContextstill packssubmission metadata into the 64-bit
user_datafield that the kernel round-trips in every CQE. This
alpha2release keeps that model intact whilehardening wrapper correctness, lifecycle documentation, and release readiness.
The result is a stronger alpha baseline for callers building runtimes,
dispatchers, or protocol engines on top of
uring.Usage
Drive completion reaping explicitly and keep retry policy in caller code:
Highlights
v0.0.0-alpha2is a hardening release for the standaloneuringpackage. Itkeeps the alpha1 surface area and design boundary, but improves the contract at
the package edge: wrapper APIs now preserve caller-selected SQE flags, direct-
slot/fixed-file paths behave correctly, lifecycle and teardown rules are more
explicit, and the current Linux-facing surface has been revalidated with broad
package tests and cross-build checks.
Architecture Continuity
The same core model from
alpha1remains in place:SQEContextis still the submission identity token and continues to round-trip operation metadata through
user_data.zero-allocation path plus the wider payload cases.
of the package surface.
uringitself.What's Changed
Bug Fixes
fixed-file operations keep
IOSQE_FIXED_FILEand related caller-selectedbits intact.
a real direct-socket failure mode that could surface as
-ENOTSOCKwhen aregistered-file slot was misinterpreted as a raw file descriptor.
Features
SQEContext.OrFlagsas an additive flag combinator for callers andwrapper code that must extend existing SQE flags without clobbering them.
Improvements
Start/Stop,Close,multishot retirement, and listener setup so caller-owned teardown rules are
explicit at the package boundary.
package's real wait/enter contract instead of timing guesses.
fixing wrapper correctness.
Compatibility
This discussion was created from the release uring v0.0.0-alpha2 — Pure Go io_uring alpha2 for Linux 6.18+.
Beta Was this translation helpful? Give feedback.
All reactions