## Ver. 1.1.3 - 2016-Feb-19 Make sure the ``asyncio.coroutine`` decorator is used by all pulsar coroutines This allows to use pulsar to write python 3.5 compatible code with the ``async/await`` syntax. [709f9ff](https://github.com/quantmind/pulsar/commit/709f9ff0e9df9858100a9b2e2ef154ad57391a07) ### Documentation * Mcve reference in the readme [b49434d](https://github.com/quantmind/pulsar/commit/b49434d3e9a0f016e6b7630bdbfab0327ab3b002) * Removed CHANGELOG.rst from the top level directory and created a folder inside the docs which contains a list of minor releases * Started using markdown in documentation. [6b20825](https://github.com/quantmind/pulsar/commit/6b208259b5937fd0e4468dcb263e2f365df86a66) ### Http * Better keep-alive management of HTTP connections [df1be4b](https://github.com/quantmind/pulsar/commit/df1be4bc4347b7d71de677bc73d5b8c9085d90f7) * Http client uses the base class connection method rather than using a different one [b584828](https://github.com/quantmind/pulsar/commit/b5848289bb0605ebe97d1179260b47d9889a9887) * The http response object has the links attribute which return a parsed Links headers dictionary. Code from python requests [023ca50](https://github.com/quantmind/pulsar/commit/023ca508d2ecd222924e0e1087ea88a6cbbaadda) ### Wsgi * Use file_response function in MediaMixin.serve_file method [c012af1](https://github.com/quantmind/pulsar/commit/c012af1855c704d352dec3a045911e7b1a14f572) * FileRouter is now a proxy for MediaRouter ## Ver. 1.1.2 - 2016-Feb-04 * Removed ``release`` application and created a [new repository](https://github.com/quantmind/pulsar-agile) for it * ``wait`` method in ``greenio`` app accepts an extra parameter for checking if in child greenlet * Specialised ``MustBeInChildGreenlet`` error for functions which should be called on a child greenlet * Critical bug fix in ``pubsub`` subscribe method for Redis backend * Added an asynchronous ``wsgi.file_wrapper`` to the WSGI environment * Added ``file_response`` utility to serve local files * Introduced ``pulsar.ensure_future`` in place of ``pulsar.async`` ## Ver. 1.1.1 - 2016-Jan-06 * Full support for python 3.5 * Pulsar **1.1.x** is the last minor release ("major.minor.micro") to support python 3.4 * From pulsar **1.2.x**, support for python 3.4 will be dropped and the new [async-await][] syntax will be used in the whole codebase ### Core * Added CI for python 3.5 * Added ``debug`` properties to all ``AsyncObject``. The property returns the event loop debug mode flag ### Http * Backward incompatible changes with API much closer to [requests][] and far better support for streaming both uploads and downloads * Added ``content`` attribute to ``HttpResponse``, in line with [requests][] * Ability to pass ``stream=True`` during a request, same API as python [requests][] * Added the ``raw`` property to the Http Response, it can be used in conjunction with ``stream`` to stream http data. Similar API to [requests][] * Renamed ``proxy_info`` to ``proxies``, same API as python [requests][] * You can now pass ``proxies`` dictionary during a request * Stream uploads by passing a generator as ``data`` parameter * Better websocket upgrade process * Tidy up ``CONNECT`` request url (for tunneling) * Added tests for proxyserver example using [requests][] ### Wsgi * Both ``wsgi`` and ``http`` apps use the same ``pulsar.utils.httpurl.http_chunks`` function for transfer-encoding ``chunked`` * ``render_error`` escapes the Exception message to prevent [XSS][] ### Datastore * Better ``pulsards_url`` function, default value form ``cfg.data_store`` * ``key_value_save`` set to empty list by default (no persistence) ### Examples * Refactored proxy server example * Updated django chat example so that warning are no longer issued [requests]: http://docs.python-requests.org/ [XSS]: https://en.wikipedia.org/wiki/Cross-site_scripting [async-await]: https://www.python.org/dev/peps/pep-0492/#specification