Skip to content

Releases: uNetworking/uWebSockets

v21.0.0-alpha2

12 May 12:22
Compare
Choose a tag to compare

v21 and io_uring

With more features added, more optimizations and more examples working properly, here's the current performance metrics comparing uWS v21 against latest denoland/fastwebsockets v0.4.2. As an aside, uWS can now do URL routed HTTP requests at 350k req/sec, which is even faster than what an optimized epoll server can do raw TCP echoing (325k msg/sec) on this machine. Just think about that for a moment - uWS is serving standards compliant HTTP faster than you could do even raw TCP a few years ago. Mind blown.

1 CPU-core, WebSocket echoing performance over varying message sizes  higher is better

v20.42.0

11 May 11:18
Compare
Choose a tag to compare

uWS never cared to optimize non-SSL, non-compressed semi-big WebSocket message sending, and so was a bit slower than what denoland/fastwebsockets v0.4.2 presented. This release adds such optimization and is now reliably and significantly faster in all cases.

Also, keep up to date for news on the v21 release where io_uring will be default and we see even bigger outperformance.

1 CPU-core, WebSocket server echoing performance over varying message sizes  higher is better

v21.0.0-alpha1

10 May 09:22
Compare
Choose a tag to compare

Linux 6.0+ io_uring as new backend

This alpha release adds initial (still to be further optimized) io_uring support in uWS. It is still very incomplete, but EchoServer, HelloWorld and even HelloWorldThreaded work. As do load_test and http_load_test and possibly other examples.

Here's a comparison against the (minimal) fastwebsockets project, and against uWS v20. We still have a bunch of optimizations to add, zero-copy for instance.

You can build it with LDFLAGS=/usr/lib/liburing.a WITH_IO_URING=1 make

1 CPU-core, WebSocket echoing on Linux 6 1  msg_sec, higher is better

v20.41.0

07 May 04:14
464e7d6
Compare
Choose a tag to compare
  • Adds the Autobahn|Testsuite as an automatic test run by GitHub Actions, rather than manually.
  • A WebSocket parser benchmark has been added.
  • A few optimizations to the WebSocketProtocol.h.

v20.40.0

30 Apr 21:54
Compare
Choose a tag to compare

Fixes an edge case where URI querystrings with keys with no value gets interpreted as invalid querystring.

Now the querystring "?one=&two=hello%20world" is considered valid, and HttpRequest.getQuery("two") will return "hello world" like it should.

This release also adds testing for the above case.

v20.39.0

21 Apr 17:37
Compare
Choose a tag to compare
  • Fixes a bug introduced in the bug fix of v20.38.0 🥇
  • Adds new fuzz target for involved functionality

v20.38.0

15 Apr 20:34
Compare
Choose a tag to compare

Fixes an edge case where calling HttpResponse::upgrade inside HttpResponse::cork from inside a third-party callback would crash.

Full Changelog: v20.37.0...v20.38.0

v20.37.0

07 Mar 08:35
8410f7e
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v20.36.0...v20.37.0

v20.36.0

08 Jan 22:52
Compare
Choose a tag to compare
  • Yet more fixes to subscription events

v20.35.0

03 Jan 20:52
8cf7e73
Compare
Choose a tag to compare
WebSocket subscription handler broken