docs: changelog concision / additions

pull/607/head
David Wilson 6 years ago
parent c0357d394f
commit 9e1faa7927

@ -24,19 +24,44 @@ To avail of fixes in an unreleased version, please download a ZIP file
Enhancements Enhancements
^^^^^^^^^^^^ ^^^^^^^^^^^^
* `#587 <https://github.com/dw/mitogen/issues/587>`_: partial support for * `#587 <https://github.com/dw/mitogen/issues/587>`_: Ansible 2.8 is partially
Ansible 2.8 is available. This implementation does not yet support the new supported. `Become plugins
`become plugins <https://docs.ansible.com/ansible/latest/plugins/become.html>`_ and
<https://docs.ansible.com/ansible/latest/plugins/become.html>`_ `interpreter discovery
functionality, which will be addressed in a future release. <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 Fixes
^^^^^ ^^^^^
* `#363 <https://github.com/dw/mitogen/issues/363>`_: fix a rare race matching * `#363 <https://github.com/dw/mitogen/issues/363>`_: fix an obscure race
*Permission denied* errors from some versions of ``su`` running on heavily matching *Permission denied* errors from some versions of ``su`` running on
loaded machines. heavily loaded machines.
* `#578 <https://github.com/dw/mitogen/issues/578>`_: the extension could crash * `#578 <https://github.com/dw/mitogen/issues/578>`_: the extension could crash
while rendering an error message, due to an incorrect format string. 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 ``lineinfile`` module began leaking writable temporary file descriptors since
Ansible 2.7.0. When ``lineinfile`` was used to create or modify a script, and 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 that script was later executed, the execution could fail with "*text file
busy*" due to the open descriptor. Temporary descriptors are now tracked and busy*" due to the leaked descriptor. Temporary descriptors are now tracked
cleaned up on module exit. and cleaned up on exit for all modules.
Core Library Core Library
~~~~~~~~~~~~ ~~~~~~~~~~~~
* Logs are more readable, and many :func:`repr` strings are more descriptive. * Logs are more readable, and many :func:`repr` strings are more descriptive.
The old pseudo-function-call format is slowly being migrated to The old pseudo-function-call format is slowly migrating to human-readable
human-readable output where appropriate. For example, output where possible. For example, *"Stream(ssh:123).connect()"* might
*"Stream(ssh:123).connect()"* could become *"connecting to ssh:123"*. be written *"connecting to ssh:123"*.
* :func:`bytearray` was removed from the list of supported serialization types. * :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 * `#170 <https://github.com/dw/mitogen/issues/170>`_: to improve subprocess
process management and a future asynchronous connect implementation, a management and asynchronous connect, a :class:`mitogen.parent.TimerList`
:class:`mitogen.parent.TimerList` API is available. interface is available, accessible as :attr:`Broker.timers` in an
asynchronous context.
* `#419 <https://github.com/dw/mitogen/issues/419>`_: the internal * `#419 <https://github.com/dw/mitogen/issues/419>`_: the internal
:class:`mitogen.core.Stream` has been refactored into 7 new classes, :class:`mitogen.core.Stream` has been refactored into 7 new classes,
modularizing protocol behaviour, output buffering, line-oriented input 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 internally asynchronous, laying almost all the groundwork needed for fully
asynchronous connect, proxied Ansible become plug-ins, and integrating asynchronous connect, proxied Ansible become plug-ins, and integrating
`libssh <https://www.libssh.org/>`_. `libssh <https://www.libssh.org/>`_.
* `#419 <https://github.com/dw/mitogen/issues/419>`_: zombie process reaping * `#169 <https://github.com/dw/mitogen/issues/169>`_,
has vastly improved, by using the timer API to efficiently poll for a slow `#419 <https://github.com/dw/mitogen/issues/419>`_: zombie child reaping has
child to finish exiting. Polling avoids the need to install a process-global vastly improved, by using timers to efficiently poll for a slow child to
`SIGCHLD` handler, or rely on the process-global 'signal file descriptor' finish exiting. Polling avoids relying on process-global configuration such
functionality only available in newer Python releases. 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 * `#256 <https://github.com/dw/mitogen/issues/256>`_,
: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.
* `#419 <https://github.com/dw/mitogen/issues/419>`_, `#419 <https://github.com/dw/mitogen/issues/419>`_: most :func:`os.dup` was
`#549 <https://github.com/dw/mitogen/issues/549>`_, file descriptor usage eliminated, along with almost all manual file descriptor management.
during large runs has approximately halved, as it is no longer necessary to Descriptors are trapped in :func:`os.fdopen` objects when they are created,
manage every read and write side distinctly, in order to avoid double-close ensuring a leaked object will close itself, and ensuring every descriptor is
bugs. Avoiding double-close is instead handled by Python's built-in file fused to a `closed` flag, preventing historical bugs where a double close
object. could destroy descriptors belonging to unrelated streams.
* `a5536c35 <https://github.com/dw/mitogen/commit/a5536c35>`_: avoid quadratic * `a5536c35 <https://github.com/dw/mitogen/commit/a5536c35>`_: avoid quadratic
buffer management when logging lines received from a child's redirected buffer management when logging lines received from a child's redirected
standard IO. standard IO.
Thanks! Thanks!
~~~~~~~ ~~~~~~~

Loading…
Cancel
Save