---------------------
- Now compiles on GNU/kFreeBSD
- Pool: `AF_PIPE` address fixed so that it works on recent Windows versions
in combination with Python 2.7.7.
- Pool: Fix for `Supervisor object has no attribute _children` error.
- Pool: Fixed bug with human_status(None).
- Pool: shrink did not work properly if asked to remove more than 1 process.
This seems to have been fixed in a previous version. At least "import
billiard" works from the interpreter. From CHANGES.txt:
- Fixes SemLock on Python 3.4 (Issue #107) when using
``forking_enable(False)``.
- Pool: Include more useful exitcode information when processes exit.
1) The shared library isn't installed with py33. The package uses a pure
python implementation;
2) The connection and reduction functions are installed in different
directory names depending on python major version. From CHANGES.txt:
3.3.0.16 - 2014-02-11
---------------------
- Previous release was missing the billiard.py3 package from MANIFEST
so the installation would not work on Python 3.
3.3.0.15 - 2014-02-10
---------------------
- Pool: Fixed "cannot join process not started" error.
- Now uses billiard.py2 and billiard.py3 specific packages that are installed
depending on the python version used.
This way the installation will not import version specific modules (and
possibly crash).
3.3.0.14 - 2014-01-17
---------------------
- Fixed problem with our backwards compatible ``bytes`` wrapper
(Issue #103).
- No longer expects frozen applications to have a valid ``__file__``
attribute.
PLIST. From ChangeLog:
3.3.0.13 - 2013-12-13
---------------------
- Fixes compatability with Python < 2.7.6
- No longer attempts to handle ``SIGBUS``
- Non-thread based pool now only handles signals:
``SIGHUP``, ``SIGQUIT``, ``SIGTERM``, ``SIGUSR1``,
``SIGUSR2``.
- setup.py: Only show compilation warning for build related commands.
3.3.0.12 - 2013-12-09
---------------------
- Fixed installation for Python 3.
- Pool: Fixed bug with maxtasksperchild.
- Pool: Fixed bug in maintain_pool.
3.3.0.11 - 2013-12-03
---------------------
- Fixed Unicode error when installing the distribution (Issue #89).
- Daemonic processes are now allowed to have children.
But note that it will not be possible to automatically
terminate them when the process exits.
- Pool: Would not always be able to detect that a process exited.
3.3.0.10 - 2013-12-02
---------------------
- Windows: Fixed problem with missing ``WAITABANDONED_0``
- Windows: PipeConnection can now be inherited.
3.3.0.9 - 2013-12-02
--------------------
- Temporary workaround for Celery maxtasksperchild issue.
3.3.0.8 - 2013-11-21
--------------------
- Now also sets ``multiprocessing.current_process`` for compatibility
with loggings ``processName`` field.
3.3.0.7 - 2013-11-15
--------------------
- Fixed compatibility with PyPy 2.1 + 2.2.
- Fixed problem in pypy detection.
- Now uses ``ctypes.find_library`` instead of hardcoded path to find
the OS X CoreServices framework.
3.3.0.6 - 2013-11-12
--------------------
- Now works without C extension again.
- New ``_billiard.read(fd, buffer, [len, ])` function
implements os.read with buffer support (new buffer API)
- New pure-python implementation of ``Connection.send_offset``.
3.3.0.5 - 2013-11-11
--------------------
- All platforms except for Windows/PyPy/Jython now requires the C extension.
3.3.0.4 - 2013-11-11
--------------------
- Fixed problem with Python3 and setblocking.
3.3.0.3 - 2013-11-09
--------------------
- Now works on Windows again.
3.3.0.2 - 2013-11-08
--------------------
- ApplyResult.terminate() may be set to signify that the job
must not be executed. It can be used in combination with
Pool.terminate_job.
- Pipe/_SimpleQueue: Now supports rnonblock/wnonblock arguments
to set the read or write end of the pipe to be nonblocking.
- Pool: Log message included exception info but exception happened
in another process so the resulting traceback was wrong.
- Pool: Worker process can now prepare results before they are sent
back to the main process (using ``Worker.prepare_result``).
3.3.0.1 - 2013-11-04
--------------------
- Pool: New ``correlation_id`` argument to ``apply_async`` can be
used to set a related id for the ``ApplyResult`` object returned:
>>> r = pool.apply_async(target, args, kwargs, correlation_id='foo')
>>> r.correlation_id
'foo'
- Pool: New callback `on_process_exit` is called when a pool
process exits, with signature ``(pid, exitcode)``.
- Pool: Improved the too many restarts detection.
3.3.0.0 - 2013-10-14
--------------------
- Dual code base now runs on Python 2.6+ and Python 3.
- No longer compatible with Python 2.5
- Includes many changes from multiprocessing in 3.4.
- Now uses ``time.monotonic`` when available, also including
fallback implementations for Linux and OS X.
- No longer cleans up after receiving SIGILL, SIGSEGV or SIGFPE
- ``Finalize`` and ``register_after_fork`` is now aliases to multiprocessing.
It's better to import these from multiprocessing directly now
so that there aren't multiple registries.
- New `billiard.queues._SimpleQueue` that does not use semaphores.
- Pool: Can now be extended to support using multiple IPC queues.
- Pool: Can now use async I/O to write to pool IPC queues.
- Pool: New ``Worker.on_loop_stop`` handler can be used to add actions
at pool worker process shutdown.
Note that, like all finalization handlers, there is no guarantee that
this will be executed.
billiard is a fork of the Python 2.7 multiprocessing package. The
multiprocessing package itself is a renamed and updated version of R Oudkerk's
pyprocessing package. This standalone variant is intended to be compatible with
Python 2.4 and 2.5, and will draw it's fixes/improvements from python-trunk.
* Also it is a fork of the multiprocessin backport package by Christian Heims;
* It includes the no-execv patch contributed by R. Oudkerk;
* And the Pool improvements previously located in Celery;