https://github.com/mpenet/enso 1.0.0-beta94 is out! https://github.com/mpenet/enso is a high performance HTTP/1.1, HTTP/2, HTTP/3 server adapter written in java and optimized for ring, with no-dependency besides Clojure. HTTP/3 is opt-in and bundles cloudflare/quiche via a separate jar. In a comparison with http-kit, Jetty, Aleph and Netty, https://github.com/mpenet/enso has the highest throughput on every scenario and allocates a baseline of only ~393 bytes per HTTP/1.1 request where the others allocate 3.6 to 4 KB. see https://github.com/mpenet/enso/blob/main/doc/performance.md. This release was focused on stability and correctness, it went through hours/days of https://github.com/mpenet/enso/blob/main/doc/testing.md#property-and-fuzz-tests and https://github.com/mpenet/enso/blob/main/doc/testing.md#soak-and-chaos-run testing, https://github.com/mpenet/enso/blob/main/doc/testing.md#conformance-suites verification and a substantial refactoring. It's still WIP but it should be considered quite stable already.
Awesome stuff. Since it depends only on Clojure would you assume it should be usable with non-jvm Clojures, like Jolt?
No it's mostly written in java with a thin clj layer
I see, thanks!
besides Virtual Threads does it make use of other new features from latest JDKs?
not really. i would like to get rid of quiche eventually for http3, but for now making it optional was a tradeoff as there are no mature enough http3 implementations for java just yet.
How does this compare to something like nima?
It's inspired by it for some parts. I'd say it's quite similar, but with added http3 support, and a lot less overhead, less unnecessary abstractions for clj folks, highly optimized for ring.
This looks really good! We use nima at $work because there hasn't been any clojure-native solution that comes close - this looks like it might be a full replacement for us. Nice stuff