From 2e407d6f7f3fb686d96d7be2c2c8210a9c5f4636 Mon Sep 17 00:00:00 2001 From: Jon Janzen Date: Sat, 20 Jul 2024 20:38:27 -0700 Subject: [PATCH] Preparing v4.2 release. --- CHANGELOG.txt | 13 +++++++ channels/__init__.py | 2 +- docs/releases/4.2.0.rst | 80 +++++++++++++++++++++++++++++++++++++++++ docs/releases/index.rst | 1 + 4 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 docs/releases/4.2.0.rst diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 513abfd2..f9f868ab 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,6 +1,19 @@ Full release notes, with more details and upgrade information, are available at: https://channels.readthedocs.io/en/latest/releases +4.2.0 (expected by EOY 2024) +------------------ + +Channels 4.2 introduces a couple of major but backwards-compatible +changes, including most notably enhanced async suppport and fixing +a long-standing bug where tests would try and close db connections +and erroneously fail. + +There are a number of other small bugfixes. Please ensure to review the +`Version 4.2.0 release notes +`_ for full +details. + 4.1.0 (2024-04-03) ------------------ diff --git a/channels/__init__.py b/channels/__init__.py index ae5610fd..60912c2d 100644 --- a/channels/__init__.py +++ b/channels/__init__.py @@ -1,4 +1,4 @@ -__version__ = "4.1.0" +__version__ = "4.2.0" DEFAULT_CHANNEL_LAYER = "default" diff --git a/docs/releases/4.2.0.rst b/docs/releases/4.2.0.rst new file mode 100644 index 00000000..caa850ac --- /dev/null +++ b/docs/releases/4.2.0.rst @@ -0,0 +1,80 @@ +4.2.0 Release Notes +=================== + +Channels 4.2 introduces a couple of major but backwards-compatible +changes, including most notably enhanced async suppport and fixing +a long-standing bug where tests would try and close db connections +and erroneously fail. + +Additionally, support has been added for Django 5.1. + +Enhanced Async Support +---------------------- + +Support for asynchronous consumers has been greatly improved. +The documentation has been updated to reflect the async ORM +features added in Django 4.2. A new `channels.db.aclose_old_connections` +function has been added to easily close old database connections +in async consumers. + +Warning: Channels now automatically closes connections in async +consumers before a new connection, after recieving message (but +before dispatching to consumer code), and after disconnecting. + +This change has been made to more closely align with Django's +request/response cycle, and to help users avoid attempting +to use stale/broken connections. + +Notably, Channels does NOT close connections before or after +a consumer **sends** data. This is to avoid database churn and +more closely align with user expectations. Instead, users are +expected to call `aclose_old_connections` occasionally during +long-lived async connections. + +Additionally, channels will automatically use the new async +interface for sessions if Django 5.1 or greater is installed. +This new interface can be slightly faster in certain cases +as it does not always need to context-switch into synchronous +execution. This does require a backwards-incompatible change to +`channels.sessions.InstanceSessionWrapper`: the `save_session` +function is now `async`. If `InstanceSessionWrapper` was being +subclassed in some way (note that this class is an implementation +detail and not documented) and `save_session` was being called +or overridden, it will need to be updated to be called with `await` +or defined as `async`, respectively. + + +Bugfixes & Small Changes +------------------------ + +* InMemoryChannelLayer has been greatly improved: it now honors + expiry times and per-channel capacities, has parallel sending + and a safer internal implementation. Note: queue capacities + can no longer be changed after a channel has been created. + + Thanks to @devkral (Alexander) + +* Database connections are no longer closed inside tests, which + prevents erroneous "Cannot operate on a closed database" errors + when running tets. + + Thanks to Jon Janzen. + +* An old import override and an unused deprecation message were removed + + Thanks to @sevdog (Devid) and Jon Janzen. + +* WebsocketCommunicator now has informative `assert` error messages + + Thanks to Karel Hovorka. + +* WebsocketConsumer now checks that "text" is not None before attempting + to use it. This improves support for Hypercorn. + + Thanks to JoaquĆ­n Ossandon. + +* BaseChannelLayer now has prototypes on all its methods to improve + the hit-rate for smart autocompleters when users need to author + their own channel layer and need to implement all required methods. + + Thanks to Jophy Ye. diff --git a/docs/releases/index.rst b/docs/releases/index.rst index 6c2ed298..f4954862 100644 --- a/docs/releases/index.rst +++ b/docs/releases/index.rst @@ -4,6 +4,7 @@ Release Notes .. toctree:: :maxdepth: 1 + 4.2.0 4.1.0 4.0.0 3.0.5