daphne/CHANGELOG.txt
2017-02-01 12:03:57 -08:00

331 lines
8.7 KiB
Plaintext

Full release notes, with more details and upgrade information, are available at:
https://channels.readthedocs.io/en/latest/releases
1.0.2 (2017-02-01)
------------------
* Database connections are no longer force-closed after each test is run.
* Channel sessions are not re-saved if they're empty even if they're marked as
modified, allowing logout to work correctly.
* WebsocketDemultiplexer now correctly does sessions for the second/third/etc.
connect and disconnect handlers.
* Request reading timeouts now correctly return 408 rather than erroring out.
* The ``rundelay`` delay server now only polls the database once per second,
and this interval is configurable with the ``--sleep`` option.
1.0.2 (2017-01-12)
------------------
* Websockets can now be closed from anywhere using the new ``WebsocketCloseException``.
There is also a generic ``ChannelSocketException`` so you can do custom behaviours.
* Calling ``Channel.send`` or ``Group.send`` from outside a consumer context
(i.e. in tests or management commands) will once again send the message immediately.
* The base implementation of databinding now correctly only calls ``group_names(instance)``,
as documented.
1.0.1 (2017-01-09)
------------------
* WebSocket generic views now accept connections by default in their connect
handler for better backwards compatibility.
1.0.0 (2017-01-08)
------------------
* BREAKING CHANGE: WebSockets must now be explicitly accepted or denied.
See https://channels.readthedocs.io/en/latest/releases/1.0.0.html for more.
* BREAKING CHANGE: Demultiplexers have been overhauled to directly dispatch
messages rather than using channels to new consumers. Consult the docs on
generic consumers for more: https://channels.readthedocs.io/en/latest/generics.html
* BREAKING CHANGE: Databinding now operates from implicit group membership,
where your code just has to say what groups would be used and Channels will
work out if it's a creation, modification or removal from a client's
perspective, including with permissions.
* Delay protocol server ships with Channels providing a specification on how
to delay jobs until later and a reference implementation.
* Serializers can now specify fields as `__all__` to auto-include all fields.
* Various other small fixes.
0.17.3 (2016-10-12)
-------------------
* channel_session now also rehydrates the http session with an option
* request.META['PATH_INFO'] is now present
* runserver shows Daphne log messages
* runserver --nothreading only starts a single worker thread
* Databinding changed to call group_names dynamically and imply changed/created from that;
other small changes to databinding, and more changes likely.
0.17.2 (2016-08-04)
-------------------
* New CHANNELS_WS_PROTOCOLS setting if you want Daphne to accept certain
subprotocols
* WebsocketBindingWithMembers allows serialization of non-fields on instances
* Class-based consumers have an .as_route() method that lets you skip using
route_class
* Bindings now work if loaded after app ready state
0.17.1 (2016-07-22)
-------------------
* Bindings now require that `fields` is defined on the class body so all fields
are not sent by default. To restore old behaviour, set it to ['__all__']
* Bindings can now be declared after app.ready() has been called and still work.
* Binding payloads now include the model name as `appname.modelname`.
* A worker_ready signal now gets triggered when `runworker` starts consuming
messages. It does not fire from within `runserver`.
0.17.0 (2016-07-19)
-------------------
* Data Binding framework is added, which allows easy tying of model changes
to WebSockets (and other protocols) and vice-versa.
* Standardised WebSocket/JSON multiplexing introduced
* WebSocket generic consumers now have a 'close' argument on send/group_send
0.16.1 (2016-07-12)
-------------------
* WebsocketConsumer now has a http_user option for auto user sessions.
* consumer_started and consumer_finished signals are now available under
channels.signals.
* Database connections are closed whenever a consumer finishes.
0.16.0 (2016-07-06)
-------------------
* websocket.connect and websocket.receive are now consumed by a no-op consumer
by default if you don't specify anything to consume it, to bring Channels in
line with the ASGI rules on WebSocket backpressure.
* You no longer need to call super's setUp in ChannelTestCase.
0.15.1 (2016-06-29)
-------------------
* Class based consumers now have a self.kwargs
* Fixed bug where empty streaming responses did not send headers or status code
0.15.0 (2016-06-22)
-------------------
* Query strings are now decoded entirely by Django. Must be used with Daphne
0.13 or higher.
0.14.3 (2016-06-21)
-------------------
* + signs in query strings are no longer double-decoded
* Message now has .values(), .keys() and .items() to match dict
0.14.2 (2016-06-16)
-------------------
* Class based consumers now have built-in channel_session and
channel_session_user support
0.14.1 (2016-06-09)
-------------------
* Fix unicode issues with test client under Python 2.7
0.14.0 (2016-05-25)
-------------------
* Class-based consumer pattern and WebSocket consumer now come with Channels
(see docs for more details)
* Better testing utilities including a higher-level Client abstraction with
optional HTTP/WebSocket HttpClient variant.
0.13.1 (2016-05-13)
-------------------
* enforce_ordering now queues future messages in a channel rather than
spinlocking worker processes to achieve delays.
* ConsumeLater no longer duplicates messages when they're requeued below the
limit.
0.13.0 (2016-05-07)
-------------------
* Backpressure is now implemented, meaning responses will pause sending if
the client does not read them fast enough.
* DatabaseChannelLayer has been removed; it was not sensible.
0.12.0 (2016-04-26)
-------------------
* HTTP paths and query strings are now expected to be sent over ASGI as
unescaped unicode. Daphne 0.11.0 is updated to send things in this format.
* request.FILES reading bug fixed
0.11.0 (2016-04-05)
-------------------
* ChannelTestCase base testing class for easier testing of consumers
* Routing rewrite to improve speed with nested includes and remove need for ^ operator
* Timeouts reading very slow request bodies
0.10.3 (2016-03-29)
-------------------
* Better error messages for wrongly-constructed routing lists
* Error when trying to use signed cookie backend with channel_session
* ASGI group_expiry implemented on database channel backend
0.10.2 (2016-03-23)
-------------------
* Regular expressions for routing include() can now be Unicode under Python 3
* Last-resort error handling for HTTP request exceptions inside Django's core
code. If DEBUG is on, shows plain text tracebacks; if it is off, shows
"Internal Server Error".
0.10.1 (2016-03-22)
-------------------
* Regular expressions for HTTP paths can now be Unicode under Python 3
* route() and include() now importable directly from `channels`
* FileResponse send speed improved for all code (previously just for staticfiles)
0.10.0 (2016-03-21)
-------------------
* New routing system
* Updated to match new ASGI single-reader-channel name spec
* Updated to match new ASGI HTTP header encoding spec
0.9.5 (2016-03-10)
------------------
* `runworker` now has an --alias option to specify a different channel layer
* `runserver` correctly falls back to WSGI mode if no channel layers configured
0.9.4 (2016-03-08)
------------------
* Worker processes now exit gracefully (finish their current processing) when
sent SIGTERM or SIGINT.
* `runserver` now has a shorter than standard HTTP timeout configured
of 60 seconds.
0.9.3 (2016-02-28)
------------------
* Static file serving is significantly faster thanks to larger chunk size
* `runworker` now refuses to start if an in memory layer is configured
0.9.2 (2016-02-28)
------------------
* ASGI spec updated to include `order` field for WebSocket messages
* `enforce_ordering` decorator introduced
* DatabaseChannelLayer now uses transactions to stop duplicated messages
0.9.1 (2016-02-21)
------------------
* Fix packaging issues with previous release
0.9 (2016-02-21)
----------------
* Staticfiles support in runserver
* Runserver logs requests and WebSocket connections to console
* Runserver autoreloads correctly
* --noasgi option on runserver to use the old WSGI-based server
* --noworker option on runserver to make it not launch worker threads
* Streaming responses work correctly
* Authentication decorators work again with new ASGI spec
* channel_session_user_from_http decorator introduced
* HTTP Long Poll support (raise ResponseLater)
* Handle non-latin1 request body encoding
* ASGI conformance tests for built-in database backend
* Moved some imports around for more sensible layout