docs: changelog concision / additions

This commit is contained in:
David Wilson 2019-07-29 06:37:43 +01:00
parent c0357d394f
commit 9e1faa7927
1 changed files with 58 additions and 38 deletions

View File

@ -24,19 +24,44 @@ To avail of fixes in an unreleased version, please download a ZIP file
Enhancements
^^^^^^^^^^^^
* `#587 <https://github.com/dw/mitogen/issues/587>`_: partial support for
Ansible 2.8 is available. This implementation does not yet support the new
`become plugins
<https://docs.ansible.com/ansible/latest/plugins/become.html>`_
functionality, which will be addressed in a future release.
* `#587 <https://github.com/dw/mitogen/issues/587>`_: Ansible 2.8 is partially
supported. `Become plugins
<https://docs.ansible.com/ansible/latest/plugins/become.html>`_ and
`interpreter discovery
<https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html>`_
are not yet handled.
* The ``MITOGEN_CPU_COUNT`` environment variable shards the connection
multiplexer into per-CPU worker processes. This improves throughput for large
runs especially involving file transfer, and is a prerequisite to future
in-process SSH support. To match the behaviour of older releases, only one
multiplexer is started by default.
* `#419 <https://github.com/dw/mitogen/issues/419>`_,
`#470 <https://github.com/dw/mitogen/issues/470>`_, file descriptor usage
during large runs is halved, as it is no longer necessary to manage read and
write sides distinctly in order to work around a design limitation.
* `#419 <https://github.com/dw/mitogen/issues/419>`_: almost all connection
setup happens on one thread, reducing GIL contention and context switching
early in a run.
* `#419 <https://github.com/dw/mitogen/issues/419>`_: 2 network round-trips
were removed from early connection setup.
* `? <https://github.com/dw/mitogen/commit/7ae926b3>`_,
`? <https://github.com/dw/mitogen/commit/7ae926b3>`_,
`? <https://github.com/dw/mitogen/commit/7ae926b3>`_,
`? <https://github.com/dw/mitogen/commit/7ae926b3>`_: locking is avoided in
some hot paths, and locks that must be taken are held for less time.
Fixes
^^^^^
* `#363 <https://github.com/dw/mitogen/issues/363>`_: fix a rare race matching
*Permission denied* errors from some versions of ``su`` running on heavily
loaded machines.
* `#363 <https://github.com/dw/mitogen/issues/363>`_: fix an obscure race
matching *Permission denied* errors from some versions of ``su`` running on
heavily loaded machines.
* `#578 <https://github.com/dw/mitogen/issues/578>`_: the extension could crash
while rendering an error message, due to an incorrect format string.
@ -61,61 +86,56 @@ Fixes
``lineinfile`` module began leaking writable temporary file descriptors since
Ansible 2.7.0. When ``lineinfile`` was used to create or modify a script, and
that script was later executed, the execution could fail with "*text file
busy*" due to the open descriptor. Temporary descriptors are now tracked and
cleaned up on module exit.
busy*" due to the leaked descriptor. Temporary descriptors are now tracked
and cleaned up on exit for all modules.
Core Library
~~~~~~~~~~~~
* Logs are more readable, and many :func:`repr` strings are more descriptive.
The old pseudo-function-call format is slowly being migrated to
human-readable output where appropriate. For example,
*"Stream(ssh:123).connect()"* could become *"connecting to ssh:123"*.
The old pseudo-function-call format is slowly migrating to human-readable
output where possible. For example, *"Stream(ssh:123).connect()"* might
be written *"connecting to ssh:123"*.
* :func:`bytearray` was removed from the list of supported serialization types.
It has never been portable, and does not appear to have been used.
It was never portable between Python versions, unused, and never made much
sense to support as a wire type.
* `#170 <https://github.com/dw/mitogen/issues/170>`_: to better support child
process management and a future asynchronous connect implementation, a
:class:`mitogen.parent.TimerList` API is available.
* `#170 <https://github.com/dw/mitogen/issues/170>`_: to improve subprocess
management and asynchronous connect, a :class:`mitogen.parent.TimerList`
interface is available, accessible as :attr:`Broker.timers` in an
asynchronous context.
* `#419 <https://github.com/dw/mitogen/issues/419>`_: the internal
:class:`mitogen.core.Stream` has been refactored into 7 new classes,
modularizing protocol behaviour, output buffering, line-oriented input
parsing, options handling and connection management. Connection setup is
parsing, option handling and connection management. Connection setup is
internally asynchronous, laying almost all the groundwork needed for fully
asynchronous connect, proxied Ansible become plug-ins, and integrating
`libssh <https://www.libssh.org/>`_.
* `#419 <https://github.com/dw/mitogen/issues/419>`_: zombie process reaping
has vastly improved, by using the timer API to efficiently poll for a slow
child to finish exiting. Polling avoids the need to install a process-global
`SIGCHLD` handler, or rely on the process-global 'signal file descriptor'
functionality only available in newer Python releases.
* `#169 <https://github.com/dw/mitogen/issues/169>`_,
`#419 <https://github.com/dw/mitogen/issues/419>`_: zombie child reaping has
vastly improved, by using timers to efficiently poll for a slow child to
finish exiting. Polling avoids relying on process-global configuration such
as a `SIGCHLD` handler, or :func:`signal.set_wakeup_fd` available in modern
Python.
* `#419 <https://github.com/dw/mitogen/issues/419>`_: most uses of
:func:`os.dup` have been removed, along with almost all cases of manual file
descriptor management. Descriptors are trapped in :func:`os.fdopen` objects
as soon as they are opened, ensuring a leaked object will close itself, and
ensuring every descriptor is fused to a `closed` flag, preventing historical
bugs where a double close could destroy descriptors belonging to an unrelated
stream.
* `#256 <https://github.com/dw/mitogen/issues/256>`_,
* `#419 <https://github.com/dw/mitogen/issues/419>`_,
`#549 <https://github.com/dw/mitogen/issues/549>`_, file descriptor usage
during large runs has approximately halved, as it is no longer necessary to
manage every read and write side distinctly, in order to avoid double-close
bugs. Avoiding double-close is instead handled by Python's built-in file
object.
`#419 <https://github.com/dw/mitogen/issues/419>`_: most :func:`os.dup` was
eliminated, along with almost all manual file descriptor management.
Descriptors are trapped in :func:`os.fdopen` objects when they are created,
ensuring a leaked object will close itself, and ensuring every descriptor is
fused to a `closed` flag, preventing historical bugs where a double close
could destroy descriptors belonging to unrelated streams.
* `a5536c35 <https://github.com/dw/mitogen/commit/a5536c35>`_: avoid quadratic
buffer management when logging lines received from a child's redirected
standard IO.
Thanks!
~~~~~~~