Repository: twisted/twisted

Issue:
Release 24.7.0
just the release task

Discussion:

Patch:
diff --git a/NEWS.rst b/NEWS.rst
index 2ece4de16e..9138e7bb81 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -8,6 +8,150 @@ https://twisted.org/trac/ticket/<number>
 
 .. towncrier release notes start
 
+Twisted 24.7.0 (2024-08-08)
+===========================
+
+24.7.0.rc2 fixed an unreleased regression caused by PR 12109. (#12279)
+No other changes since 24.7.0.rc2
+
+
+Security Advisories
+-------------------
+
+- twisted.web.util.redirectTo now HTML-escapes the provided URL in the fallback response body it returns (GHSA-cf56-g6w6-pqq2, CVE-2024-41810). (#9839)
+- The HTTP 1.0 and 1.1 server provided by twisted.web could process pipelined HTTP requests out-of-order, possibly resulting in information disclosure (CVE-2024-41671/GHSA-c8m8-j448-xjx7) (#12248)
+
+
+Features
+--------
+
+- twisted.protocols.ftp now supports the IPv6 extensions defined in RFC 2428. (#9645)
+- twisted.internet.defer.inlineCallbacks can now yield a coroutine. (#9972)
+- twisted.python._shellcomp.ZshArgumentsGenerator was updated for Python 3.13. (#12065)
+- twisted.web.wsgi request environment now contains the peer port number as `REMOTE_PORT`. (#12096)
+- twisted.internet.defer.Deferred.callback() and twisted.internet.defer.Deferred.addCallbacks() no longer use `assert` to check the type of the arguments. You should now use type checking to validate your code. These changes were done to reduce the CPU usage. (#12122)
+- Added two new methods, twisted.logger.Logger.failuresHandled and twisted.logger.Logger.failureHandler, which allow for more concise and convenient handling of exceptions when dispatching out to application code.  The former can arbitrarily customize failure handling at the call site, and the latter can be used for performance-sensitive cases where no additional information needs to be logged. (#12188)
+- twisted.internet.defer.Deferred.addCallback now runs about 10% faster. (#12223)
+- twisted.internet.defer.Deferred error handling is now faster, taking 40% less time to run. (#12227)
+
+
+Bugfixes
+--------
+
+- twisted.internet.ssl.Certificate.__repr__ can now handle certificates without a common name (CN) in the certificate itself or the signing CA. (#5851)
+- Type annotations have been added to twisted.conch.interfaces.IKnownHostEntry and its implementations, twisted.conch.client.knownhosts.PlainHost and twisted.conch.client.knownhosts.HashedHost, correcting a variety of type confusion issues throughout the conch client code. (#9713)
+- twisted.python.failure.Failure once again utilizes the custom pickling logic it used to in the past. (#12112)
+- twisted.conch.client.knownhosts.KnownHostsFile.verifyHostKey no longer logs an exception when automatically adding an IP address host key, which means the interactive `conch` command-line no longer will either. (#12141)
+
+
+Improved Documentation
+----------------------
+
+- The IRC server example found in the documentation was updated for readability. (#12097)
+- Remove contextvars from list of optional dependencies. (#12128)
+- The documentation for installing Twisted was moved into a single page. (#12145)
+- The project's compatibility policy now clearly indicates that the GitHub Actions test matrix defines the supported platforms. (#12167)
+- Updated imap4client.py example, it no longer references Python 2. (#12252)
+
+
+Deprecations and Removals
+-------------------------
+
+- twisted.internet.defer.returnValue has been deprecated. You can replace it with the standard `return` statement. (#9930)
+- The `twisted-iocpsupport` is no longer a hard dependency on Windows.
+  The IOCP support is now installed together with the other Windows soft
+  dependencies via `twisted[windows-platform]`. (#11893)
+- twisted.python.deprecate helper function will now always strip whitespaces from the docstrings.
+  This is done to have the same behaviour as with Python 3.13. (#12063)
+- twisted.conch.manhole.ManholeInterpreter.write, twisted.conch.manhole.ManholeInterpreter.addOutput, twisted.mail.imap4.IMAP4Server.sendUntaggedResponse `async` argument, deprecated since 18.9.0, has been removed. (#12130)
+- twisted.web.soap was removed.
+  The SOAP support was already broken, for at least the last 4 years.
+  The SOAP support in Twisted has no active maintainer. (#12146)
+
+
+Misc
+----
+
+- #11744, #11771, #12113, #12154, #12169, #12179, #12193, #12195, #12197, #12215, #12221, #12243, #12249, #12254, #12259, #12669
+
+
+Conch
+-----
+
+Bugfixes
+~~~~~~~~
+
+- twisted.conch.insults.window.Widget.functionKeyReceived now dispatches functional key events to corresponding `func_KEYNAME` methods, where `KEYNAME` can be `F1`, `F2`, `HOME`, `UP_ARROW` etc. This is a regression introduced with #8214 in Twisted 16.5.0, where events changed from `const` objects to bytestrings in square brackets like `[F1]`. (#12046)
+
+
+Web
+---
+
+Features
+~~~~~~~~
+
+- twisted.web.agent.Agent now allows duplicate Content-Length headers having the same value, per RFC 9110 section 8.6. It is otherwise more strict when parsing Content-Length header values. (#9064)
+- twisted.web.client.HTTPConnectionPool used by HTTP clients now runs faster by using a little less CPU. (#12108)
+- twisted.web.http_headers now uses less CPU, making a small HTTP client request 10% faster or so. (#12116)
+- twisted.web's HTTP/1.1 server now runs a little faster, with about 10% lower CPU overhead. (#12133)
+- twisted.web's HTTP 1.1 server is an additional 5% faster. (#12155)
+
+
+Bugfixes
+~~~~~~~~
+
+- twisted.web.http.IM_A_TEAPOT was added and returns `I'm a teapot`
+  as default message for the status code 418,
+  as defined in RFC 2324 section 2.3.2. (#12104)
+- The HTTP 1.0/1.1 server provided by twisted.web is now more picky about the first line of a request, improving compliance with RFC 9112. (#12233)
+- The HTTP 1.0/1.1 server provided by twisted.web now constraints the character set of HTTP header names, improving compliance with RFC 9110. (#12235)
+
+
+
+Improved Documentation
+~~~~~~~~~~~~~~~~~~~~~~
+
+- Fix ReverseProxyResource example in developer guide. (#12152)
+
+
+Deprecations and Removals
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- twisted.web.util.ChildRedirector, which has never worked on Python 3, has been removed. (#9591)
+- ``twisted.web.http.Request.setResponseCode()`` no longer validates the types of inputs; we encourage you to use a type checker like mypy to catch these sort of errors. The long-deprecated ``twisted.web.server.string_date_time()`` and ``twisted.web.server.date_time_string()`` APIs were removed altogether. (#12133)
+- twisted.web.http.HTTPClient is now deprecated in favor of twisted.web.client.Agent (#12158)
+
+
+Misc
+~~~~
+
+- #12098, #12194, #12200, #12241, #12257
+
+
+Mail
+----
+
+No significant changes.
+
+
+Words
+-----
+
+No significant changes.
+
+
+Names
+-----
+
+No significant changes.
+
+
+Trial
+-----
+
+No significant changes.
+
+
 Twisted 24.3.0 (2024-03-01)
 ===========================
 
diff --git a/src/twisted/_version.py b/src/twisted/_version.py
index 24314a0044..ae3c080d20 100644
--- a/src/twisted/_version.py
+++ b/src/twisted/_version.py
@@ -7,5 +7,5 @@ Provides Twisted version information.
 
 from incremental import Version
 
-__version__ = Version("Twisted", 24, 3, 0, post=0)
+__version__ = Version("Twisted", 24, 7, 0, post=0)
 __all__ = ["__version__"]
diff --git a/src/twisted/conch/newsfragments/12046.bugfix b/src/twisted/conch/newsfragments/12046.bugfix
deleted file mode 100644
index 2f9b269f0d..0000000000
--- a/src/twisted/conch/newsfragments/12046.bugfix
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.conch.insults.window.Widget.functionKeyReceived now dispatches functional key events to corresponding `func_KEYNAME` methods, where `KEYNAME` can be `F1`, `F2`, `HOME`, `UP_ARROW` etc. This is a regression introduced with #8214 in Twisted 16.5.0, where events changed from `const` objects to bytestrings in square brackets like `[F1]`.
\ No newline at end of file
diff --git a/src/twisted/internet/defer.py b/src/twisted/internet/defer.py
index caf9a2c831..e050f4e383 100644
--- a/src/twisted/internet/defer.py
+++ b/src/twisted/internet/defer.py
@@ -1893,7 +1893,10 @@ class _DefGen_Return(BaseException):
         self.value = value
 
 
-@deprecated(Version("Twisted", "NEXT", 0, 0), replacement="standard return statement")
+@deprecated(
+    Version("Twisted", 24, 7, 0),
+    replacement="standard return statement",
+)
 def returnValue(val: object) -> NoReturn:
     """
     Return val from a L{inlineCallbacks} generator.
@@ -2250,7 +2253,7 @@ def inlineCallbacks(
     A C{CancelledError} will be raised from the C{yield}ed L{Deferred} that
     has been cancelled if that C{Deferred} does not otherwise suppress it.
 
-    C{inlineCallbacks} behaves very similarly to coroutines. Since Twisted NEXT
+    C{inlineCallbacks} behaves very similarly to coroutines. Since Twisted 24.7.0
     it is possible to rewrite functions using C{inlineCallbacks} to C{async def}
     in piecewise manner and be mostly compatible to existing code.
 
diff --git a/src/twisted/newsfragments/11744.misc b/src/twisted/newsfragments/11744.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/newsfragments/11771.misc b/src/twisted/newsfragments/11771.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/newsfragments/11893.removal b/src/twisted/newsfragments/11893.removal
deleted file mode 100644
index 3cfbcccde5..0000000000
--- a/src/twisted/newsfragments/11893.removal
+++ /dev/null
@@ -1,3 +0,0 @@
-The `twisted-iocpsupport` is no longer a hard dependency on Windows.
-The IOCP support is now installed together with the other Windows soft
-dependencies via `twisted[windows-platform]`.
diff --git a/src/twisted/newsfragments/12063.removal b/src/twisted/newsfragments/12063.removal
deleted file mode 100644
index 2b908c808b..0000000000
--- a/src/twisted/newsfragments/12063.removal
+++ /dev/null
@@ -1,2 +0,0 @@
-twisted.python.deprecate helper function will now always strip whitespaces from the docstrings.
-This is done to have the same behaviour as with Python 3.13.
diff --git a/src/twisted/newsfragments/12065.feature b/src/twisted/newsfragments/12065.feature
deleted file mode 100644
index 4b9b4b2f07..0000000000
--- a/src/twisted/newsfragments/12065.feature
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.python._shellcomp.ZshArgumentsGenerator was updated for Python 3.13.
diff --git a/src/twisted/newsfragments/12096.feature b/src/twisted/newsfragments/12096.feature
deleted file mode 100644
index a07999d034..0000000000
--- a/src/twisted/newsfragments/12096.feature
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.web.wsgi request environment now contains the peer port number as `REMOTE_PORT`.
\ No newline at end of file
diff --git a/src/twisted/newsfragments/12097.doc b/src/twisted/newsfragments/12097.doc
deleted file mode 100644
index fd44dc887e..0000000000
--- a/src/twisted/newsfragments/12097.doc
+++ /dev/null
@@ -1,1 +0,0 @@
-The IRC server example found in the documentation was updated for readability.
diff --git a/src/twisted/newsfragments/12112.bugfix b/src/twisted/newsfragments/12112.bugfix
deleted file mode 100644
index 2b260e8da0..0000000000
--- a/src/twisted/newsfragments/12112.bugfix
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.python.failure.Failure once again utilizes the custom pickling logic it used to in the past.
\ No newline at end of file
diff --git a/src/twisted/newsfragments/12113.misc b/src/twisted/newsfragments/12113.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/newsfragments/12122.feature b/src/twisted/newsfragments/12122.feature
deleted file mode 100644
index e289eb91c6..0000000000
--- a/src/twisted/newsfragments/12122.feature
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.internet.defer.Deferred.callback() and twisted.internet.defer.Deferred.addCallbacks() no longer use `assert` to check the type of the arguments. You should now use type checking to validate your code. These changes were done to reduce the CPU usage.
\ No newline at end of file
diff --git a/src/twisted/newsfragments/12128.doc b/src/twisted/newsfragments/12128.doc
deleted file mode 100644
index 9b67fd98e7..0000000000
--- a/src/twisted/newsfragments/12128.doc
+++ /dev/null
@@ -1,1 +0,0 @@
-Remove contextvars from list of optional dependencies.
diff --git a/src/twisted/newsfragments/12130.removal b/src/twisted/newsfragments/12130.removal
deleted file mode 100644
index 7024afb815..0000000000
--- a/src/twisted/newsfragments/12130.removal
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.conch.manhole.ManholeInterpreter.write, twisted.conch.manhole.ManholeInterpreter.addOutput, twisted.mail.imap4.IMAP4Server.sendUntaggedResponse `async` argument, deprecated since 18.9.0, has been removed.
diff --git a/src/twisted/newsfragments/12141.bugfix b/src/twisted/newsfragments/12141.bugfix
deleted file mode 100644
index 110da4bdef..0000000000
--- a/src/twisted/newsfragments/12141.bugfix
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.conch.client.knownhosts.KnownHostsFile.verifyHostKey no longer logs an exception when automatically adding an IP address host key, which means the interactive `conch` command-line no longer will either.
diff --git a/src/twisted/newsfragments/12145.doc b/src/twisted/newsfragments/12145.doc
deleted file mode 100644
index 89aaf5635a..0000000000
--- a/src/twisted/newsfragments/12145.doc
+++ /dev/null
@@ -1,1 +0,0 @@
-The documentation for installing Twisted was moved into a single page.
diff --git a/src/twisted/newsfragments/12146.removal b/src/twisted/newsfragments/12146.removal
deleted file mode 100644
index d8ea9237f8..0000000000
--- a/src/twisted/newsfragments/12146.removal
+++ /dev/null
@@ -1,3 +0,0 @@
-twisted.web.soap was removed.
-The SOAP support was already broken, for at least the last 4 years.
-The SOAP support in Twisted has no active maintainer.
diff --git a/src/twisted/newsfragments/12154.misc b/src/twisted/newsfragments/12154.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/newsfragments/12167.doc b/src/twisted/newsfragments/12167.doc
deleted file mode 100644
index 075043dfca..0000000000
--- a/src/twisted/newsfragments/12167.doc
+++ /dev/null
@@ -1,1 +0,0 @@
-The project's compatibility policy now clearly indicates that the GitHub Actions test matrix defines the supported platforms.
diff --git a/src/twisted/newsfragments/12169.misc b/src/twisted/newsfragments/12169.misc
deleted file mode 100644
index e1657975c6..0000000000
--- a/src/twisted/newsfragments/12169.misc
+++ /dev/null
@@ -1,1 +0,0 @@
-Added more tests for ``twisted.internet.defer.inlineCallbacks`` decorator.
diff --git a/src/twisted/newsfragments/12179.misc b/src/twisted/newsfragments/12179.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/newsfragments/12188.feature b/src/twisted/newsfragments/12188.feature
deleted file mode 100644
index 8c6353a4fa..0000000000
--- a/src/twisted/newsfragments/12188.feature
+++ /dev/null
@@ -1,1 +0,0 @@
-Added two new methods, twisted.logger.Logger.failuresHandled and twisted.logger.Logger.failureHandler, which allow for more concise and convenient handling of exceptions when dispatching out to application code.  The former can arbitrarily customize failure handling at the call site, and the latter can be used for performance-sensitive cases where no additional information needs to be logged.
diff --git a/src/twisted/newsfragments/12193.misc b/src/twisted/newsfragments/12193.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/newsfragments/12195.misc b/src/twisted/newsfragments/12195.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/newsfragments/12197.misc b/src/twisted/newsfragments/12197.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/newsfragments/12215.misc b/src/twisted/newsfragments/12215.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/newsfragments/12221.misc b/src/twisted/newsfragments/12221.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/newsfragments/12223.feature b/src/twisted/newsfragments/12223.feature
deleted file mode 100644
index 78991647ac..0000000000
--- a/src/twisted/newsfragments/12223.feature
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.internet.defer.Deferred.addCallback now runs about 10% faster.
\ No newline at end of file
diff --git a/src/twisted/newsfragments/12227.feature b/src/twisted/newsfragments/12227.feature
deleted file mode 100644
index 8f11ffd838..0000000000
--- a/src/twisted/newsfragments/12227.feature
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.internet.defer.Deferred error handling is now faster, taking 40% less time to run.
\ No newline at end of file
diff --git a/src/twisted/newsfragments/12243.misc b/src/twisted/newsfragments/12243.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/newsfragments/12249.misc b/src/twisted/newsfragments/12249.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/newsfragments/12252.doc b/src/twisted/newsfragments/12252.doc
deleted file mode 100644
index 16d5c72376..0000000000
--- a/src/twisted/newsfragments/12252.doc
+++ /dev/null
@@ -1,1 +0,0 @@
-Updated imap4client.py example, it no longer references Python 2.
\ No newline at end of file
diff --git a/src/twisted/newsfragments/12254.misc b/src/twisted/newsfragments/12254.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/newsfragments/12259.misc b/src/twisted/newsfragments/12259.misc
deleted file mode 100644
index 294e5969fa..0000000000
--- a/src/twisted/newsfragments/12259.misc
+++ /dev/null
@@ -1,1 +0,0 @@
-Bump versions of Node.js GitHub actions triggering deprecation warnings.
diff --git a/src/twisted/newsfragments/12669.misc b/src/twisted/newsfragments/12669.misc
deleted file mode 100644
index 526653bd85..0000000000
--- a/src/twisted/newsfragments/12669.misc
+++ /dev/null
@@ -1,1 +0,0 @@
-Bump versions of CodSpeed and CodeCov GH actions using deprecated Node.js.
diff --git a/src/twisted/newsfragments/5851.bugfix b/src/twisted/newsfragments/5851.bugfix
deleted file mode 100644
index 15b4030f68..0000000000
--- a/src/twisted/newsfragments/5851.bugfix
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.internet.ssl.Certificate.__repr__ can now handle certificates without a common name (CN) in the certificate itself or the signing CA.
diff --git a/src/twisted/newsfragments/9645.feature b/src/twisted/newsfragments/9645.feature
deleted file mode 100644
index d31592a6ab..0000000000
--- a/src/twisted/newsfragments/9645.feature
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.protocols.ftp now supports the IPv6 extensions defined in RFC 2428.
diff --git a/src/twisted/newsfragments/9713.bugfix b/src/twisted/newsfragments/9713.bugfix
deleted file mode 100644
index a70d0d3d6e..0000000000
--- a/src/twisted/newsfragments/9713.bugfix
+++ /dev/null
@@ -1,1 +0,0 @@
-Type annotations have been added to twisted.conch.interfaces.IKnownHostEntry and its implementations, twisted.conch.client.knownhosts.PlainHost and twisted.conch.client.knownhosts.HashedHost, correcting a variety of type confusion issues throughout the conch client code.
diff --git a/src/twisted/newsfragments/9930.removal b/src/twisted/newsfragments/9930.removal
deleted file mode 100644
index d6d246a2da..0000000000
--- a/src/twisted/newsfragments/9930.removal
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.internet.defer.returnValue has been deprecated. You can replace it with the standard `return` statement.
diff --git a/src/twisted/newsfragments/9972.feature b/src/twisted/newsfragments/9972.feature
deleted file mode 100644
index 835ed074ff..0000000000
--- a/src/twisted/newsfragments/9972.feature
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.internet.defer.inlineCallbacks can now yield a coroutine.
diff --git a/src/twisted/web/http.py b/src/twisted/web/http.py
index 6b1648debe..e80f6cb365 100644
--- a/src/twisted/web/http.py
+++ b/src/twisted/web/http.py
@@ -848,7 +848,7 @@ class HTTPClient(basic.LineReceiver):
 
 
 deprecatedModuleAttribute(
-    Version("Twisted", "NEXT", 0, 0),
+    Version("Twisted", 24, 7, 0),
     "Use twisted.web.client.Agent instead.",
     __name__,
     HTTPClient.__name__,
diff --git a/src/twisted/web/newsfragments/12098.misc b/src/twisted/web/newsfragments/12098.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/web/newsfragments/12104.bugfix b/src/twisted/web/newsfragments/12104.bugfix
deleted file mode 100644
index 47f42b0377..0000000000
--- a/src/twisted/web/newsfragments/12104.bugfix
+++ /dev/null
@@ -1,3 +0,0 @@
-twisted.web.http.IM_A_TEAPOT was added and returns `I'm a teapot`
-as default message for the status code 418,
-as defined in RFC 2324 section 2.3.2.
diff --git a/src/twisted/web/newsfragments/12108.feature b/src/twisted/web/newsfragments/12108.feature
deleted file mode 100644
index 609ed06b2e..0000000000
--- a/src/twisted/web/newsfragments/12108.feature
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.web.client.HTTPConnectionPool used by HTTP clients now runs faster by using a little less CPU.
\ No newline at end of file
diff --git a/src/twisted/web/newsfragments/12116.feature b/src/twisted/web/newsfragments/12116.feature
deleted file mode 100644
index bd4b3bb23e..0000000000
--- a/src/twisted/web/newsfragments/12116.feature
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.web.http_headers now uses less CPU, making a small HTTP client request 10% faster or so.
\ No newline at end of file
diff --git a/src/twisted/web/newsfragments/12133.feature b/src/twisted/web/newsfragments/12133.feature
deleted file mode 100644
index 9e18345707..0000000000
--- a/src/twisted/web/newsfragments/12133.feature
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.web's HTTP/1.1 server now runs a little faster, with about 10% lower CPU overhead.
\ No newline at end of file
diff --git a/src/twisted/web/newsfragments/12133.removal b/src/twisted/web/newsfragments/12133.removal
deleted file mode 100644
index 801b5e83bc..0000000000
--- a/src/twisted/web/newsfragments/12133.removal
+++ /dev/null
@@ -1,1 +0,0 @@
-``twisted.web.http.Request.setResponseCode()`` no longer validates the types of inputs; we encourage you to use a type checker like mypy to catch these sort of errors. The long-deprecated ``twisted.web.server.string_date_time()`` and ``twisted.web.server.date_time_string()`` APIs were removed altogether.
\ No newline at end of file
diff --git a/src/twisted/web/newsfragments/12152.doc b/src/twisted/web/newsfragments/12152.doc
deleted file mode 100644
index 3e3ccb136b..0000000000
--- a/src/twisted/web/newsfragments/12152.doc
+++ /dev/null
@@ -1,1 +0,0 @@
-Fix ReverseProxyResource example in developer guide.
diff --git a/src/twisted/web/newsfragments/12155.feature b/src/twisted/web/newsfragments/12155.feature
deleted file mode 100644
index da2c051676..0000000000
--- a/src/twisted/web/newsfragments/12155.feature
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.web's HTTP 1.1 server is an additional 5% faster.
\ No newline at end of file
diff --git a/src/twisted/web/newsfragments/12158.removal b/src/twisted/web/newsfragments/12158.removal
deleted file mode 100644
index 94bc3acb08..0000000000
--- a/src/twisted/web/newsfragments/12158.removal
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.web.http.HTTPClient is now deprecated in favor of twisted.web.client.Agent
diff --git a/src/twisted/web/newsfragments/12194.misc b/src/twisted/web/newsfragments/12194.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/web/newsfragments/12200.misc b/src/twisted/web/newsfragments/12200.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/web/newsfragments/12233.bugfix b/src/twisted/web/newsfragments/12233.bugfix
deleted file mode 100644
index bfec79b031..0000000000
--- a/src/twisted/web/newsfragments/12233.bugfix
+++ /dev/null
@@ -1,1 +0,0 @@
-The HTTP 1.0/1.1 server provided by twisted.web is now more picky about the first line of a request, improving compliance with RFC 9112.
diff --git a/src/twisted/web/newsfragments/12235.bugfix b/src/twisted/web/newsfragments/12235.bugfix
deleted file mode 100644
index 45b83655c5..0000000000
--- a/src/twisted/web/newsfragments/12235.bugfix
+++ /dev/null
@@ -1,1 +0,0 @@
-The HTTP 1.0/1.1 server provided by twisted.web now constains the characters set of HTTP header names, improving compliance with RFC 9110.
diff --git a/src/twisted/web/newsfragments/12241.misc b/src/twisted/web/newsfragments/12241.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/web/newsfragments/12248.bugfix b/src/twisted/web/newsfragments/12248.bugfix
deleted file mode 100644
index 2fb6067661..0000000000
--- a/src/twisted/web/newsfragments/12248.bugfix
+++ /dev/null
@@ -1,1 +0,0 @@
-The HTTP 1.0 and 1.1 server provided by twisted.web could process pipelined HTTP requests out-of-order, possibly resulting in information disclosure (CVE-2024-41671/GHSA-c8m8-j448-xjx7)
diff --git a/src/twisted/web/newsfragments/12257.misc b/src/twisted/web/newsfragments/12257.misc
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/twisted/web/newsfragments/12263.bugfix b/src/twisted/web/newsfragments/12263.bugfix
deleted file mode 100644
index b3982ca0fb..0000000000
--- a/src/twisted/web/newsfragments/12263.bugfix
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.web.util.redirectTo now HTML-escapes the provided URL in the fallback response body it returns (GHSA-cf56-g6w6-pqq2). The issue is being tracked with CVE-2024-41810.
\ No newline at end of file
diff --git a/src/twisted/web/newsfragments/9064.feature b/src/twisted/web/newsfragments/9064.feature
deleted file mode 100644
index f24205ec7f..0000000000
--- a/src/twisted/web/newsfragments/9064.feature
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.web.agent.Agent now allows duplicate Content-Length headers having the same value, per RFC 9110 section 8.6. It is otherwise more strict when parsing Content-Length header values.
diff --git a/src/twisted/web/newsfragments/9591.removal b/src/twisted/web/newsfragments/9591.removal
deleted file mode 100644
index 4e0b5ae57d..0000000000
--- a/src/twisted/web/newsfragments/9591.removal
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.web.util.ChildRedirector, which has never worked on Python 3, has been removed.
diff --git a/src/twisted/web/newsfragments/9839.bugfix b/src/twisted/web/newsfragments/9839.bugfix
deleted file mode 100644
index 1e2e7f7298..0000000000
--- a/src/twisted/web/newsfragments/9839.bugfix
+++ /dev/null
@@ -1,1 +0,0 @@
-twisted.web.util.redirectTo now HTML-escapes the provided URL in the fallback response body it returns (GHSA-cf56-g6w6-pqq2, CVE-2024-41810).


Test patch:
diff --git a/src/twisted/web/test/test_http.py b/src/twisted/web/test/test_http.py
index 92dc95a520..12a9476c07 100644
--- a/src/twisted/web/test/test_http.py
+++ b/src/twisted/web/test/test_http.py
@@ -4675,7 +4675,7 @@ class HTTPClientDeprecationTests(unittest.SynchronousTestCase):
         self.getDeprecatedModuleAttribute(
             "twisted.web.http",
             "HTTPClient",
-            Version("Twisted", "NEXT", 0, 0),
+            Version("Twisted", 24, 7, 0),
         )