Event-driven networking engine written in Python.
This release supports PyPy v7.3.14.
reactor.spawnProcess
,
now copies the parent environment when the [env=None]{.title-ref}
argument is passed on Posix systems and os.posix_spawnp
is used
internally. (#12068)No significant changes.
cookielib
and urllib2
standard
library modules. (#12044)No significant changes.
No significant changes.
No significant changes.
formatEvent("here's the result of calling a method at log-format time: {obj.method()}", obj=...)
(#9347)reactor.spawnProcess
, now copies the parent environment when the env=None
argument is passed on Posix systems and os.posix_spawnp
is used internally. (#12068)@inlineCallbacks
to run on new PyPY versions. (#12084)No significant changes.
cookielib
and urllib2
standard library modules. (#12044)multipart/form-data
using email.message_from_bytes
.
The usage of cgi.parse_multipart
was removed as the cgi
module will be removed in Python 3.13. (#11848)No significant changes.
No significant changes.
No significant changes.
No changes since 23.10.0.rc1.
CPython
, functions wrapped by twisted.internet.defer.inlineCallbacks
can have their arguments and return values freed immediately after completion (due to there no longer being circular references). (#11885)No significant changes.
Bugfixes
- In Twisted 16.3.0, we changed twisted.web to stop dispatching HTTP/1.1
pipelined requests to application code. There was a bug in this change which
still allowed clients which could send multiple full HTTP requests in a single
TCP segment to trigger asynchronous processing of later requests, which could
lead to out-of-order responses. This has now been corrected and twisted.web
should never process a pipelined request over HTTP/1.1 until the previous
request has fully completed. (CVE-2023-46137, GHSA-cq7q-gv5w-rwx2) (#11976)
Deprecations and Removals
No significant changes.
No significant changes.
No significant changes.
Misc
- #10115
CPython
, functions wrapped by twisted.internet.defer.inlineCallbacks
can have their arguments and return values freed immediately after completion (due to there no longer being circular references). (#11885)No significant changes.
Bugfixes
- In Twisted 16.3.0, we changed twisted.web to stop dispatching HTTP/1.1
pipelined requests to application code. There was a bug in this change which
still allowed clients which could send multiple full HTTP requests in a single
TCP segment to trigger asynchronous processing of later requests, which could
lead to out-of-order responses. This has now been corrected and twisted.web
should never process a pipelined request over HTTP/1.1 until the previous
request has fully completed. (#11976)
Deprecations and Removals
No significant changes.
No significant changes.
No significant changes.
Misc
- #10115
This is the last release with support for Python 3.7.
No changes since 23.8.0.rc1.
twisted.internet.defer.race
has been added as a way to get the first available result from a list of Deferreds. (#11817)IHostnameResolver.resolveHostName
and IResolverSimple.getHostByName
. (#10276)twist conch --auth=sshkey
can now authenticate users without a traceback again, thanks to twisted.conch.unix.UnixConchUser no longer being incorrectly instantiated with bytes
. In the course of this fix, some type hinting has also been applied to twisted.cred.portal
. (#11626)trial -j
no longer obscures tracebacks for
any errors caused by that interruption with an UnboundLocalError
due to a bug
in its own implementation. Note that there are still several internal
tracebacks that will be emitted upon exiting, because tearing down the test
runner mid-suite is still not an entirely clean operation, but it should at
least be possible to see errors reported from, for example, a test that is
hanging more clearly. (#11707)twisted.web.template
now avoids unnecessary copying and is faster, particularly for templates with deep nesting. (#11834)twisted.web.template
now avoids some unecessary evaluation of type annotations and is faster. (#11835)conch_nacl
now use hyphens rather than underscores to comply with PEP 685. The old names will be supported until the end of 2023. (#11655)Deprecations and Removals
- PyAsn1 has been removed as a conch dependency.
twisted.conch.ssh.keys.Key no longer supports loading "alternate" OpenSSH private keys.
These are some private keys that at some point were handled by OpenSSH but for which no specification exists.
For more info about these OpenSSH keys see https://github.com/twisted/twisted/issues/3008. (#11843)
- Due to changes in the way raw private key byte serialization are handled in Cryptography, and widespread support for Ed25519 in current versions of OpenSSL, we no longer support PyNaCl as a fallback for Ed25519 keys in Conch. (#11871)
Web
---
Misc
~~~~
- #11815, #11879
Mail
----
No significant changes.
Words
-----
No significant changes.
Names
-----
No significant changes.
Trial
-----
No significant changes.
This is the last release with support for Python 3.7.
reactor.spawnProcess()
now uses posix_spawnp when possible, making it much more efficient (#5710)twisted.internet.defer.Deferred.fromFuture
now has a more precise type annotation. (#11753)twisted.internet.defer._ConcurrencyPrimitive.__aexit__
now has a more precise type annotation. (#11795)twisted.internet.defer.race
has been added as a way to get the first available result from a list of Deferreds. (#11817)IHostnameResolver.resolveHostName
and IResolverSimple.getHostByName
. (#10276)twist conch --auth=sshkey
can now authenticate users without a traceback again, thanks to twisted.conch.unix.UnixConchUser no longer being incorrectly instantiated with bytes
. In the course of this fix, some type hinting has also been applied to twisted.cred.portal
. (#11626)trial -j
no longer obscures tracebacks for
any errors caused by that interruption with an UnboundLocalError
due to a bug
in its own implementation. Note that there are still several internal
tracebacks that will be emitted upon exiting, because tearing down the test
runner mid-suite is still not an entirely clean operation, but it should at
least be possible to see errors reported from, for example, a test that is
hanging more clearly. (#11707)twisted.web.template
now avoids unnecessary copying and is faster, particularly for templates with deep nesting. (#11834)twisted.web.template
now avoids some unecessary evaluation of type annotations and is faster. (#11835)conch_nacl
now use hyphens rather than underscores to comply with PEP 685. The old names will be supported until the end of 2023. (#11655)Deprecations and Removals
- PyAsn1 has been removed as a conch dependency.
twisted.conch.ssh.keys.Key no longer supports loading "alternate" OpenSSH private keys.
These are some private keys that at some point were handled by OpenSSH but for which no specification exists.
For more info about these OpenSSH keys see https://github.com/twisted/twisted/issues/3008. (#11843)
- Due to changes in the way raw private key byte serialization are handled in Cryptography, and widespread support for Ed25519 in current versions of OpenSSL, we no longer support PyNaCl as a fallback for Ed25519 keys in Conch. (#11871)
Web
---
Misc
~~~~
- #11815, #11879
Mail
----
No significant changes.
Words
-----
No significant changes.
Names
-----
No significant changes.
Trial
-----
No significant changes.
This release contains a security fix for CVE-2022-39348. This is a low-severity security bug.
Twisted 22.10.0rc1 release candidate was released on 2022-10-26 and there are no changes between the release candidate and the final release.
systemd:
endpoint parser now supports "named" file descriptors. This is a more reliable mechanism for choosing among several inherited descriptors. (#8147)systemd
endpoint parser's index
parameter is now documented as leading to non-deterministic results in which descriptor is selected. The new name
parameter is now documented as preferred. (#8146)Bugfixes
- twisted.conch.manhole.ManholeInterpreter now captures tracebacks even if sys.excepthook has been modified. (#11638)
Web
---
Features
Bugfixes
- twisted.web.error.Error.__str__ no longer raises an exception when the error's message attribute is None. Additionally, it validates that code is a plausible 3-digit HTTP status code. (#10271)
- The typing of the twisted.web.http_headers.Headers methods addRawHeader() and setRawHeaders() now allow mixing str and bytes, matching the runtime behavior. (#11635)
- twisted.web.vhost.NameVirtualHost no longer echoes HTML received in the Host header without escaping it (CVE-2022-39348, GHSA-vg46-2rrj-3647). (#11716)
Deprecations and Removals
Bugfixes
- emailserver.tac now runs under python3.x (#11634)
Words
-----
No significant changes.
Names
-----
No significant changes.
Trial
-----
Features
Bugfixes
- The implementation of ``trial -jN ...`` now handles test errors and failures larger than 64 kB. It also handles other internal communication errors by logging them in the worker and attempting to send them to the parent process -- instead of crashing with ``UnknownRemoteError`` and no additional details. (#10314)
- `trial -jN --logfile path` no longer hangs if *path* contains a directory separator. (#11580)
Misc
~~~~
- #11649, #11661, #11677, #11710
systemd:
endpoint parser now supports "named" file descriptors. This is a more reliable mechanism for choosing among several inherited descriptors. (#8147)test.yaml
workflow permissions restricted. (#11631)systemd
endpoint parser's index
parameter is now documented as leading to non-deterministic results in which descriptor is selected. The new name
parameter is now documented as preferred. (#8146)No significant changes.
No significant changes.
trial -jN ...
now handles test errors and failures larger than 64 kB. It also handles other internal communication errors by logging them in the worker and attempting to send them to the parent process -- instead of crashing with UnknownRemoteError
and no additional details. (#10314)trial -jN --logfile path
no longer hangs if path contains a directory separator. (#11580)Twisted 22.8.0rc1 release candidate was released on 2022-08-28 and there are no changes between the release candidate and the final release.
twisted.internet.base.DelayedCall.__repr__
will no longer raise AttributeError
if the DelayedCall
was created before debug mode was enabled. As a side-effect, twisted.internet.base.DelayedCall.creator
is now defined as None
in cases where previously it was undefined. (#8306)ContextVar.reset()
now works correctly inside inlineCallbacks
functions and coroutines. (#10301)Bugfixes
- twisted.conch.checkers.UNIXAuthorizedKeysFiles now uses the filesystem encoding to decode usernames before looking them up in the password database, so it works on Python 3. (#10286)
- twisted.conch.ssh.SSHSession.request_env no longer gives a warning if the session does not implement ISessionSetEnv. (#10347)
- The cftp command line (and `twisted.conch.scripts.cftp.SSHSession.extReceived`) no longer raises an unhandled error when receiving data on stderr from the server. (#10351)
Misc
~~~~
- #10330
Web
---
Features
IRequest.write
instead of passing them all separately. This greatly reduces the number of chunks in the response. (#10348)Misc
- #11604
Mail
----
Bugfixes
Bugfixes
- twisted.words.protocols.irc.IRCClient now splits overly long NOTICEs and NOTICEs containing \n before sending. (#10285)
Names
-----
Bugfixes
Features
- ``trial --jobs=N --exitfirst`` is now supported. (#9654)
Bugfixes
trial --jobs=N --until-failure ...
now reports the correct number of tests run after each iteration. (#10311)trial -jN ...
will now pass errors and failures to IReporter
methods as instances of WorkerException
instead of str
. (#10333)Misc
- #10319, #10338, #11571
twisted.internet.base.DelayedCall.__repr__
will no longer raise AttributeError
if the DelayedCall
was created before debug mode was enabled. As a side-effect, twisted.internet.base.DelayedCall.creator
is now defined as None
in cases where previously it was undefined. (#8306)ContextVar.reset()
now works correctly inside inlineCallbacks
functions and coroutines. (#10301)Bugfixes
- twisted.conch.checkers.UNIXAuthorizedKeysFiles now uses the filesystem encoding to decode usernames before looking them up in the password database, so it works on Python 3. (#10286)
- twisted.conch.ssh.SSHSession.request_env no longer gives a warning if the session does not implement ISessionSetEnv. (#10347)
- The cftp command line (and `twisted.conch.scripts.cftp.SSHSession.extReceived`) no longer raises an unhandled error when receiving data on stderr from the server. (#10351)
Misc
~~~~
- #10330
Web
---
Features
IRequest.write
instead of passing them all separately. This greatly reduces the number of chunks in the response. (#10348)Misc
- #11604
Mail
----
Bugfixes
Bugfixes
- twisted.words.protocols.irc.IRCClient now splits overly long NOTICEs and NOTICEs containing \n before sending. (#10285)
Names
-----
Bugfixes
Features
- ``trial --jobs=N --exitfirst`` is now supported. (#9654)
Bugfixes
trial --jobs=N --until-failure ...
now reports the correct number of tests run after each iteration. (#10311)trial -jN ...
will now pass errors and failures to IReporter
methods as instances of WorkerException
instead of str
. (#10333)Misc
- #0, #10319, #10338, #11571