Changelog
=========

2016-02-22: Version 0.5.1
-------------------------

* Fix EventLoop.stop() for the new semantics of stop() introduced
  in Python 3.4.4 and Python 3.5.1. The method now writes into the self-pipe
  to wake-up the event loop. Otherwise, the stop() may not be taken in account
  immediatly, and even block forever.

2016-02-22: Version 0.5
-----------------------

* Unit tests now use the aiotest library.
* Fix for eventlet used with monkey-patching: inject the original threading
  module and the original threading.get_ident() function in
  asyncio.base_events.
* Drop support for Python 2.6 and Python 3.2. aioeventlet depends on trollius
  and pip which don't support these Python versions anymore.

2014-12-03: Version 0.4
-----------------------

* Add run_aiotest.py
* tox now also run the aiotest test suite
* Rename the project from ``aiogreen`` to ``aioeventlet``
* Rename the ``link_future()`` function to :func:`yield_future`
* Running tests with eventlet monkey-patching now works with Python 3.

2014-11-23: version 0.3
-----------------------

* :func:`wrap_greenthread` now raises an exception if the greenthread is
  running or already finished. In debug mode, the exception is not more logged
  to sys.stderr for greenthreads.
* :func:`link_future` now accepts coroutine objects.
* :func:`link_future` now raises an exception if it is called from the
  greenthread of the aiogreen event loop.
* Fix eventlet detection of blocking tasks: cancel the alarm when the aiogreen
  event loop stops.
* Fix to run an event loop in a thread different than the main thread in debug
  mode: disable eventlet "debug_blocking", it is implemented with the SIGALRM
  signal, but signal handlers can only be set in the main thread.

2014-11-21: version 0.2
-----------------------

aiogreen event loop has been rewritten to reuse more asyncio/trollius code. It
now only has a few specific code.

It is now possible use greenthreads in asyncio coroutines, and to use asyncio
coroutines, tasks and futures in greenthreads: see :func:`link_future` and
:func:`wrap_greenthread` functions.

All asyncio network are supported: TCP, UCP and UNIX clients and servers.

Support of pipes, signal handlers and subprocess is still experimental.

Changes:

* Add a Sphinx documentation published at http://aiogreen.readthedocs.org/
* Add the :func:`link_future` function: wait for a future from a
  greenthread.
* Add the :func:`wrap_greenthread` function: wrap a greenthread into a Future
* Support also eventlet 0.14, not only eventlet 0.15 or newer
* Support eventlet with monkey-patching
* Rewrite the code handling file descriptors to ensure that the listener is
  only called once per loop iteration, to respect asyncio specification.
* Simplify the loop iteration: remove custom code to reuse instead the
  asyncio/trollius code (_run_once)
* Reuse call_soon, call_soon_threadsafe, call_at, call_later from
  asyncio/trollius, remove custom code
* sock_connect() is now asynchronous
* Add a suite of automated unit tests
* Fix EventLoop.stop(): don't stop immediatly, but schedule stopping the event
  loop with call_soon()
* Add tox.ini to run tests with tox
* Setting debug mode of the event loop doesn't enable "debug_blocking" of
  eventlet on Windows anymore, the feature is not implemented on Windows
  in eventlet.
* add_reader() and add_writer() now cancels the previous handle and sets
  a new handle
* In debug mode, detect calls to call_soon() from greenthreads which are not
  threadsafe (would not wake up the event loop).
* Only set "debug_exceptions" of the eventlet hub when the debug mode of the
  event loop is enabled.

2014-11-19: version 0.1
-----------------------

* First public release
