Skip to content

Releases: uNetworking/uWebSockets

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

v20.34.0

28 Dec 06:31
Compare
Choose a tag to compare

Easy shutdown with App.close()

Calling this new function will:

  • Close and invalidate all open listen sockets.
  • Force close all open connections (both HTTP and WebSockets), calling their respective callbacks as needed (.onAborted, .close, .subscription).

This call can be used to gracefully close and release an App that needs maintenance.