Skip to content

Commit 9e1faa7

Browse files
committed
docs: changelog concision / additions
1 parent c0357d3 commit 9e1faa7

File tree

1 file changed

+58
-38
lines changed

1 file changed

+58
-38
lines changed

docs/changelog.rst

Lines changed: 58 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,44 @@ To avail of fixes in an unreleased version, please download a ZIP file
2424
Enhancements
2525
^^^^^^^^^^^^
2626

27-
* `#587 <https://github.com/dw/mitogen/issues/587>`_: partial support for
28-
Ansible 2.8 is available. This implementation does not yet support the new
29-
`become plugins
30-
<https://docs.ansible.com/ansible/latest/plugins/become.html>`_
31-
functionality, which will be addressed in a future release.
27+
* `#587 <https://github.com/dw/mitogen/issues/587>`_: Ansible 2.8 is partially
28+
supported. `Become plugins
29+
<https://docs.ansible.com/ansible/latest/plugins/become.html>`_ and
30+
`interpreter discovery
31+
<https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html>`_
32+
are not yet handled.
33+
34+
* The ``MITOGEN_CPU_COUNT`` environment variable shards the connection
35+
multiplexer into per-CPU worker processes. This improves throughput for large
36+
runs especially involving file transfer, and is a prerequisite to future
37+
in-process SSH support. To match the behaviour of older releases, only one
38+
multiplexer is started by default.
39+
40+
* `#419 <https://github.com/dw/mitogen/issues/419>`_,
41+
`#470 <https://github.com/dw/mitogen/issues/470>`_, file descriptor usage
42+
during large runs is halved, as it is no longer necessary to manage read and
43+
write sides distinctly in order to work around a design limitation.
44+
45+
* `#419 <https://github.com/dw/mitogen/issues/419>`_: almost all connection
46+
setup happens on one thread, reducing GIL contention and context switching
47+
early in a run.
48+
49+
* `#419 <https://github.com/dw/mitogen/issues/419>`_: 2 network round-trips
50+
were removed from early connection setup.
51+
52+
* `? <https://github.com/dw/mitogen/commit/7ae926b3>`_,
53+
`? <https://github.com/dw/mitogen/commit/7ae926b3>`_,
54+
`? <https://github.com/dw/mitogen/commit/7ae926b3>`_,
55+
`? <https://github.com/dw/mitogen/commit/7ae926b3>`_: locking is avoided in
56+
some hot paths, and locks that must be taken are held for less time.
3257

3358

3459
Fixes
3560
^^^^^
3661

37-
* `#363 <https://github.com/dw/mitogen/issues/363>`_: fix a rare race matching
38-
*Permission denied* errors from some versions of ``su`` running on heavily
39-
loaded machines.
62+
* `#363 <https://github.com/dw/mitogen/issues/363>`_: fix an obscure race
63+
matching *Permission denied* errors from some versions of ``su`` running on
64+
heavily loaded machines.
4065

4166
* `#578 <https://github.com/dw/mitogen/issues/578>`_: the extension could crash
4267
while rendering an error message, due to an incorrect format string.
@@ -61,61 +86,56 @@ Fixes
6186
``lineinfile`` module began leaking writable temporary file descriptors since
6287
Ansible 2.7.0. When ``lineinfile`` was used to create or modify a script, and
6388
that script was later executed, the execution could fail with "*text file
64-
busy*" due to the open descriptor. Temporary descriptors are now tracked and
65-
cleaned up on module exit.
89+
busy*" due to the leaked descriptor. Temporary descriptors are now tracked
90+
and cleaned up on exit for all modules.
6691

6792

6893
Core Library
6994
~~~~~~~~~~~~
7095

7196
* Logs are more readable, and many :func:`repr` strings are more descriptive.
72-
The old pseudo-function-call format is slowly being migrated to
73-
human-readable output where appropriate. For example,
74-
*"Stream(ssh:123).connect()"* could become *"connecting to ssh:123"*.
97+
The old pseudo-function-call format is slowly migrating to human-readable
98+
output where possible. For example, *"Stream(ssh:123).connect()"* might
99+
be written *"connecting to ssh:123"*.
75100

