For a full comparison of changes (82 commits, changing 137 files), see:
https://github.com/python-websockets/websockets/compare/16.1.1...17.0.1
Upstream release notes:
https://websockets.readthedocs.io/en/stable/project/changelog.html
17.0.1
======
July 31, 2026
Bug fixes
---------
* Restored compatibility of serve_forever() in the asyncio implementation
with third-party event loops such as uvloop.
* Prevented the Trio implementation from crashing when backpressure kicks
in, i.e. when receiving data faster than the application can process it.
17.0
====
July 29, 2026
Backwards-incompatible changes
------------------------------
* websockets 17.0 requires Python ≥ 3.11.
- websockets 16.1 is the last version supporting Python 3.10.
* Aliases for modules moved or deprecated in 9.0 are removed.
- See the changelog of version 9.0 for details.
* process_request may receive requests using an HTTP method other than
GET or using the HTTP/1.0 protocol.
- Previously, the server closed the connection without returning an HTTP
response. Now, process_request runs and can return an HTTP response.
* Several boolean arguments are now keyword-only.
- If you were passing some of the following as positional arguments, you
must update your code to pass them as keyword arguments.
* send(text=...)
* ping(ack_on_close=...)
* broadcast(raise_exceptions=...)
* Encoding and decoding non-ASCII headers in handshake requests and
responses changed.
- The previous behavior was undocumented, inconsistent, and didn’t match
the HTTP specification. If you relied on the encoding being UTF-8 or
ASCII with surrogate escapes, depending on the context, you must
switch to ISO-8859-1.
* In the threading implementation, the socket argument is renamed to sock.
- The first argument of ClientConnection and ServerConnection is renamed
from socket to sock for consistency with connect() and serve(). The
first argument of Server is also renamed. If you’re passing it as a
keyword argument, you must change your code.
New features
------------
* websockets 17.0 introduces a trio implementation.
- It is an alternative to the asyncio implementation.
- See websockets.trio.client.connect()
and websockets.trio.server.serve() for details.
* Validated compatibility with Python 3.15.
* Added broadcast() to the threading implementation.
* Made the set of active connections available in the Server.connections
property in the threading implementation.
* Closed connections when shutting down the server in the threading
implementation. See shutdown() for details.
* Added the --insecure option to the websockets CLI to disable TLS
certificate validation.
Improvements
------------
* Supported non-ASCII headers consistently in handshake requests and
responses, using ISO-8859-1 encoding.
* Replied with HTTP 405 Method Not Allowed when the handshake request
doesn’t use the GET method, and with HTTP 505 HTTP Version Not
Supported when it doesn’t use HTTP/1.1, instead of closing the
connection.
* Replied with HTTP 414 URI Too Long or 431 Request Header Fields Too
Large when the handshake request exceeds a security limit, instead of
closing the connection.
* Reduced noise in server logs when clients fail to establish a
connection.
* Clarified logs when process_request sends a plain HTTP response, without
attempting to open a WebSocket connection.
* Added the reconnect_delays argument for customizing the delays between
reconnection attempts in connect(), beyond existing WEBSOCKETS_BACKOFF_*
environment variables.
* Added wheels for Windows ARM64 and Linux i686.
Bug fixes
---------
* Restored compatibility of the websockets CLI with Windows.
* Fixed serve_forever() in the asyncio implementation so that canceling
it always closes connections gracefully.
* Fixed a bug that could delay or block the client in the threading
implementation on macOS when the opening handshake fails.
Signed-off-by: Tim Orling <tim.orling@konsulko.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
SRC_URI += "file://run-ptest"
-SRC_URI[sha256sum] = "db234eda965dcce15df96bb9709f587cd87d4d52aaf0e80e2f34ec04c7670c57"
+SRC_URI[sha256sum] = "5baa9bc0dfbae8c507e51c8cf1b6d4628086f7a87bbd3a9952bd5f035451f1cc"
BBCLASSEXTEND = "native nativesdk"