.. This file is part of Message For You Sir (m4us).
.. Copyright © 2009-2012 Krys Lawrence
..
.. Message For You Sir is free software: you can redistribute it and/or modify
.. it under the terms of the GNU Affero General Public License as published by
.. the Free Software Foundation, either version 3 of the License, or (at your
.. option) any later version.
..
.. Message For You Sir is distributed in the hope that it will be useful, but
.. WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
.. or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public
.. License for more details.
..
.. You should have received a copy of the GNU Affero General Public License
.. along with Message For You Sir.  If not, see <http://www.gnu.org/licenses/>.

.. _news:
.. _release_notes:

*************
Release Notes
*************

Below is the list of the important changes found in each release of *Message
For You Sir!*.

Release 0.3
===========

*Release date: UNRELEASED*

* Upgraded the following depencencies:

  * zope.interface_ 3.8.0
  * mock_ 0.8
  * distribute_ 0.6.24

* Removed the following development depencencies:

  * pep8_
  * pyflakes_
  * ipython_
  * sphinxcontrib-paverutils_

* Upgraded the following development depencencies:

  * virtualenv_ 1.7.1.2
  * coverage_ 3.5.1
  * pylint_ 0.25.1
  * Sphinx_ 1.1.2
  * docutils_ 0.8.1
  * Jinja2_ 2.6
  * Pygments_ 1.4
  * Paver_ 1.0.5
  * clonedigger_ 1.0.11-beta (version 1.1.0 is actually older)

* Added the following development depencencies:

  * A `forked version`_ of repoze.sphinx.autointerface_ 0.6.2
  * flake8_ 1.1
  * everyapp.bootstrap_ 0.2.2

* The following development commands have been removed:

  * |paver pep8| (inbluded in |paver flakes| now)
  * |paver release| (included in |paver sdist| now)
  * |paver pdf| (not used or supported)
  * |paver text| (not used or supported)
  * |paver docs| (included in |paver html| now)

* Most other development commands have been updated or changed in some way.
  See their various --help options for details.
* Changed all zope.interface_ declarations to the new decorator style.
* Removed the forced replacement of setuptools with distribute.  setuptools is
  now supported, though deprecated.
* everyapp.bootstrap_ is now being used to bootstrap the development
  environment.
* Paver_ is no longer being used to generate |setup.py|.  There is now a proper
  |setup.py| file.


Release 0.2.1
=============

*Release date: 2012-02-08*

* Updated the decorator_ depencency to version 3.3.2 to make installation work
  again.
* Fixed a couple other development environment bugs.

Release 0.2
===========

*Release date: 2011-04-18*

* Fixed several bugs in the tests.
* Added and improved many docstrings.
* All the testing infrastructure has been greatly changed.  Testing is now
  structured into test bases and test mixins.  This is in order to support
  organising tests by logical functionality and to support test reuse.
* Removed nose_ and strait_ as testing dependencies.
* Removed zope.component_ and zope.event_ as dependencies.
* Added a :command:`paver test` command to run all tests.
* Added a function for running all tests outside of the development
  environment.  This lets users run the tests in production and other
  non-development environments.  Just call |m4us.tests.run()| from the python_
  interpreter or |python -m m4us.tests.__init__| from the command-line.
* Made unittest2_ and mock_ full dependencies in order to support running tests
  any time.
* `Coroutines` and `coroutine` factory functions can now have additional
  `interfaces`.  The |coroutine()| decorator no longer masks them.
* |backplane()| is now a function.  The *Backplane* class has been removed.
  The function behaves identically.
* The name of the first parameter to the |publish_to()| function has been
  changed to *backplane_*.
* Removed import-time side effects.  The |init()| function must now be called
  explicitly before running anything else.  It can either be called at import
  time, or very early in a program's main function.
* Renamed the |IPostOffice| *link()* and *unlink()* methods to
  |IPostOffice.register()| and |IPostOffice.unregister()| respectively.
* Renamed the |IScheduler| *add()* and *remove()* methods to
  |IScheduler.register()| and |IScheduler.unregister()| respectively.
* |IContainer| has been changed slightly.  The |IContainer.coroutines| and
  |IContainer.links| are now both defined as immutable sequences.
* Added a |filter_from_callable()| convenience function that can turn a one
  parameter function into a `filter` `coroutine`.
* Added a |producer_from_iterable()| convenience function that can turn an
  iterable into a `producer` `coroutine`.
* Added a |sink_from_callable()| convenience function that can turn a one
  parameter function into a `sink` `coroutine`.
* Added a |filter_()| convenience decorator that works like
  |filter_from_callable()| but as a decorator.
* Added a |producer()| convenience decorator that works like
  |producer_from_iterable()| but as a decorator.
* Added a |sink()| convenience decorator that works like |sink_from_callable()|
  but as a decorator.
* Updated |example.py| to use the new features and properly handle Unicode
  strings.
* Changed the behaviour and command-line options of the |paver lint|, |paver
  tests_lint| and |paver check| commands.  They now work more reliable and have
  better support for being in an IDE.

Release 0.1.1
=============

*Release date: 2010-12-21*

* Fixed a bug with files missing from the source distribution.

Release 0.1
===========

*Release date: 2010-12-21*

* Initial Release.