76101
* :func:`bytearray` was removed from the list of supported serialization types.
77-
It has never been portable, and does not appear to have been used.
102+
It was never portable between Python versions, unused, and never made much
103+
sense to support as a wire type.
78104

79-
* `#170 <https://github.com/dw/mitogen/issues/170>`_: to better support child
80-
process management and a future asynchronous connect implementation, a
81-
:class:`mitogen.parent.TimerList` API is available.
105+
* `#170 <https://github.com/dw/mitogen/issues/170>`_: to improve subprocess
106+
management and asynchronous connect, a :class:`mitogen.parent.TimerList`
107+
interface is available, accessible as :attr:`Broker.timers` in an
108+
asynchronous context.
82109

83110
* `#419 <https://github.com/dw/mitogen/issues/419>`_: the internal
84111
:class:`mitogen.core.Stream` has been refactored into 7 new classes,
85112
modularizing protocol behaviour, output buffering, line-oriented input
86-
parsing, options handling and connection management. Connection setup is
113+
parsing, option handling and connection management. Connection setup is
87114
internally asynchronous, laying almost all the groundwork needed for fully
88115
asynchronous connect, proxied Ansible become plug-ins, and integrating
89116
`libssh <https://www.libssh.org/>`_.
90117

91-
* `#419 <https://github.com/dw/mitogen/issues/419>`_: zombie process reaping
92-
has vastly improved, by using the timer API to efficiently poll for a slow
93-
child to finish exiting. Polling avoids the need to install a process-global
94-
`SIGCHLD` handler, or rely on the process-global 'signal file descriptor'
95-
functionality only available in newer Python releases.
118+
* `#169 <https://github.com/dw/mitogen/issues/169>`_,
119+
`#419 <https://github.com/dw/mitogen/issues/419>`_: zombie child reaping has
120+
vastly improved, by using timers to efficiently poll for a slow child to
121+
finish exiting. Polling avoids relying on process-global configuration such
122+
as a `SIGCHLD` handler, or :func:`signal.set_wakeup_fd` available in modern
123+
Python.
96124

97-
* `#419 <https://github.com/dw/mitogen/issues/419>`_: most uses of
98-
:func:`os.dup` have been removed, along with almost all cases of manual file
99-
descriptor management. Descriptors are trapped in :func:`os.fdopen` objects
100-
as soon as they are opened, ensuring a leaked object will close itself, and
101-
ensuring every descriptor is fused to a `closed` flag, preventing historical
102-
bugs where a double close could destroy descriptors belonging to an unrelated
103-
stream.
125+
* `#256 <https://github.com/dw/mitogen/issues/256>`_,
104126

105-
* `#419 <https://github.com/dw/mitogen/issues/419>`_,
106-
`#549 <https://github.com/dw/mitogen/issues/549>`_, file descriptor usage
107-
during large runs has approximately halved, as it is no longer necessary to
108-
manage every read and write side distinctly, in order to avoid double-close
109-
bugs. Avoiding double-close is instead handled by Python's built-in file
110-
object.
127+
`#419 <https://github.com/dw/mitogen/issues/419>`_: most :func:`os.dup` was
128+
eliminated, along with almost all manual file descriptor management.
129+
Descriptors are trapped in :func:`os.fdopen` objects when they are created,
130+
ensuring a leaked object will close itself, and ensuring every descriptor is
131+
fused to a `closed` flag, preventing historical bugs where a double close
132+
could destroy descriptors belonging to unrelated streams.
111133

112134
* `a5536c35 <https://github.com/dw/mitogen/commit/a5536c35>`_: avoid quadratic
113135
buffer management when logging lines received from a child's redirected
114136
standard IO.
115137

116138

117-
118-
119139
Thanks!
120140
~~~~~~~
121141

0 commit comments

Comments
 (0)