hella-http
netty-incubator-transport-io_uring | hella-http | |
---|---|---|
4 | 3 | |
177 | 83 | |
0.0% | - | |
7.9 | 3.9 | |
13 days ago | 8 months ago | |
Java | Java | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
netty-incubator-transport-io_uring
-
Use io_uring for network I/O
- For network I/O, Netty as an incubating transport that is promising [1].
- For disk I/O, JDK's Loom project [2] has mentioned its plan to rely on io_uring on Linux [3], but there's no ETA AFAIK.
[1] https://github.com/netty/netty-incubator-transport-io_uring
-
Zero-copy network transmission with io_uring
Yes, I think io_uring is slowly making its way onto Java ecosystem. Example: https://github.com/netty/netty-incubator-transport-io_uring
I guess it will go into the JVM too.
-
Java Virtual Threads Preview
Maybe maybe not. If you want to take advantage of things like io_uring you're going to be doing that with a JNI lib. Such as this Netty incubator support for it https://github.com/netty/netty-incubator-transport-io_uring
-
Advances In The ZIO 2.0 Scheduler
There is a Java library from Netty which has implemented io_uring and could be borrowed.
hella-http
- Use io_uring for network I/O
- I built an ultra high performance HTTP server in Java, powered by io_uring. Benchmark charts in the README. Is this useful and is it worth adding more features?
-
Understanding Java's Project Loom
I've seen io_uring heavily outperform epoll-based solutions for socket I/O on the JVM at large scales. If you're curious in a proof of concept with HTTP, my project hella-http uses nio_uring under the hood and has achieved some decent benchmarks!
What are some alternatives?
cats-effect - The pure asynchronous runtime for Scala
nio_uring - High performance I/O library for Java using io_uring under the hood
cats - Lightweight, modular, and extensible library for functional programming.
uring - Golang library for io_uring (without CGO)
ZIO - ZIO — A type-safe, composable library for async and concurrent programming in Scala
go - The Go programming language
eRPC - Efficient RPCs for datacenter networks
libuv - Cross-platform asynchronous I/O
liburing
rr - Record and Replay Framework
glommio - Glommio is a thread-per-core crate that makes writing highly parallel asynchronous applications in a thread-per-core architecture easier for rustaceans.