Ampoule 0.0.4 (2008-11-03)
==========================

Changes
--------
 - Ampoule parent process and child processes now talk using FDs 3 (in)
   and 4 (out) in order to avoid problems with libraries that mistakenly
   send error lines to stdout (yes, I'm looking at you gtk+)

Ampoule 0.0.3 (2008-10-01)
==========================

Features
--------
 - Added a Twisted Matrix plugin to run a process pool service that
   can be used over the network using an AMP client.
 
 - Added ability to change the reactor used to run the children

Changes
-------
 - If you wrote your own bootstrap code for the pool you should change
   the way it works because now it takes 2 arguments, sys.argv[1] is
   the reactor short name while sys.argv[2] is still the AMPChild path.
   If you don't use startAMPProcess you probably have nothing to worry
   about.
 
Fixes
-----
 - Now the process pool doesn't raise an error when you use a command
   that doesn't require an answer.

Ampoule 0.0.2 (2008-09-26)
==========================

Features
--------
 - Support process recycling after predefined number of calls.

Changes
-------
 - ProcessPool argument max_idle is now maxIdle to comply with Twisted
   style guidelines.

 - ProcessPool.startAWorker is now a synchronous call

 - removed ampoule.runner module because it was essentially useless,
   if you want to change subprocess startup behavior pass it as an
   argument by overriding the processFactory with a closure like this:
       
       from ampoule.main import startAMPProcess
       from ampoule.pool import ProcessPool
       pp = ProcessPool()
       def myProcessFactory(*args, **kwargs):
           kwargs['bootstrap'] = myBootstrapCode
           return startAMPProcess(*args, **kwargs)
       pp.processFactory = staticmethod(myProcessFactory)
