docs: changelog concision / additions
This commit is contained in:
parent
c0357d394f
commit
9e1faa7927
|
@ -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!
|
||||
~~~~~~~
|
||||
|
||||
|
|
Loading…
Reference in New Issue