2.2b1 (2007-03-31)

  - Individual program configuration sections can now specify an
    environment.

  - Added a 'version' command to supervisorctl.  This returns the
    version of the supervisor2 package which the remote supervisord
    process is using.

2.1 (2007-03-17)

  - When supervisord was invoked more than once, and its configuration
    was set up to use a UNIX domain socket as the HTTP server, the
    socket file would be erased in error.  The symptom of this was
    that a subsequent invocation of supervisorctl could not find the
    socket file, so the process could not be controlled (it and all of
    its subprocesses would need to be killed by hand).

  - Close subprocess file descriptors properly when a subprocess exits
    or otherwise dies.  This should result in fewer "too many open
    files to spawn foo" messages when supervisor is left up for long
    periods of time.

  - When a process was not killable with a "normal" signal at shutdown
    time, too many "INFO: waiting for x to die" messages would be sent
    to the log until we ended up killing the process with a SIGKILL.
    Now a maximum of one every three seconds is sent up until SIGKILL
    time.  Thanks to Ian Bicking.

  - Add an assertion: we never want to try to marshal None to XML-RPC
    callers.  Issue 223 in the collector from vgatto indicates that
    somehow a supervisor XML-RPC method is returning None (which
    should never happen), but I cannot identify how.  Maybe the
    assertion will give us more clues if it happens again.

  - Supervisor would crash when run under Python 2.5 because the
    xmlrpclib.Transport class in Python 2.5 changed in a
    backward-incompatible way.  Thanks to Eric Westra for the bug
    report and a fix.

  - Tests now pass under Python 2.5.

  - Better supervisorctl reporting on stop requests that have a FAILED
    status.

  - Removed duplicated code (readLog/readMainLog), thanks to Mike
    Naberezny.

  - Added tailProcessLog command to the XML-RPC API.  It provides a
    more efficient way to tail logs than readProcessLog().  Use
    readProcessLog() to read chunks and tailProcessLog() to tail.
    (thanks to Mike Naberezny).

2.1b1 (2006-08-30)

  - "supervisord -h" and "supervisorctl -h" did not work (traceback
    instead of showing help view (thanks to Damjan from Macedonia for
    the bug report).

  - Processes which started successfully after failing to start
    initially are no longer reported in BACKOFF state once they are
    started successfully (thanks to Damjan from Macdonia for the bug
    report).

  - Add new 'maintail' command to supervisorctl shell, which allows
    you to tail the 'main' supervisor log.  This uses a new
    readMainLog xmlrpc API.

  - Various process-state-transition related changes, all internal.
    README.txt updated with new state transition map.

  - startProcess and startAllProcesses xmlrpc APIs changed: instead of
    accepting a timeout integer, these accept a wait boolean (timeout
    is implied by process' "startsecs" configuration).  If wait is
    False, do not wait for startsecs.

  Known issues:

    Code does not match state transition map.  Processes which are
    configured as autorestarting which start "successfully" but
    subsequently die after 'startsecs' go through the transitions
    RUNNING -> BACKOFF -> STARTING instead of the correct transitions
    RUNNING -> EXITED -> STARTING.  This has no real negative effect,
    but should be fixed for correctness.

2.0 (2006-08-30)

  - pidfile written in daemon mode had incorrect pid.

  - supervisorctl: tail (non -f) did not pass through proper error
    messages when supplied by the server.

  - Log signal name used to kill processes at debug level.

  - supervisorctl "tail -f" didn't work with supervisorctl sections
    configured with an absolute unix:// URL

  - New "environment" config file option allows you to add environment
    variable values to supervisord environment from config file.

2.0b1 (2006-07-12)

  - fundamental rewrite based on 1.0.6, use distutils (only) for
    installation, use ConfigParser rather than ZConfig, use HTTP for
    wire protocol, web interface, less lies in supervisorctl.


