This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit a223293bbc16fa93bdbd6ba2373111c5c19c1e51
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Aug 15 12:33:55 2024 +0100

    Prep changelog for 12.0.x
---
 webapps/docs/changelog.xml | 2751 +-------------------------------------------
 1 file changed, 9 insertions(+), 2742 deletions(-)

diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index e8778baac5..bcd5a4398b 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -104,7 +104,15 @@
   They eventually become mixed with the numbered issues (i.e., numbered
   issues do not "pop up" wrt. others).
 -->
-<section name="Tomcat 11.0.0-M25 (markt)" rtext="in development">
+<section name="Tomcat 12.0.0-M1 (markt)" rtext="in development">
+  <subsection name="General">
+    <changelog>
+      <scode>
+        This release contains all of the changes up to and including those in
+        Apache Tomcat 11.0.0-M24 plus the additional changes listed below. 
(markt)
+      </scode>
+    </changelog>
+  </subsection>
   <subsection name="Coyote">
     <changelog>
       <fix>
@@ -174,2747 +182,6 @@
     </changelog>
   </subsection>
 </section>
-<section name="Tomcat 11.0.0-M24 (markt)" rtext="release in progress">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>69234</bug>: Fix a regression caused by the refactoring to use
-        <code>java.net.URI</code> rather than <code>java.net.URL</code> that
-        broke support for parallel deployment with WAR files. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Correct regressions in the refactoring that added recycling of the
-        coyote request and response to the HTTP/2 processing. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M23 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        Add support for RFC 8297 (Early Hints). Applications can use this
-        feature by casting the <code>HttpServletResponse</code> to
-        <code>org.apache.catalina.connector.Reponse</code> and then calling the
-        method <code>void sendEarlyHints()</code>. This method will be added to
-        the Servlet API (removing the need for the cast) in Servlet 6.2 
onwards.
-        (markt)
-      </add>
-      <fix>
-        <bug>69214</bug>: Do not reject a CORS request that uses POST but does
-        not include a <code>content-type</code> header. Tomcat now correctly
-        processes this as a simple CORS request. Based on a patch suggested by
-        thebluemountain. (markt)
-      </fix>
-      <fix>
-        Refactor <code>SpnegoAuthenticator</code> so it uses
-        <code>Subject.callAs()</code> rather than <code>Subject.doAs()</code>
-        when the available. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <update>
-        Add FFM compatibility methods for LibreSSL support. Renegotiation is
-        not supported at the moment. (remm)
-      </update>
-      <update>
-        Add <code>org.apache.tomcat.util.openssl.LIBRARY_NAME</code> (specifies
-        the name of the library to load) and
-        <code>org.apache.tomcat.util.openssl.USE_SYSTEM_LOAD_LIBRARY</code>
-        (set to <code>true</code> to use <code>System.loadLibrary</code> rather
-        than the FFM library loading code) to configure the OpenSSL library
-        loading using FFM. (remm)
-      </update>
-      <update>
-        Add FFM compatibility methods for BoringSSL support. Renegotiation is
-        not supported in many cases. (remm)
-      </update>
-      <fix>
-        Ensure that HTTP/2 stream input buffers are only created when there is 
a
-        request body to be read. (markt)
-      </fix>
-      <scode>
-        Refactor creation of HttpParser instances from the Processor level to
-        the Protocol level since the parser configuration depends on the
-        protocol and the parser is, otherwise, stateless. (markt)
-      </scode>
-      <add>
-        Align HTTP/2 with HTTP/1.1 and recycle the container internal request
-        and response processing objects by default. This behaviour can be
-        controlled via the new <code>discardRequestsAndResponses</code>
-        attribute on the HTTP/2 upgrade protocol. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        <bug>69206</bug>: Ensure statements returned from 
<code>Statement</code>
-        methods <code>executeQuery()</code>, <code>getResultSet()</code> and
-        <code>getGeneratedKeys()</code> are correctly wrapped before being
-        returned to the caller. Based on pull request <pr>742</pr> provided by
-        Michael Clarke.
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Fix packaging regression with missing osgi information following
-        addition of the <code>test-only</code> build target. (remm)
-      </fix>
-      <update>
-        Update Tomcat Native to 2.0.8. (markt)
-      </update>
-      <update>
-        Update Byte Buddy to 1.14.18. (markt)
-      </update>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <add>
-        Improvements to Japanese translations by tak7iji. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M22 (markt)" rtext="2024-07-05">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Allow <code>JAASRealm</code> to use the configuration source to load a
-        configured <code>configFile</code>, for easier use with testing. (remm)
-      </fix>
-      <fix>
-        Fix a potential <code>NullPointerException</code> in classes that 
extend
-        <code>ServletResponse</code> when
-        <code>setCharacterEncoding(Charset)</code> is called with
-        <code>null</code>. (markt)
-      </fix>
-      <fix>
-        Add missing algorithm callback to the <code>JAASCallbackHandler</code>.
-        (remm)
-      </fix>
-      <fix>
-        Add the OpenSSL version number on the APR and OpenSSL status classes.
-        (remm)
-      </fix>
-      <fix>
-        <bug>69131</bug>: Expand the implementation of the <code>filter</code>
-        value of the Authenticator attribute <code>allowCorsPreflight</code>, 
so
-        that it applies to all requests that match the configured URL patterns
-        for the CORS filter, rather than only applying if the CORS filter is
-        mapped to <code>/*</code>. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Improve the algorithm used to identify the IP address to use to unlock
-        the acceptor thread when a Connector is listening on all local
-        addresses. Interfaces that are configured for point to point 
connections
-        or are not currently up are now skipped. (markt)
-      </fix>
-      <fix>
-        Clean and log OpenSSL errors before processing of OpenSSL conf commands
-        in the FFM code. (remm)
-      </fix>
-      <fix>
-        <bug>69121</bug>: Ensure that the <code>onComplete()</code> event is
-        triggered if <code>AsyncListener.onError()</code> dispatches to a 
target
-        that throws an exception. (markt)
-      </fix>
-      <fix>
-        Following the trailer header field refactoring, <code>-1</code> is no
-        longer an allowed value for <code>maxTrailerSize</code>. Adjust
-        documentation accordingly. (remm)
-      </fix>
-      <update>
-        Move OpenSSL support using FFM to a separate JAR named
-        <code>tomcat-coyote-ffm.jar</code> that advertises Java 22 in its
-        manifest. (remm)
-      </update>
-      <fix>
-        Fix search for OpenSSL library for FFM on Mac OS so that
-        <code>java.library.path</code> is searched. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        Update the optimisation in <code>jakarta.el.ImportHandler</code> so it
-        is aware of new classes added to the <code>java.lang</code> package in
-        Java 23. (markt)
-      </fix>
-      <fix>
-        Ensure that an exception in <code>toString()</code> still results in an
-        <code>ELException</code> when an object is coerced to a String using
-        <code>ExpressionFactory.coerceToType()</code>. (markt)
-      </fix>
-      <add>
-        Add support for specifying Java 24 (with the value <code>24</code>) as
-        the compiler source and/or compiler target for JSP compilation. If used
-        with an Eclipse JDT compiler version that does not support these 
values,
-        a warning will be logged and the default will used.
-        (markt)
-      </add>
-      <fix>
-        <bug>69135</bug>: When using include directives in a tag file packaged
-        in a JAR file, ensure that context relative includes are processed
-        correctly. (markt)
-      </fix>
-      <fix>
-        <bug>69135</bug>: When using include directives in a tag file packaged
-        in a JAR file, ensure that file relative includes are processed
-        correctly. (markt)
-      </fix>
-      <fix>
-        <bug>69135</bug>: When using include directives in a tag file packaged
-        in a JAR file, ensure that file relative includes are are not permitted
-        to access files outside of the <code>/META_INF/tags/</code> directory
-        nor outside of the JAR file. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        Fix status servlet detailed view of the connectors when using automatic
-        port. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Add <code>test-only</code> build target to allow running only the
-        testsuite, supporting Java versions down to the minimum supported
-        to run Tomcat. (rjung)
-      </update>
-      <update>
-        Update to the Eclipse JDT compiler 4.32. (markt)
-      </update>
-      <update>
-        Update UnboundID to 7.0.1. (markt)
-      </update>
-      <update>
-        Update to SpotBugs 4.8.6. (markt)
-      </update>
-      <update>
-        Remove cglib dependency as it is not required by the version of 
EasyMock
-        used by the unit tests. (markt)
-      </update>
-      <update>
-        Update EasyMock to 5.3.0. This adds a test dependency on Byte-Buddy
-        1.14.17. (markt)
-      </update>
-      <add>
-        Improvements to Czech translations by Vladimír Chlup. (markt)
-      </add>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <add>
-        Improvements to Japanese translations by tak7iji. (markt)
-      </add>
-      <add>
-        Improvements to Chinese translations by fangzheng. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M21 (markt)" rtext="2024-06-18">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        Add support for shallow copies when using WebDAV. (markt)
-      </add>
-      <scode>
-        Remove the <code>WebdavFixFilter</code> as it is no longer required.
-        (markt)
-      </scode>
-      <fix>
-        <bug>69066</bug>: Fix regression in SPNEGO authenticator when
-        processing Base64. Submitted by Daniel Lyko. (remm)
-      </fix>
-      <add>
-        Add <code>RealmBase.getPrincipal(GSSName, GSSCredential, 
GSSContext)</code>
-        for retrieving extended/additional information from an established
-        GSS context. (michaelo)
-      </add>
-      <fix>
-        Correct a regression in the fix for <bug>68721</bug> that caused some
-        instances of <code>LinkageError</code> to be reported as
-        <code>ClassNotFoundException</code>. (markt)
-      </fix>
-      <fix>
-        Ensure that static resources deployed via a JAR file remain accessible
-        when the context is configured to use a bloom filter. Based on pull
-        request <pr>730</pr> provided by bergander. (markt)
-      </fix>
-      <add>
-        Introduce reference counting so the <code>AprLifecycleListener</code>
-        is more robust. This particularly targets more complex embedded
-        configurations with multiple server instances with independent
-        lifecycles where more than one server instance requires the
-        <code>AprLifecycleListener</code>. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Fix OpenSSL FFM use of ERR_error_string with a 128 byte buffer,
-        and use ERR_error_string_n instead. (remm)
-      </fix>
-      <fix>
-        Fix a crash on Windows setting CA certificate on null path.
-        (remm)
-      </fix>
-      <fix>
-        <bug>69068</bug>: Ensure read timouts are triggered for asynchronous,
-        non-blocking reads when using HTTP/2. (markt)
-      </fix>
-      <update>
-        <bug>69133</bug>: Add task queue size configuration on the
-        <code>Connector</code> element, similar to the <code>Executor</code>
-        element, for consistency. (remm)
-      </update>
-      <fix>
-        Make counting of active HTTP/2 streams per connection more robust.
-        (markt)
-      </fix>
-      <add>
-        Add support for TLS 1.3 client initiated re-keying. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>68546</bug>: Small additional optimisation for initial loading of
-        Servlet code generated for JSPs. Based on a suggestion by Dan 
Armstrong.
-        (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <add>
-        Add the ability to set a sub-title for the Manager web application main
-        page. This is intended to allow users with lots of instances to easily
-        distinguish them. Based on pull request <pr>724</pr> by Simon Arame.
-        (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Revert Derby to 10.16.1.1 as that is the latest version of Derby that
-        runs on Java 17. (markt)
-      </update>
-      <update>
-        Update to Commons Daemon 1.4.0. (markt)
-      </update>
-      <update>
-        Update to Jakarta Annotations API 3.0. (markt)
-      </update>
-      <update>
-        Update to Jakarta Authentication API 3.1. (markt)
-      </update>
-      <update>
-        Update to Objenesis 3.4. (markt)
-      </update>
-      <update>
-        Update to Checkstyle 10.17.0. (markt)
-      </update>
-      <update>
-        Update to SpotBugs 4.8.5. (markt)
-      </update>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <add>
-        Improvements to Japanese translations by tak7iji. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M20 (markt)" rtext="2024-05-08">
-  <subsection name="Catalina">
-    <changelog>
-      <update>
-        Deprecate and remove <code>sessionCounter</code> (replaced by the
-        addition of the active session count and the expired session count,
-        as a reasonable approximation) and <code>duplicates</code> (which
-        does not represent a possible event in current implementations)
-        statistics from the session manager. (remm)
-      </update>
-      <fix>
-        <bug>68890</bug> Align output encoding of JSPs in the Manager webapp
-        with the XML declarations in those same files. (schultz)
-      </fix>
-      <fix>
-        Update Basic authentication to implement the requirements of RFC 7617
-        including the removal of the <code>trimCredentials</code> setting which
-        is now hard-coded to <code>false</code>. (markt)
-      </fix>
-      <add>
-        Small performance optimization when logging cookies with no values.
-        (schultz)
-      </add>
-      <fix>
-        Correct error handling for asynchronous requests. If the application
-        performs an dispatch during <code>AsyncListener.onError()</code> the
-        dispatch is now performed rather than completing the request using the
-        error page mechanism. (markt)
-      </fix>
-      <add>
-        Re-factor ElapsedTimeElement in AbstractAccessLogValve to use a 
customizable
-        style. (schultz)
-      </add>
-      <add>
-        Add more timescale options to AccessLogValve and 
ExtendedAccessLogValve.
-        Allow timescales to apply to "time-taken" token in 
ExtendedAccessLogValve.
-        (schultz)
-      </add>
-      <fix>
-        Fix WebDAV lock null (locks for non existing resources) thread safety
-        and removal. (remm)
-      </fix>
-      <fix>
-        Add periodic checking for WebDAV locks expiration. (remm)
-      </fix>
-      <fix>
-        Extend <code>Asn1Parser</code> to parse <code>UTF8String</code>s.
-        (michaelo)
-      </fix>
-      <fix>
-        Remove MBean metadata for attibutes that have been removed. Based on
-        pull request <pr>719</pr> by Shawn Q. (markt)
-      </fix>
-      <scode>
-        Remove duplicate ID check from <code>Manager.rotateSessionId()</code>.
-        (markt)
-      </scode>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Add OpenSSL FFM classes to <code>tomcat-embed-core.jar</code>. (remm)
-      </fix>
-      <fix>
-        Align non-secure and secure writes with NIO and skip the write attempt
-        when there are no bytes to be written. (markt)
-      </fix>
-      <fix>
-        Allow any positive value for <code>socket.unlockTimeout</code>. If a
-        negative or zero value is configured, the default of <code>250ms</code>
-        will be used. (mark)
-      </fix>
-      <fix>
-        Reduce the time spent waiting for the connector to unlock. The previous
-        default of 10s was noticeably too long for cases where the unlock has
-        failed. The wait time is now 100ms plus twice
-        <code>socket.unlockTimeout</code>. (markt)
-      </fix>
-      <fix>
-        Ensure that the <code>onAllDataRead()</code> event is triggered when 
the
-        request body uses chunked encoding and is read using non-blocking IO.
-        (markt)
-      </fix>
-      <fix>
-        <bug>68934</bug>: Add debug logging in the latch object when exceeding
-        <code>maxConnections</code>. (remm)
-      </fix>
-      <fix>
-        Refactor trailer field handling to use a <code>MimeHeaders</code>
-        instance to store trailer fields. (markt)
-      </fix>
-      <fix>
-        Ensure that multiple instances of the same trailer field are handled
-        correctly. (markt)
-      </fix>
-      <fix>
-        Fix non-blocking reads of chunked request bodies. (markt)
-      </fix>
-      <scode>
-        Refactor HTTP header parsing to use common parsing code. (markt)
-      </scode>
-      <fix>
-        When an invalid HTTP response header was dropped, an off-by-one error
-        meant that the first header in the response was also dropped. Fix based
-        on pull request <pr>710</pr> by foremans. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <add>
-        Add support for specifying Java 23 (with the value <code>23</code>) as
-        the compiler source and/or compiler target for JSP compilation. If used
-        with an Eclipse JDT compiler version that does not support these 
values,
-        a warning will be logged and the default will used.
-        (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>68884</bug>: Reduce the write timeout when writing WebSocket close
-        messages for abnormal closes. The timeout defaults to 50 milliseconds
-        and may be controlled using the
-        
<code>org.apache.tomcat.websocket.ABNORMAL_SESSION_CLOSE_SEND_TIMEOUT</code>
-        property in the user properties collection associated with the 
WebSocket
-        session. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        Examples: Improve performance of WebSocket chat application when
-        multiple clients disconnect at the same time. (markt)
-      </fix>
-      <update>
-        Examples: Increase the number of previous messages displayed when using
-        the WebSocket chat application. (markt)
-      </update>
-      <fix>
-        Examples: Improve performance of WebSocket snake application when
-        multiple clients disconnect at the same time. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Switch to using the Base64 encoder and decoder provided by the JRE
-        rather than the version provided by Commons Codec. This removes the
-        internal fork of Commons Codec. (markt)
-      </update>
-      <update>
-        Update to the Eclipse JDT compiler 4.31. (markt)
-      </update>
-      <update>
-        Update NSIS to 3.10. (mark0t)
-      </update>
-      <update>
-        Update UnboundID to 7.0.0. (markt)
-      </update>
-      <update>
-        Update Checkstyle to 10.16.0. (markt)
-      </update>
-      <update>
-        Update JaCoCo to 0.8.12. (markt)
-      </update>
-      <update>
-        Update SpotBugs to 4.8.4. (markt)
-      </update>
-      <update>
-        Update the internal fork of Apache Commons BCEL to 6.9.0. (markt)
-      </update>
-      <update>
-        Update the internal fork of Apache Commons DBCP to 2.12.0. (markt)
-      </update>
-      <add>
-        Improvements to Japanese translations by tak7iji. (remm)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M19 (remm)" rtext="2024-04-16">
-  <subsection name="Catalina">
-    <changelog>
-      <update>
-        Add <code>highConcurrencyStatus</code> attribute to the
-        <code>SemaphoreValve</code> to optionally allow the valve to return an
-        error status code to the client when a permit cannot be acquired from
-        the semaphore. (remm)
-      </update>
-      <add>
-        Add checking of the "age" of the running Tomcat instance since its
-        build-date to the SecurityListener, and log a warning if the server
-        is old. (schultz)
-      </add>
-      <fix>
-        When using the <code>AsyncContext</code>, throw an
-        <code>IllegalStateException</code>, rather than allowing an
-        <code>NullPointerException</code>, if an attempt is made to use the
-        <code>AsyncContext</code> after it has been recycled. (markt)
-      </fix>
-      <add>
-        Add a default implementation for <code>HttpSession.getAccessor()</code>
-        to align with the Servlet 6.1 API. (markt)
-      </add>
-      <add>
-        Add the Jakarta EE 11 XML schemas and update Tomcat and included web
-        applications to use them. (markt)
-      </add>
-      <fix>
-        Change the thread-safety mechanism for protecting 
StandardServer.services
-        from a simple synchronized lock to a ReentrantReadWriteLock to allow
-        multiple readers to operate simultaneously. Based upon a suggestion by
-        Markus Wolfe. (schultz)
-      </fix>
-      <fix>
-        Improve Service connectors, Container children and Service executors
-        access sync using a ReentrantReadWriteLock. (remm)
-      </fix>
-      <fix>
-        Improve handling of integer overflow if an attempt is made to upload a
-        file via the Servlet API and the file is larger than
-        <code>Integer.MAX_VALUE</code>. (markt)
-      </fix>
-      <fix>
-        <bug>68862</bug>: Handle possible response commit when processing read
-        errors. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Add <code>threadsMaxIdleTime</code> attribute to the endpoint,
-        to allow configuring the amount of time before an internal executor
-        will scale back to the configured <code>minSpareThreads</code> size.
-        (remm)
-      </fix>
-      <update>
-        Adjust the <code>Set-Cookie</code> header generated by the
-        <code>Rfc6265CookieProcessor</code> so that attributes with a value of
-        the empty string will be output as bare attribute names without an
-        equals sign or value. This will simplify future support for similar new
-        attributes by removing the need for special handling. (markt)
-      </update>
-      <scode>
-        Refactor the internal representation of the <code>HttpOnly</code> and
-        <code>Secure</code> attributes to use the empty string as the value for
-        consistency with the recent changes to <code>Set-Cookie</code> header
-        generation. (markt)
-      </scode>
-      <fix>
-        Do not generate the <code>Max-Age</code> attribute for
-        <code>Set-Cookie</code> headers associated with cookies that have been
-        configured with a <code>Max-Age</code> value of zero as RFC 6265 does
-        not permit a value of zero in this case. (markt)
-      </fix>
-      <fix>
-        Correct a regression in the support for user provided
-        <code>SSLContext</code> instances that broke the
-        <code>org.apache.catalina.security.TLSCertificateReloadListener</code>.
-        (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        Handle the case where the JSP engine forwards a request/response to a
-        Servlet that uses an <code>OutputStream</code> rather than a
-        <code>Writer</code>. This was triggering an
-        <code>IllegalStateException</code> on code paths where there was a
-        subsequent attempt to obtain a <code>Writer</code>. (markt)
-      </fix>
-      <fix>
-        Correctly handle the case where a tag library is packaged in a JAR file
-        and the web application is deployed as a WAR file rather than an
-        unpacked directory. (markt)
-      </fix>
-      <fix>
-        Prevent the web application's ClassLoader from being pinned by the JSP
-        compiler if an application uses a custom XMLInputFactory. Based upon a
-        suggestion from Simon Niederberger. (schultz)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update Checkstyle to 10.14.1. (markt)
-      </update>
-      <update>
-        Update the internal fork of Apache Commons BCEL to 6.8.2. (markt)
-      </update>
-      <update>
-        Update the internal fork of Apache Commons Codec to 1.16.1. (markt)
-      </update>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <add>
-        Improvements to Japanese translations by tak7iji. (remm)
-      </add>
-      <add>
-        Improvements to Chinese translations by leeyazhou. (remm)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M18 (markt)" rtext="2024-03-14">
-  <subsection name="General">
-    <changelog>
-      <update>
-        Reduce the minimum supported Java version to Java 17. (markt)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Minor performance improvement for building filter chains. Based on
-        ideas from pull request <pr>702</pr> by Luke Miao. (remm)
-      </fix>
-      <fix>
-        Align error handling for <code>Writer</code> and
-        <code>OutputStream</code>. Ensure use of either once the response has
-        been recycled triggers a <code>NullPointerException</code> provided 
that
-        <code>discardFacades</code> is configured with the default value of
-        <code>true</code>. (markt)
-      </fix>
-      <fix>
-        <bug>68692</bug>: The standard thread pool implementations that are
-        configured using the <code>Executor</code> element now implement
-        <code>ExecutorService</code> for better support NIO2. The
-        <code>org.apache.catalina.Executor</code> interface now extends
-        <code>ExecutorService</code>. (remm)
-      </fix>
-      <fix>
-        <bug>68495</bug>: When restoring a saved POST request after a 
successful
-        FORM authentication, ensure that neither the URI, the query string nor
-        the protocol are corrupted when restoring the request body. (markt)
-      </fix>
-      <fix>
-        After forwarding a request, attempt to unwrap the response in order to
-        suspend it, instead of simply closing it if it was wrapped. Add a new
-        <code>suspendWrappedResponseAfterForward</code> boolean attribute on
-        <code>Context</code> to control the bahavior, defaulting to
-        <code>true</code>. (remm)
-      </fix>
-      <fix>
-        <bug>68721</bug>: Workaround a possible cause of duplicate class
-        definitions when using <code>ClassFileTransformer</code>s and the
-        transformation of a class also triggers the loading of the same class.
-        (markt)
-      </fix>
-      <fix>
-        The rewrite valve should not do a rewrite if the output is identical
-        to the input. (remm)
-      </fix>
-      <update>
-        Add a new <code>valveSkip</code> (or <code>VS</code>) rule flag to the
-        rewrite valve to allow skipping over the next valve in the Catalina
-        pipeline. (remm)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Fix bad symbol lookup use in the OpenSSL FFM code. (remm)
-      </fix>
-      <fix>
-        Improve the HTTP/2 stream prioritisation process. If a stream uses all
-        of the connection windows and still has content to write, it will now 
be
-        added to the backlog immediately rather than waiting until the write
-        attempt for the remaining content. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <add>
-        Add method invocation support for <code>java.util.Optional</code> via
-        the <code>jakarta.el.OptionalELResolver</code>  to Tomcat's
-        implementation of the Jakarta EL API to align with the latest proposals
-        for the Jakarta EL 6.0 API. The property support has also been refined
-        for greater consistency. (markt)
-      </add>
-      <update>
-        The defaults for <code>compilerSourceVM</code> and
-        <code>compilerTargetVM</code> have been updated to 17 to align with 
Java
-        17 being the minimum Java version required for Tomcat 11. (markt)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="Cluster">
-    <changelog>
-      <fix>
-        Avoid updating request count stats on async. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <add>
-        Improvements to Japanese translations by tak7iji. (markt)
-      </add>
-      <fix>
-        <bug>57130</bug>: Allow digest.(sh|bat) to accept password from a file
-        or stdin. (csutherl/schultz)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M17 (markt)" rtext="2024-02-19">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        Implement <code>HttpSession.getAccessor()</code> which provides a
-        mechanism for applications to interact with an <code>HttpSession</code>
-        outside the standard Servlet processing of an HTTP request. This is
-        expected to be especially useful with applications using the Jakarta
-        WebSocket API. (markt)
-      </add>
-      <fix>
-        Correct JPMS and OSGi meta-data for <code>tomcat-embed-core.jar</code>
-        by removing reference to <code>org.apache.catalina.ssi</code> package
-        that is no longer included in the JAR. Based on pull request
-        <pr>684</pr> by Jendrik Johannes. (markt)
-      </fix>
-      <fix>
-        Fix ServiceBindingPropertySource so that trailing <code>\r\n</code>
-        sequences are correctly removed from files containing property values
-        when configured to do so. Bug identified by Coverity Scan. (markt)
-      </fix>
-      <add>
-        Add improvements to the CSRF prevention filter including the ability
-        to skip adding nonces for resource name and subtree URL patterns. 
(schultz)
-      </add>
-      <fix>
-        Review usage of debug logging and downgrade trace or data dumping
-        operations from debug level to trace. (remm)
-      </fix>
-      <fix>
-        <bug>68089</bug>: Further improve the performance of request attribute
-        access for <code>ApplicationHttpRequest</code> and
-        <code>ApplicationRequest</code>. (markt)
-      </fix>
-      <fix>
-        <bug>68559</bug>: Allow asynchronous error handling to write to the
-        response after an error during asynchronous processing. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Setting a <code>null</code> value for a cookie attribute should remove
-        the attribute. (markt)
-      </fix>
-      <fix>
-        Optimize state handling for OpenSSL context callbacks with the FFM API.
-        (remm)
-      </fix>
-      <fix>
-        Make asynchronous error handling more robust. Ensure that once a
-        connection is marked to be closed, further asynchronous processing
-        cannot change that. (markt)
-      </fix>
-      <fix>
-        Make asynchronous error handling more robust. Ensure that once the call
-        to <code>AsyncListener.onError()</code> has returned to the container,
-        only container threads can access the <code>AsyncContext</code>. This
-        protects against various race conditions that would otherwise occur if
-        application threads continued to access the <code>AsyncContext</code>.
-      </fix>
-      <fix>
-        Review usage of debug logging and downgrade trace or data dumping
-        operations from debug level to trace. In particular, most of the
-        HTTP/2 debug logging has been changed to trace level. (remm)
-      </fix>
-      <fix>
-        Add support for user provided <code>SSLContext</code> instances
-        configured on <code>SSLHostConfigCertificate</code> instances. Based on
-        pull request <pr>673</pr> provided by Hakan Altındağ. (markt)
-      </fix>
-      <fix>
-        Partial fix for <bug>68558</bug>: Cache the result of converting to
-        <code>String</code> for request URI, HTTP header names and the request
-        <code>Content-Type</code> value to improve performance by reducing
-        repeated <code>byte[]</code> to <code>String</code> conversions. 
(markt)
-      </fix>
-      <fix>
-        Improve error reporting to HTTP/2 clients for header processing errors
-        by reporting problems at the end of the frame where the error was
-        detected rather than at the end of the headers. (markt)
-      </fix>
-      <fix>
-       Remove the remaining reference to a stream once the stream has been
-       recycled. This makes the stream eligible for garbage collection earlier
-       and thereby improves scalability. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        Additional fixes to correctly support <code>length</code> as a 
read-only
-        property of an array via the <code>ArrayELResolver</code>. (markt)
-      </fix>
-      <fix>
-        <bug>68546</bug>: Generate optimal size and types for JSP imports maps,
-        as suggested by John Engebretson. (remm)
-      </fix>
-      <fix>
-        Review usage of debug logging and downgrade trace or data dumping
-        operations from debug level to trace. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        Correct a regression in the fix for <bug>66508</bug> that could cause 
an
-        <code>UpgradeProcessor</code> leak in some circumstances. (markt)
-      </fix>
-      <fix>
-        Review usage of debug logging and downgrade trace or data dumping
-        operations from debug level to trace. (remm)
-      </fix>
-      <fix>
-        Ensure that WebSocket connection closure completes if the connection is
-        closed when the server side has used the proprietary suspend/resume
-        feature to suspend the connection. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <add>
-        Add support for responses in JSON format from the examples application
-        RequestHeaderExample. (schultz)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Correct the remaining OSGi contract references in the manifest files to
-        refer to the Jakarta EE contract names rather than the Java EE contract
-        names. Based on pull request <pr>685</pr> provided by Paul A. 
Nicolucci.
-        (markt)
-      </fix>
-      <update>
-        Update Checkstyle to 10.13.0. (markt)
-      </update>
-      <update>
-        Update JSign to 6.0. (markt)
-      </update>
-      <update>
-        Update the packaged version of the Tomcat Migration Tool for Jakarta EE
-        to 1.0.7. (markt)
-      </update>
-      <update>
-        Update Tomcat Native to 2.0.7. (markt)
-      </update>
-      <update>
-        Add strings for debug level messages. (remm)
-      </update>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <add>
-        Improvements to Japanese translations by tak7iji. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M16 (markt)" rtext="2024-01-09">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        Allow alternate redirect status code for directory redirects issued by
-        the default servlet via the init param
-        <code>directoryRedirectStatusCode</code>. (funkman/markt)
-      </add>
-      <update>
-        <bug>68378</bug>: Align extension to MIME type mappings in the global
-        web.xml with those in httpd by adding
-        <code>application/vnd.geogebra.slides</code> for <code>ggs</code>,
-        <code>text/javascript</code> for <code>mjs</code> and
-        <code>audio/ogg</code> for opus. (markt)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Refactor the <code>VirtualThreadExecutor</code> so that it can be used
-        by the NIO2 connector which was using platform threads even when
-        configured to use virtual threads. (markt)
-      </fix>
-      <fix>
-        Correct a regression in the fix for <bug>67675</bug> that broke TLS key
-        file parsing for PKCS#8 format keys that do not specify an explicit
-        pseudo-random function and rely on the default. This typically affects
-        keys generated by OpenSSL 1.0.2. (markt)
-      </fix>
-      <fix>
-        Allow multiple operations with the same name on introspected mbeans,
-        fixing a regression caused by the introduction of a second
-        <code>addSslHostConfig</code> method. (remm)
-      </fix>
-      <fix>
-        Relax the check that the HTTP Host header is consistent with the host
-        used in the request line, if any, to make the check case insensitive
-        since host names are case insensitive. (markt)
-      </fix>
-      <add>
-        <bug>68348</bug>: Add support for the partitioned attribute for cookies
-        including session cookies. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <update>
-        The defaults for <code>compilerSourceVM</code> and
-        <code>compilerTargetVM</code> have been updated to 21 to align with 
Java
-        21 being the minimum Java version required for Tomcat 11. (markt)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="Web Applications">
-    <changelog>
-      <fix>
-        <bug>68035</bug>: Additional fix to the Manager application to enable
-        the deployment of a web application located in a Host's
-        <code>appBase</code> where the web application is specified by a bare
-        (no path) WAR or directory name as shown in the documentation. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update to the Eclipse JDT compiler 4.30. (markt)
-      </update>
-      <update>
-        Update Checkstyle to 10.12.7. (markt)
-      </update>
-      <update>
-        Update SpotBugs to 4.8.3. (markt)
-      </update>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <add>
-        Improvements to Japanese translations by tak7iji. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M15 (markt)" rtext="2023-12-12">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Background processes should not be run concurrently with lifecycle
-        operations of a container. (remm)
-      </fix>
-      <add>
-        Add support for the 
<code>jakarta.servlet.request.secure_protocol</code>
-        request attribute that has been added in Jakarta Servlet 6.1. This
-        replaces the now deprecated Tomcat specific request attribute
-        <code>org.apache.tomcat.util.net.secure_protocol_version</code>. 
(markt)
-      </add>
-      <add>
-        Align behaviour with the latest addition to the Servlet 6.1
-        specification that requires that all HTTP error dispatches use the GET
-        method. (markt)
-      </add>
-      <fix>
-        Correct unintended escaping of XML in some WebDAV responses. The XML
-        list of support locks when provided in response to a PROPFIND request
-        was incorrectly XML escaped. (markt)
-      </fix>
-      <fix>
-        <bug>68227</bug>: Ensure that <code>AsyncListener.onComplete()</code> 
is
-        called if <code>AsyncListener.onError()</code> calls
-        <code>AsyncContext.dispatch()</code>. (markt)
-      </fix>
-      <fix>
-        <bug>68228</bug>: Use a 408 status code if a read timeout occurs during
-        HTTP request processing. Includes a test case based on code provided by
-        adwsingh. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Use Java code to load certificate chain when using OpenSSL through
-        the FFM API. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <scode>
-        <bug>68119</bug>: Refactor the <code>CompositeELResolver</code> to
-        improve performance during type conversion operations. (markt)
-      </scode>
-    </changelog>
-  </subsection>
-  <subsection name="Web Applications">
-    <changelog>
-      <fix>
-        Examples. Improve the error handling so snakes associated with a user
-        that drops from the network are removed from the game. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update the OWB module to Apache OpenWebBeans 4.0.1. (remm)
-      </update>
-      <fix>
-        <bug>68124</bug>: Migrate sample.war from javax to jakarta. (lihan)
-      </fix>
-      <update>
-        Update UnboundID to 6.0.11. (markt)
-      </update>
-      <update>
-        Update Checkstyle to 10.12.5. (markt)
-      </update>
-      <update>
-        Update SpotBugs to 4.8.2. (markt)
-      </update>
-      <update>
-        Update Derby to 10.17.1. (markt)
-      </update>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <add>
-        Improvements to Japanese translations by tak7iji. (markt)
-      </add>
-      <add>
-        Improvements to Brazilian Portuguese translations by John William
-        Vicente. (markt)
-      </add>
-      <add>
-        Improvements to Russian translations by usmazat and remm. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M14 (markt)" rtext="2023-11-15">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>67667</bug>: <code>TLSCertificateReloadListener</code> prints
-        unreadable rendering of <code>X509Certificate#getNotAfter()</code>.
-        (michaelo)
-      </fix>
-      <update>
-        The status servlet included in the manager webapp can now output
-        statistics as JSON, using the <code>JSON=true</code> URL parameter.
-        (remm)
-      </update>
-      <update>
-        Optionally allow ServiceBindingPropertySource to trim a trailing 
newline
-        from a file containing a property-value. (schultz)
-      </update>
-      <update>
-        Use Files.move instead of File.renameTo in the FarmWebDeployer to
-        support a broader range of environments, and to give better information
-        in the event of a failure. (schultz)
-      </update>
-      <fix>
-        <bug>67793</bug>: Ensure the original session timeout is restored after
-        FORM authentication if the user refreshes a page during the FORM
-        authentication process. Based on a suggestion by Mircea Butmalai.
-        (markt)
-      </fix>
-      <update>
-        <bug>67926</bug>: <code>PEMFile</code> prints unidentifiable string
-        representation of ASN.1 OIDs. (michaelo)
-      </update>
-      <fix>
-        <bug>66875</bug>: Ensure that setting the request attribute
-        <code>jakarta.servlet.error.exception</code> is not sufficient to
-        trigger error handling for the current request and response. (markt)
-      </fix>
-      <fix>
-        <bug>68054</bug>: Avoid some file canonicalization calls introduced
-        by the fix for <bug>65433</bug>. (remm)
-      </fix>
-      <fix>
-        <bug>68089</bug>: Improve performance of request attribute access for
-        <code>ApplicationHttpRequest</code> and 
<code>ApplicationRequest</code>.
-        (markt)
-      </fix>
-      <fix>
-        Use a 400 status code to report an error due to a bad request (e.g. an
-        invalid trailer header) rather than a 500 status code. (markt)
-      </fix>
-      <fix>
-        Ensure that an <code>IOException</code> during the reading of the
-        request triggers always error handling, regardless of whether the
-        application swallows the exception. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <add>
-        <bug>66670</bug>: Add 
<code>SSLHostConfig#certificateKeyPasswordFile</code> and
-        <code>SSLHostConfig#certificateKeystorePasswordFile</code>. (michaelo)
-      </add>
-      <add>
-        When calling
-        <code>SSLHostConfigCertificate.setCertificateKeystore(ks)</code>,
-        automatically call
-        <code>setCertificateKeystoreType(ks.getType())</code>. (markt)
-      </add>
-      <add>
-        Add OpenSSL integration using the FFM API rather than Tomcat Native.
-        OpenSSL support may be enabled by adding the
-        <code>org.apache.catalina.core.OpenSSLLifecycleListener</code>
-        listener on the <code>Server</code> element when using Java 22
-        (starting with preview build 20) or later. (remm)
-      </add>
-      <fix>
-        <bug>67628</bug>: Clarify how the <code>ciphers</code> attribute of the
-        <code>SSLHostConfig</code> is used. (markt)
-      </fix>
-      <fix>
-        <bug>67666</bug>: Ensure TLS connectors using PEM files either work 
with
-        the <code>TLSCertificateReloadListener</code> or, in the rare case that
-        they do not, log a warning on Connector start. (markt)
-      </fix>
-      <fix>
-        <bug>67675</bug>: Support a wider range of KDF and ciphers for PEM 
files
-        than the combinations supported by the JVM by default. Specifically,
-        support the OpenSSL default of HmacSHA256 and DES-EDE3-CBC. (markt)
-      </fix>
-      <fix>
-        <bug>67927</bug>: Reloading TLS configuration can cause the Connector 
to
-        refuse new connections or the JVM to crash. (markt)
-      </fix>
-      <fix>
-        <bug>67938</bug>: Correct handling of large TLS client hello messages
-        that were causing the TLS handshake to fail. (markt)
-      </fix>
-      <fix>
-        <bug>68026</bug>: Convert selected <code>MessageByte</code> values to
-        String when first accessed to speed up subsequent accesses and reduce
-        garbage collection. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <add>
-        Add support for Records to expression language. (markt)
-      </add>
-      <fix>
-        <bug>68068</bug>: Performance improvement for EL. Based on a suggestion
-        by John Engebretson. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        Correct missing metadata in the MANIFEST of the for WebSocket client 
API
-        JAR file. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        <bug>68035</bug>: Correct a regression in the fix for <bug>56248</bug>
-        that prevented deployment via the Manager of a WAR or directory that 
was
-        already present in the <code>appBase</code> or a context file that was
-        already present in the <code>xmlBase</code>. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <add>
-        <bug>67538</bug>: Make use of Ant's <code>&lt;javaversion /&gt;</code> 
task
-        to enfore the mininum Java build version. (michaelo)
-      </add>
-      <update>
-        Update Checkstyle to 10.12.4. (markt)
-      </update>
-      <update>
-        Update JaCoCo to 0.8.11. (markt)
-      </update>
-      <update>
-        Update SpotBugs to 4.8.0. (markt)
-      </update>
-      <update>
-        Update BND to 7.0.0. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M13 (markt)" rtext="2023-10-14">
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        <bug>67670</bug>: Fix regression with HTTP compression after code
-        refactoring. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        <bug>67664</bug>: Correct a regression in the clean-up of unnecessary
-        use of fully qualified class names in 11.0.0-M12 that broke the
-        jdbc-pool. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M12 (markt)" rtext="2023-10-10">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        <bug>65770</bug>: Provide a lifecycle listener that will automatically
-        reload TLS configurations a set time before the certificate is due to
-        expire. This is intended to be used with third-party tools that
-        regularly renew TLS certificates. (markt)
-      </add>
-      <fix>
-        Fix handling of an error reading a context descriptor on deployment.
-        (remm)
-      </fix>
-      <fix>
-        Fix rewrite rule qsd (query string discard) being ignored if qsa was
-        also use, while it should instead take precedence. (remm)
-      </fix>
-      <fix>
-        <bug>67472</bug>: Send fewer CORS-related headers when CORS is not
-        actually being engaged. (schultz)
-      </fix>
-      <add>
-        Improve handling of failures within <code>recycle()</code> methods.
-        (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        <bug>67198</bug>: Ensure that the AJP connector attribute
-        <code>tomcatAuthorization</code> takes precedence over the
-        <code>tomcatAuthentication</code> attribute when processing an
-        <code>auth_type</code> attribute received from a proxy server. (markt)
-      </fix>
-      <fix>
-        <bug>67235</bug>: Fix a <code>NullPointerException</code> when an
-        <code>AsyncListener</code> handles an error with a dispatch rather than
-        a complete. (markt)
-      </fix>
-      <fix>
-        When an error occurs during asynchronous processing, ensure that the
-        error handling process is only triggered once per asynchronous cycle.
-        (markt)
-      </fix>
-      <fix>
-        Fix logic issue trying to match no argument method in IntropectionUtil.
-        (remm)
-      </fix>
-      <fix>
-        Improve thread safety around readNotify and writeNotify in the NIO2
-        endpoint. (remm)
-      </fix>
-      <fix>
-        Avoid rare thread safety issue accessing message digest map. (remm)
-      </fix>
-      <fix>
-        Improve statistics collection for upgraded connections under load.
-        (remm)
-      </fix>
-      <update>
-        <code>PushBuilder</code> has been deprecated in line with the changes
-        for the Servlet 6.1 specification. It will be replaced in a future
-        Tomcat 11 milestone with support for 103 early hints. (markt)
-      </update>
-      <update>
-        Remove support for HTTP/2 server push. Calls to
-        <code>newPushBuilder()</code> will always return <code>null</code>.
-        (markt)
-      </update>
-      <fix>
-        Align validation of HTTP trailer fields with standard fields. (markt)
-      </fix>
-      <fix>
-        Improvements to HTTP/2 overhead protection. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>67080</bug>: Improve performance of EL expressions in JSPs that 
use
-        implicit objects. Based on suggestions by John Engebretson, Anurag 
Dubey
-        and Christopher Schultz. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update the internal fork of Apache Commons FileUpload to 7a8c324
-        (2023-09-16, 1.x-SNAPSHOT). Due to significant refactoring in the 2.x
-        branch requiring additional Commons IO dependencies, Tomcat has 
switched
-        to tracking the 1.x branch. (markt)
-      </update>
-      <add>
-        Add the <code>Bundle-License</code> header to the JAR manifest for all
-        Tomcat JARs. (markt)
-      </add>
-      <update>
-        Update to the Eclipse JDT compiler 4.29. (markt)
-      </update>
-      <update>
-        Update UnboundID to 6.0.10. (markt)
-      </update>
-      <update>
-        Update Checkstyle to 10.12.3. (markt)
-      </update>
-      <update>
-        Update Tomcat Native to 2.0.6. (markt)
-      </update>
-      <update>
-        Update Commons Pool to 2.12.0. (markt)
-      </update>
-      <fix>
-        <bug>67611</bug>: Correct the download link in BUILDING.txt. (lihan)
-      </fix>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <add>
-        Improvements to Japanese translations by tak7iji. (markt)
-      </add>
-      <add>
-        Improvements to Russian translations by usmazat. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M11 (markt)" rtext="2023-08-25">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        If an application or library sets both a non-500 error code and the
-        <code>jakarta.servlet.error.exception</code> request attribute, use the
-        provided error code during error page processing rather than assuming 
an
-        error code of 500. (markt)
-      </fix>
-      <fix>
-        Update code comments and Tomcat output to use MiB for 1024 * 1024 bytes
-        and KiB for 1024 bytes rather than MB and kB. (martk)
-      </fix>
-      <add>
-        Update the HTTP parameter handling to align with the changes in the
-        Jakarta Servlet 6.1 API Javadoc for the <code>ServletRequest</code>
-        methods used to obtain request parameters. Invalid parameters and/or
-        exceeding parameter size and/or quantity limits now trigger
-        exceptions. As a consequence, the <code>FailedRequestFilter</code> has
-        been removed. (markt)
-      </add>
-      <fix>
-        Avoid protocol relative redirects in FORM authentication. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        Documentation. Update documentation to use MiB for 1024 * 1024 bytes 
and
-        KiB for 1024 bytes rather than MB and kB. (martk)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <add>
-        Improvements to Chinese translations. (lihan)
-      </add>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <add>
-        Improvements to Japanese translations by tak7iji. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M10 (markt)" rtext="2023-08-14">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Fix potential database connection leaks in
-        <code>DataSourceUserDatabase</code> identified by Coverity Scan. 
(markt)
-      </fix>
-      <fix>
-        Make parsing of <code>ExtendedAccessLogValve</code> patterns more
-        robust. (markt)
-      </fix>
-      <fix>
-        Fix failure trying to persist configuration for an internal credential
-        handler. (remm)
-      </fix>
-      <fix>
-        <bug>66680</bug>: When serializing a session during the session
-        presistence process, do not log a warning that null Principals are not
-        serializable. Pull request <pr>638</pr> provided by tsryo. (markt)
-      </fix>
-      <fix>
-        <bug>66822</bug>: Use the same naming format in log messages for
-        Connector instances as the associated ProtocolHandler instance. (markt)
-      </fix>
-      <fix>
-        The parts count should also lower the actual
-        <code>maxParameterCount</code> used for parsing parameters if parts are
-        parsed first. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Refactor blocking reads and writes for the NIO connector to remove
-        code paths that could allow a notification from the Poller to be missed
-        resuting in a timeout rather than the expected read or write. (markt)
-      </fix>
-      <fix>
-        Refactor waiting for an HTTP/2 stream or connection window update to
-        handle spurious wake-ups during the wait. (markt)
-      </fix>
-      <update>
-        Improve extensibility of endpoints for socket channel creation and TLS.
-        Pull request <pr>639</pr> provided by Marco Fargetta. (remm)
-      </update>
-      <fix>
-        Correct a regression introduced in 11.0.0-M9 and use the correct
-        constant when constructing the default value for the
-        <code>certificateKeystoreFile</code> attribute of an
-        <code>SSLHostConfigCertificate</code> instance. (markt)
-      </fix>
-      <scode>
-        Refactor HTTP/2 implementation to reduce pinning when using virtual
-        threads. (markt)
-      </scode>
-      <fix>
-        Pass through ciphers referring to an OpenSSL profile, such as
-        <code>PROFILE=SYSTEM</code> instead of producing an error trying to
-        parse it. (remm)
-      </fix>
-      <fix>
-        <bug>66841</bug>: Ensure that <code>AsyncListener.onError()</code> is
-        called after an error during asynchronous processing with HTTP/2.
-        (markt)
-      </fix>
-      <fix>
-        <bug>66842</bug>: When using asynchronous I/O (the default), include
-        DATA frames when calculating the HTTP/2 overhead count to ensure that
-        connections are not prematurely terminated. (markt)
-      </fix>
-      <fix>
-        Correct a race condition that could cause spurious RST messages to be
-        sent after the response had been written to an HTTP/2 stream. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>66681</bug>: Fix a <code>NullPointerException</code> when flushing
-        batched messages with compression enabled using
-        <code>permessage-deflate</code>. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        Fix the <code>releaseIdleCounter</code> does not increment when 
testAllIdle
-        releases them. Pull request <pr>241</pr> provided by Arun Chaitanya 
Miriappalli
-        (lihan)
-      </fix>
-      <fix>
-        Fix the <code>ConnectionState</code> state will be inconsistent with 
actual
-        state on the connection when an exception occurs while writing. Pull 
request
-        <pr>643</pr> provided by Wenjun Xiao. (lihan)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update NSIS to 3.09. (markt)
-      </update>
-      <update>
-        Update Checkstyle to 10.12.2. (markt)
-      </update>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <add>
-        Improvements to Japanese translations. Contributed by tak7iji and
-        Shirayuking. (markt)
-      </add>
-      <fix>
-        <bug>66829</bug>: Fix quoting so users can use the 
<code>_RUNJAVA</code>
-        environment variable as intended on Windows when the path to the Java
-        executable contains spaces. (markt)
-      </fix>
-      <fix>
-        <bug>66834</bug>: Correct the OSGi contract references in the manifest
-        files to refer to the Jakarta EE contract names rather than the Java EE
-        contract names. (markt)
-      </fix>
-      <update>
-        Update Tomcat Native to 2.0.5. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M9 (markt)" rtext="2023-07-10">
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Correct properties for JSign dependency. (rjung)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M8 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        <bug>59232</bug>: Add
-        <code>org.apache.catalina.core.ContextNamingInfoListener</code>,
-        a listener which creates context naming information environment 
entries.
-        (michaelo)
-      </add>
-      <add>
-        <bug>66665</bug>: Add
-        <code>org.apache.catalina.core.PropertiesRoleMappingListener</code>,
-        a listener which populates the context's role mapping from a properties
-        file. (michaelo)
-      </add>
-      <fix>
-        Fix an edge case where intra-web application symlinks would be followed
-        if the web applications were deliberately crafted to allow it even when
-        <code>allowLinking</code> was set to <code>false</code>. (markt)
-      </fix>
-      <update>
-        Add utlity config file resource lookup on <code>Context</code> to allow
-        looking up resources from the webapp (prefixed with
-        <code>webapp:</code>) and make the resource lookup API more visible.
-        (remm)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        <bug>66627</bug>: Restore the documented behaviour of
-        <code>MessageBytes.getType()</code> that it returns the type of the
-        original content rather than reflecting the most recent conversion.
-        (markt)
-      </fix>
-      <fix>
-        <bug>66635</bug>: Correct certificate logging on start-up so it
-        differentiates between keystore based keys/certificates and PEM file
-        based keys/certificates and logs the relevant information for each.
-        (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <add>
-        Add <code>java.util.Optional</code> support via the
-        <code>jakarta.el.OptionalELResolver</code>  to Tomcat's implementation
-        of the Jakarta EL API to align with the latest proposals for the 
Jakarta
-        EL 6.0 API. (markt)
-      </add>
-      <add>
-        Add support for specifying Java 22 (with the value <code>22</code>) as
-        the compiler source and/or compiler target for JSP compilation. If used
-        with an Eclipse JDT compiler version that does not support these 
values,
-        a warning will be logged and the default will used.
-        (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        Improve handling of error conditions for the WebSocket server,
-        particularly during Tomcat shutdown. (markt)
-      </fix>
-      <fix>
-        Correct a regression in the fix for <bug>66574</bug> that meant the
-        WebSocket session could return false for <code>onOpen()</code> before
-        the <code>onClose()</code> event had been completed. (markt)
-      </fix>
-      <add>
-        Update the WebSocket API provided by Tomcat to align with the latest
-        proposals from the Jakarta WebSocket project and make the WebSocket
-        <code>Session</code> instance available via <code>SendResult</code>.
-        (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <add>
-        Documentation. Expand the security guidance to cover the embedded use
-        case and add notes on the uses made of the <code>java.io.tmpdir</code>
-        system property. (markt)
-      </add>
-      <fix>
-        <bug>66662</bug>: Documentation. Fix a typo in the name of the
-        <strong>algorithms</strong> attribute in the configuration section for
-        the Digest authentication valve. Pull request <pr>629</pr> provided by
-        gohilmca. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <add>
-        Include the Windows specific binary distributions in the files uploaded
-        to Maven Central. (markt)
-      </add>
-      <update>
-        Remove support for running Tomcat on 32-bit Windows operating systems 
as
-        Java 21 is not available for that platform. (markt)
-      </update>
-      <add>
-        Improvements to Japanese translations. Contributed by tak7iji. (markt)
-      </add>
-      <update>
-        Update to the Eclipse JDT compiler 4.28. (markt)
-      </update>
-      <update>
-        Update UnboundID to 6.0.9. (markt)
-      </update>
-      <update>
-        Update Checkstyle to 10.12.1. (markt)
-      </update>
-      <update>
-        Update BND to 6.4.1. (markt)
-      </update>
-      <update>
-        Update JSign to 5.0. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M7 (markt)" rtext="2023-06-08">
-  <subsection name="General">
-    <changelog>
-      <update>
-        Increase the minimum supported Java version to Java 21. (markt)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="Catalina">
-    <changelog>
-      <scode>
-        Move the management of the utility executor from the
-        <code>init()</code>/<code>destroy()</code> methods of components to the
-        <code>start()</code>/<code>stop()</code> methods. (markt)
-      </scode>
-      <add>
-        Add RateLimitFilter which can be used to mitigate DoS and Brute Force
-        attacks. (isapir)
-      </add>
-      <scode>
-        Remove support for using the <code>^</code> character to separate the
-        WAR file and WAR contents in Tomcat's custom WAR URL handler. The
-        current default separator character of <code>*</code> remains 
unchanged.
-        (markt)
-      </scode>
-      <add>
-        Add 
<code>org.apache.catalina.core.StandardVirtualThreadExecutor</code>,
-        a virtual thread based executor that may be used with one or more
-        Connectors to process requests received by those Connectors using
-        virtual threads. (markt)
-      </add>
-      <fix>
-        <bug>66513</bug>: Add a per session Semaphore to the
-        <code>PersistentValve</code> that ensures that, within a single Tomcat
-        instance, there is no more than one concurrent request per session. 
Also
-        expand the debug logging to include whether a request bypasses the 
Valve
-        and the reason if a request fails to obtain the per session Semaphore.
-        (markt)
-      </fix>
-      <fix>
-        <bug>66609</bug>: Ensure that the default servlet correctly escapes
-        file names in directory listings when using XML output. Based on pull
-        request <pr>621</pr> by Alex Kachanov. (markt)
-      </fix>
-      <add>
-       <bug>66618</bug>: Add a numeric last modified field to the XML directory
-       listings produced by the default servlet to enable sorting in the XSLT.
-       Pull request <pr>622</pr> by Alex Kachanov. (markt)
-      </add>
-      <fix>
-        <bug>66621</bug>: Attempts to lock a collection with WebDAV may
-        incorrectly fail if a child collection has an expired lock. (markt)
-      </fix>
-      <fix>
-        <bug>66622</bug>: Remove the <code>xssProtectionEnabled</code> setting
-        from the <code>HttpHeaderSecurityFilter</code> as support for the
-        associated HTTP header has been removed from all major browsers. 
(markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        <bug>66602</bug>: not sending WINDOW_UPDATE when dataLength is ZERO
-        on call SwallowedDataFramePayload. Pull request #619 by
-        ledefe. (lihan)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update to Commons Daemon 1.3.4. (markt)
-      </update>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <update>
-        Update Checkstyle to 10.12.0. (markt)
-      </update>
-      <update>
-        Update the packaged version of the Apache Tomcat Native Library to 
2.0.4
-        to pick up the Windows binaries built with with OpenSSL 3.0.9. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M6 (markt)" rtext="2023-05-09">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>66567</bug>: Fix missing <code>IllegalArgumentException</code>
-        after the Tomcat code was converted to using URI instead of URL. (remm)
-      </fix>
-      <fix>
-        Escape timestamp output in <code>AccessLogValve</code> if a
-        <code>SimpleDateFormat</code> is used which contains verbatim
-        characters that need escaping. (rjung)
-      </fix>
-      <update>
-        Change output of vertical tab in <code>AccessLogValve</code> from
-        <code>\v</code> to <code>\u000b</code>. (rjung)
-      </update>
-      <update>
-        Improve performance of escaping in <code>AccessLogValve</code>
-        roughly by a factor of two. (rjung)
-      </update>
-      <update>
-        Improve <code>JsonAccessLogValve</code>: support more patterns
-        like for headers and attributes. Those will be logged as sub objects.
-        (rjung)
-      </update>
-      <fix>
-        <pr>613</pr>: Fix possible partial corrupted file copies when using
-        file locking protection or the manager servlet. Submitted
-        by Jack Shirazi. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <add>
-        Add support for a new character set, <code>gb18030-2022</code> -
-        introduced in Java 21, to the character set caching mechanism. (markt)
-      </add>
-      <fix>
-        Fix an edge case in HTTP header parsing and ensure that HTTP headers
-        without names are treated as invalid. (markt)
-      </fix>
-      <update>
-        Remove support for the HTTP Connector settings
-        <code>rejectIllegalHeader</code> and
-        <code>allowHostHeaderMismatch</code>. These are now hard-coded to the
-        previous defaults. (markt)
-      </update>
-      <fix>
-        <bug>66591</bug>: Fix a regression introduced in the fix for
-        <bug>66512</bug> that meant that an AJP Send Headers was not sent for
-        responses where no HTTP headers were set. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>66582</bug>: Account for EL having stricter requirements for 
static
-        imports than JSPs when adding JSP static imports to the EL context.
-        (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>66574</bug>: Refactor WebSocket session close to remove the lock 
on
-        the <code>SocketWrapper</code> which was a potential cause of deadlocks
-        if the application code used simulated blocking. (markt)
-      </fix>
-      <fix>
-        <bug>66575</bug>: Avoid unchecked use of the backing array of a
-        buffer provided by the user in the compression transformation. (remm)
-      </fix>
-      <fix>
-        Improve exception handling when flushing batched messages during
-        WebSocket session close. (markt)
-      </fix>
-      <fix>
-        <bug>66581</bug>: Update <code>AsyncChannelGroupUtil</code> to align it
-        with the current defaults for AsynchronousChannelGroup. Pull request
-        <pr>612</pr> by Matthew Painter. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <add>
-        Improvements to Chinese translations. (lihan)
-      </add>
-      <update>
-        Update Checkstyle to 10.10.0. (markt)
-      </update>
-      <update>
-        Update Jacoco to 0.8.10. (markt)
-      </update>
-      <update>
-        Update the packaged version of the Tomcat Migration Tool for Jakarta EE
-        to 1.0.7. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M5 (markt)" rtext="2023-04-19">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        Add a <code>doPatch</code> method to <code>HttpServlet</code> to 
provide
-        support for the HTTP <code>PATCH</code> method as defined in RFC 5789.
-        This is one of the changes in the Servlet 6.1 API. (markt)
-      </add>
-      <fix>
-        <bug>65995</bug>: Implement RFC 9239 and use
-        <code>text/javascript</code> as the media type for JavaScript rather
-        than <code>application/javascript</code>. (markt)
-      </fix>
-      <scode>
-        Tomcat no longer sets the <code>java.protocol.handler.pkgs</code> 
system
-        property when starting. Users are now free to configure this property 
if
-        they wish. (markt)
-      </scode>
-      <add>
-        Add an access log valve that uses a json format. Based on pull request
-        <pr>539</pr> provided by Thomas Meyer. (remm)
-      </add>
-      <add>
-        Harden the FORM authentication process against DoS attacks by using a
-        reduced session timeout if the FORM authentication process creates a
-        session. The duration of this timeout is configured by the
-        <code>authenticationSessionTimeout</code> attribute of the FORM
-        authenticator. (markt)
-      </add>
-      <add>
-        Implement the new Servlet API methods that provide additional control
-        when sending a redirect to the client. (markt)
-      </add>
-      <add>
-        Update Digest authentication support to align with RFC 7616. This adds 
a
-        new configuration attribute, <code>algorithms</code>, to the
-        <code>DigestAuthenticator</code> with a default of
-        <code>SHA-256,MD5</code>. (markt)
-      </add>
-      <update>
-        Reduce the default value of <code>maxParameterCount</code> from 10,000
-        to 1,000. (markt)
-      </update>
-      <fix>
-        <bug>66527</bug>: Correct the Javadoc for the
-        <code>Tomcat.addWebapp()</code> methods that incorrectly stated that 
the
-        <code>docBase</code> parameter could be a relative path. (markt)
-      </fix>
-      <fix>
-        <bug>66524</bug> Correct eviction ordering in WebResource cache to
-        be LRU as intended. (schultz)
-      </fix>
-      <update>
-        Add support code for custom user attributes in <code>RealmBase</code>.
-        Based on code from <pr>473</pr> by Carsten Klein. (remm)
-      </update>
-      <fix>
-        Expand the set of HTTP request headers considered sensitive that should
-        be skipped when generating a response to a <code>TRACE</code> request.
-        This aligns with the current draft of the Servlet 6.1 specification.
-        (markt)
-      </fix>
-      <fix>
-        <bug>66541</bug>: Improve handling for cached resources for resources
-        that use custom URL schemes. The scheme specific <code>equals()</code>
-        and <code>hashCode()</code> algorithms, if present, will now be used 
for
-        URLs for these resources. This addresses a potential performance issue
-        with some OSGi custom URL schemes that can trigger potentially slow DNS
-        lookups in some configurations. Based on a patch provided by Tom
-        Whitmore. (markt)
-      </fix>
-      <fix>
-        When using a custom session manager deployed as part of the web
-        application, avoid <code>ClassNotFoundException</code>s when validating
-        session IDs extracted from requests. (markt)
-      </fix>
-      <fix>
-        <bug>66543</bug>: Give 
<code>StandardContext#fireRequestDestroyEvent</code>
-         its own log message. (fschumacher)
-      </fix>
-      <fix>
-        <bug>66554</bug>: Initialize Random during server initialization to
-        avoid possible JVM thread creation in the webapp context on some
-        platforms. (remm)
-      </fix>
-      <update>
-        Make the server utility executor available to webapps using a Servlet
-        context attribute named
-        
<code>org.apache.tomcat.util.threads.ScheduledThreadPoolExecutor</code>. (remm)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        JSON filter should support specific escaping for common special
-        characters as defined in RFC 8259. Based on code submitted by
-        Thomas Meyer. (remm)
-      </fix>
-      <fix>
-        <bug>66511</bug>: Fix <code>GzipOutputFilter</code> (used for 
compressed
-        HTTP responses) when used with direct buffers. Patch suggested by Arjen
-        Poutsma. (markt)
-      </fix>
-      <fix>
-        <bug>66512</bug>: Align AJP handling of invalid HTTP response headers
-        (they are now removed from the response) with HTTP. (markt)
-      </fix>
-      <fix>
-        <bug>66530</bug>: Correct a regression in the fix for bug
-        <bug>66442</bug> that meant that streams without a response body did 
not
-        decrement the active stream count when completing leading to
-        <code>ERR_HTTP2_SERVER_REFUSED_STREAM</code> for some connections.
-        (markt)
-      </fix>
-      <fix>
-        Remove use of deprecated classes in the 
<code>javax.security.cert</code>
-        package. Pull request <pr>608</pr> provided by Eirik Bjorsnos. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        Fix bug that meant some instances of coercing a
-        <code>LambdaExpression</code> to a functional interface invocation
-        failed. (markt)
-      </fix>
-      <fix>
-        <bug>66536</bug>: Fix parsing of tag files that meant that tag
-        directives could be ignored for some tag files. (markt)
-      </fix>
-      <add>
-        Align the EL implementation with the latest changes to the Jakarta EL
-        specification and add support for the length attribute to the
-        <code>ArrayELResolver</code>. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Cluster">
-    <changelog>
-      <fix>
-        <bug>66535</bug>: Redefine the <code>maxValidTime</code> attribute of
-        <code>FarmWarDeployer</code> to be the maximum time allowed between
-        receiving parts of a transferred file before the transfer is cancelled
-        and the associated resources cleaned-up. A new warning message will be
-        logged if the file transfer is cancelled. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>66508</bug>: When using WebSocket with NIO2, avoid waiting for
-        a timeout before sending the close frame if an I/O error occurs during 
a
-        write. (markt)
-      </fix>
-      <fix>
-        <bug>66548</bug>: Expand the validation of the value of the
-        <code>Sec-Websocket-Key</code> header in the HTTP upgrade request that
-        initiates a WebSocket connection. The value is not decoded but it is
-        checked for the correct length and that only valid characters from the
-        base64 alphabet are used. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        <bug>66542</bug>: Documentation. Update the JNDI documentation to
-        replace references to JavaMail with references to Jakarta Mail. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <add>
-        Improvements to Japanese translations. Contributed by Shirayuking and
-        tak7iji. (markt)
-      </add>
-      <add>
-        Improvements to Chinese translations. Contributed by totoo. (markt)
-      </add>
-      <scode>
-        Refactor code using <code>MD5Encoder</code> to use
-        <code>HexUtils.toHexString()</code>. (markt)
-      </scode>
-      <fix>
-        <bug>66507</bug>: Fix a bug that <code>$JAVA_OPTS</code> is not passed
-        to the jvm in <code>catalina.sh</code> when calling 
<code>version</code>.
-        Patch suggested by Eric Hamilton. (lihan)
-      </fix>
-      <update>
-        Update the internal fork of Commons DBCP to f131286 (2023-03-08,
-        2.10.0-SNAPSHOT). This corrects a regression introduced in 11.0.0-M2.
-        (markt)
-      </update>
-      <fix>
-        Improve the error messages if <code>JRE_HOME</code> or
-        <code>JAVA_HOME</code> are not set correctly. On windows, align the
-        handling of <code>JRE_HOME</code> and <code>JAVA_HOME</code> for the
-        start-up scripts and the service install script. (markt)
-      </fix>
-      <update>
-        Update to the Eclipse JDT compiler 4.27. (markt)
-      </update>
-      <update>
-        Update UnboundID to 6.0.8. (markt)
-      </update>
-      <update>
-        Update Checkstyle to 10.9.3. (markt)
-      </update>
-      <update>
-        Update Jacoco to 0.8.9. (markt)
-      </update>
-      <fix>
-        Enhance PEMFile to load from an InputStream. Patch provided by
-        Romain Manni-Bucau. (schultz)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M4 (markt)" rtext="2023-03-06">
-  <subsection name="General">
-    <changelog>
-      <fix>
-        Fix a bug that memory allocation is larger than limit in
-        <code>SynchronizedStack</code> to reduce memory footprint. (lihan)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        Add support for <code>txt:</code> and <code>rnd:</code> rewrite map
-        types from mod_rewrite. Based on a pull request <pr>591</pr>
-        provided by Dimitrios Soumis. (remm)
-      </add>
-      <update>
-        Provide a more appropriate response (501 rather than 400) when 
rejecting
-        an HTTP request using the CONNECT method. (markt)
-      </update>
-      <fix>
-        <bug>66491</bug>: Revert the switch to using the ServiceLoader 
mechanism
-        to load the custom URL protocol handlers that Tomcat uses. The original
-        system property based approach has been restored. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <add>
-        Add a check for the validity of the scheme pseudo-header in HTTP/2.
-        (markt)
-      </add>
-      <fix>
-        <bug>66482</bug>: Restore inline state after async operation in NIO2,
-        to account the fact that unexpected exceptions are sometimes thrown
-        by the implementation. Patch submitted by zhougang. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <add>
-        Provide an implementation of the sub-set of JavaBeans support that does
-        not depend on the <code>java.beans</code> package. This for use by
-        Expression Language when the <code>java.desktop</code> module (which is
-        where the <code>java.beans</code> package resides) is not available.
-        (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M3 (markt)" rtext="2023-02-23">
-  <subsection name="General">
-    <changelog>
-      <update>
-        Increase the minimum supported Java version to Java 17. Note that
-        Jakarta EE 11 permits a minimum Java version of 21. The minimum Java
-        version for Tomcat 11 may be increased to Java 21 before the first
-        stable release. (markt)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Allow a Valve to access cookies from a request that cannot be mapped to
-        a Context. (markt)
-      </fix>
-      <add>
-        Implement the new Servlet API methods for setting character encodings
-        that accept <code>Charset</code> objects. (markt)
-      </add>
-      <update>
-        The default HEAD response no longer includes some HTTP header fields
-        where the value is determined only while generating the content as per
-        section 9.3.2 of RFC 9110. (markt)
-      </update>
-      <fix>
-        <bug>66438</bug>: Correct names of Jakarta modules in JPMS metadata.
-        (markt)
-      </fix>
-      <update>
-        Switch to using the ServiceLoader mechanism to load the custom URL
-        protocol handlers that Tomcat uses. (markt)
-      </update>
-      <fix>
-        Switch to using <code>LongAdder</code> rather than
-        <code>AtomicInteger</code> to track request count and error count for
-        servlets. (markt)
-      </fix>
-      <fix>
-        Implement the clarification from the Jakarta Servlet project that
-        Servlets mapped to the context root should be mapped for requests to 
the
-        context root with or without the trailing <code>/</code>. (markt)
-      </fix>
-      <fix>
-        Implement the clarification from the Jakarta Servlet project that
-        calling <code>ServletOutputStream.close()</code> on a stream in
-        non-blocking mode returns immediately with the stream effectively 
closed
-        and any data remaining to be written is written in the background by 
the
-        container. (markt)
-      </fix>
-      <fix>
-        Avoid possible ISE when scanning from bad JAR URLs, to restore the
-        previous behavior following the removal of Java 9+ reflection code 
which
-        caught the ISE. (remm)
-      </fix>
-      <fix>
-        Refactor uses of <code>String.replaceAll()</code> to use
-        <code>String.replace()</code> where regular expressions where not being
-        used. Pull request <pr>581</pr> provided by Andrei Briukhov. (markt)
-      </fix>
-      <add>
-        Add error report valve that allows redirecting to of proxying from an
-        external web server. Based on code and ideas from pull request
-        <pr>506</pr> provided by Max Fortun. (remm)
-      </add>
-      <add>
-        <bug>66470</bug>: Add the Shared Address Space defined by RFC 6598
-        (100.64.0.0/10) to the regular expression used to identify internal
-        proxies for the <code>RemoteIpFilter</code> and
-        <code>RemoteIpValve</code>. (markt)
-      </add>
-      <fix>
-        <bug>66471</bug>: Fix JSessionId secure attribute missing When
-        <code>RemoteIpFilter</code> determines that this request was submitted
-        via a secure channel. (lihan)
-      </fix>
-      <add>
-        Add the additional HTTP status code constants to
-        <code>HttpServletResponse</code> defined by the Jakarta Servlet project
-        for the Servlet 6.1 API. (markt)
-      </add>
-      <fix>
-        Implement the clarification from the Jakarta Servlet project that
-        calling one of the <code>HttpServletResponse</code> methods for setting
-        HTTP header values with <code>null</code> as the new header value
-        removes any existing header of that name. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <add>
-        Log basic information for each configured TLS certificate when Tomcat
-        starts. (markt)
-      </add>
-      <fix>
-        <bug>66442</bug>: When an HTTP/2 response must not include a body,
-        ensure that the end of stream flag is set on the headers frame and that
-        no data frame is sent. (markt)
-      </fix>
-      <fix>
-        Fix a bug that prevented HTTP/2 connections from timing out when using
-        a Connector configured with <code>useAsyncIO=true</code> (the default).
-        (markt)
-      </fix>
-      <add>
-        Provided dedicated loggers
-        (<code>org.apache.tomcat.util.net.NioEndpoint.certificate</code> /
-        <code>org.apache.tomcat.util.net.Nio2Endpoint.certificate</code>) for
-        logging of configured TLS certificates. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>66419</bug>: Fix calls from expression language to a method that
-        accepts varargs when only one argument was passed. (markt)
-      </fix>
-      <fix>
-        <bug>66441</bug>: Make imports of static fields in JSPs visible to any
-        EL expressions used on the page. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        <bug>66429</bug>: Documentation. Limit access to the documentation web
-        application to localhost by default. (markt)
-      </fix>
-      <fix>
-        <bug>66429</bug>: Examples. Limit access to the examples web 
application
-        to localhost by default. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update BND to 6.4.0. (markt)
-      </update>
-      <update>
-        Remove support for starting Tomcat under a SecurityManager. (markt)
-      </update>
-      <add>
-        Improvements to Chinese translations. (lihan)
-      </add>
-      <add>
-        Improvements to French translations. (remm)
-      </add>
-      <add>
-        Improvements to Japanese translations. Contributed by tak7iji. (markt)
-      </add>
-      <add>
-        Improvements to Korean translations. (woonsan)
-      </add>
-      <update>
-        Update the packaged version of the Apache Tomcat Native Library to 
2.0.3
-        to pick up the Windows binaries built with with OpenSSL 3.0.8. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M2 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        Update the <code>ServletInputStream</code> and
-        <code>ServletOuputStream</code> classes in the Servlet API to align 
with
-        the recent updates in the Jakarta Servlet specification to support
-        reading and writing with <code>ByteBuffer</code>s. The changes also
-        clarified various aspects of the Servlet non-blocking API. (markt)
-      </add>
-      <fix>
-        <bug>66388</bug>: Correct a regression in the refactoring that replaced
-        the use of the <code>URL</code> constructors. The regression broke
-        lookups for resources that contained one or more characters in their
-        name that required escaping when used in a URI path. (markt)
-      </fix>
-      <fix>
-        <bug>66392</bug>: Change the default value of 
<code>AccessLogValve</code>'s
-        file encoding to UTF-8 and update documentation. (lihan)
-      </fix>
-      <fix>
-        <bug>66393</bug>: Align <code>ExtendedAccessLogValve</code>'s x-P(XXX) 
with the
-        documentation. (lihan)
-      </fix>
-      <fix>
-        Remove JAX-RPC support which was removed from the Jakarta EE platform
-        for Jakarta EE 9. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Update Cookie parsing and handling to treat the quotes in a quoted
-        cookie value as part of the value as required by RFC 6265 and 
explicitly
-        clarified in RFC 6265bis. (markt)
-      </fix>
-      <add>
-        Add an RFC 8941 structured field parser. (markt)
-      </add>
-      <add>
-        Add a parser for the <code>priority</code> HTTP header field defined in
-        RFC 9218. (markt)
-      </add>
-      <fix>
-        When resetting an HTTP/2 stream because the final response has been
-        generated before the request has been fully read, use the HTTP/2 error
-        code <code>NO_ERROR</code> so that client does not discard the 
response.
-        Based on a suggestion by Lorenzo Dalla Vecchia. (markt)
-      </fix>
-      <fix>
-        <bug>66385</bug>: Correct a bug in HTTP/2 where a non-blocking read for
-        a new frame with the NIO2 connector was incorrectly made using the read
-        timeout leading to unexpected stream closure. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>66370</bug>: Change the default of the
-        <code>org.apache.el.GET_CLASSLOADER_USE_PRIVILEGED</code> system
-        property to <code>true</code> unless the EL library is running on 
Tomcat
-        in which case the default remains <code>false</code> as the EL library
-        is already called from within a privileged block and skipping the
-        unnecessary privileged block improves performance. (markt)
-      </fix>
-      <add>
-        Add support for specifying Java 21 (with the value <code>21</code>) as
-        the compiler source and/or compiler target for JSP compilation. If used
-        with an Eclipse JDT compiler version that does not support these 
values,
-        a warning will be logged and the default will used.
-        (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update the packaged version of the Apache Tomcat Migration Tool for
-        Jakarta EE to 1.0.6. (markt)
-      </update>
-      <update>
-        Update the internal fork of Apache Commons BCEL to 2ee2bff (2023-01-03,
-        6.7.1-SNAPSHOT). (markt)
-      </update>
-      <update>
-        Update the internal fork of Apache Commons Codec to 3eafd6c 
(2023-01-03,
-        1.16-SNAPSHOT). (markt)
-      </update>
-      <update>
-        Update the internal fork of Apache Commons FileUpload to 34eb241
-        (2023-01-03, 2.0-SNAPSHOT). (markt)
-      </update>
-      <update>
-        Update the internal fork of Apache Commons DBCP to f131286 (2023-01-03,
-        2.10.0-SNAPSHOT). (markt)
-      </update>
-      <add>
-        Improvements to Japanese translations. Contributed by Shirayuking.
-        (markt)
-      </add>
-      <add>
-        Improvements to Portuguese translations. Contributed by Guilherme
-        Custódio. (markt)
-      </add>
-      <update>
-        Update to the Eclipse JDT compiler 4.26. (markt)
-      </update>
-      <update>
-        Update Checkstyle to 10.6.0. (markt)
-      </update>
-      <update>
-        Update Unboundid to 6.0.7. (markt)
-      </update>
-      <update>
-        Update SpotBugs to 4.7.3. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 11.0.0-M1 (markt)" rtext="2022-12-05">
-  <subsection name="General">
-    <changelog>
-      <scode>
-        This release contains all of the changes up to and including those in
-        Apache Tomcat 10.1.1 plus the additional changes listed below. (markt)
-      </scode>
-    </changelog>
-  </subsection>
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>66175</bug>: Change the default character set used by the
-        <code>BasicAuthenticator</code> from ISO-8859-1 to UTF-8. (markt)
-      </fix>
-      <add>
-        <bug>66209</bug>: Add a configuration option to allow bloom filters 
used
-        to index JAR files to be retained for the lifetime of the web
-        application. Prior to this addition, the indexes were always flushed by
-        the periodic calls to <code>WebResourceRoot.gc()</code>. As part of 
this
-        addition, configuration of archive indexing moves from
-        <code>Context</code> to <code>WebResourceRoot</code>. Based on a patch
-        provided by Rahul Jaisimha. (markt)
-      </add>
-      <fix>
-        <bug>66330</bug>: Correct a regression introduced when fixing
-        <bug>62897</bug> that meant any value configured for
-        <code>skipMemoryLeakChecksOnJvmShutdown</code> on the
-        <code>Context</code> was ignored and the default was always used.
-        (markt)
-      </fix>
-      <fix>
-        <bug>66331</bug>: Fix a regression in refactoring for 
<code>Stack</code>
-        on the <code>SystemLogHandler</code> which caught incorrect exception.
-        (lihan)
-      </fix>
-      <fix>
-        <bug>66338</bug>: Fix a regression that caused a nuance in refactoring
-        for <code>ErrorReportValve</code>. (lihan)
-      </fix>
-      <fix>
-        Escape values used to construct output for the
-        <code>JsonErrorReportValve</code> to ensure that it always outputs 
valid
-        JSON. (markt)
-      </fix>
-      <fix>
-        Correct the default implementation of
-        <code>HttpServletRequest.isTrailerFieldsReady()</code> to return
-        <code>true</code> so it is consistent with the default implementation 
of
-        <code>HttpServletRequest.getTrailerFields()</code> and with the Servlet
-        API provided by the Jakarta EE project. (markt)
-      </fix>
-      <fix>
-        Refactor <code>WebappLoader</code> so it only has a runtime dependency
-        on the migration tool for Jakarta EE if configured to use the converter
-        as classes are loaded. (markt)
-      </fix>
-      <fix>
-        Improve the behavior of the credential handler attribute that is set in
-        the Servlet context so that it actually reflects what is used during
-        authentication. (remm)
-      </fix>
-      <fix>
-        <bug>66359</bug>: Update javadoc for RemoteIpValve and RemoteIpFilter 
with
-        correct <code>protocolHeader</code> default value of 
"X-Forwarded-Proto".
-        (lihan)
-      </fix>
-      <add>
-        Add support for the new attribute for error dispatches
-        <code>jakarta.servlet.error.query_string</code>. (markt)
-      </add>
-      <update>
-        Update <code>ignoreAnnotation</code> attribute on <code>Context</code>
-        to dissociate it from <code>metadata-complete</code>. (remm)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Correct the date format used with the expires attribute of HTTP 
cookies.
-        A single space rather than a single dash should be used to separate the
-        day, month and year components to be compliant with RFC 6265. (markt)
-      </fix>
-      <add>
-        Include the name of the current stream state in the error message when 
a
-        stream is cancelled due to an attempt to write to the stream when it is
-        in a state that does not permit writes. (markt)
-      </add>
-      <scode>
-        NIO writes never return -1 so refactor <code>CLOSED_NIO_CHANNEL</code>
-        not to do so and remove checks for this return value. Based on
-        <pr>562</pr> by tianshuang. (markt)
-      </scode>
-      <scode>
-        Remove unnecessary code that exposed the <code>asyncTimeout</code> to
-        components that never used it. (markt)
-      </scode>
-      <fix>
-        Ensure that all <code>MessageBytes</code> conversions to byte arrays 
are
-        valid for the configured character set and throw an exception if not.
-        (markt)
-      </fix>
-      <fix>
-        When an HTTP/2 stream was reset, the current active stream count was 
not
-        reduced. If enough resets occurred on a connection, the current active
-        stream count limit was reached and no new streams could be created on
-        that connection. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>66294</bug>: Make the use of a privileged block to obtain the
-        thread context class loader added to address <bug>62080</bug> optional
-        and disabled by default. This is now controlled by the
-        <code>org.apache.el.GET_CLASSLOADER_USE_PRIVILEGED</code> system
-        property. (markt)
-      </fix>
-      <fix>
-        <bug>66317</bug>: Fix for Lambda coercion security manager missing
-        privileges. Based on pull request #557 by Isaac Rivera Rivas (lihan)
-      </fix>
-      <fix>
-        <bug>66325</bug>: Fix concurrency issue in evaluation of expression
-        language containing lambda expressions. (markt)
-      </fix>
-      <add>
-        Update the <code>ErrorData</code> class in the JSP API to align with 
the
-        recent changes in the Jakarta Pages specification to support the new
-        error dispatch attribute
-        <code>jakarta.servlet.error.query_string</code>.
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        <bug>66348</bug>: Update the JARs listed in the class loader
-        documentation and note which ones are optional. (markt)
-      </fix>
-      <fix>
-        Documentation. Replace references in the application developer's guide
-        to CVS with more general references to a source code control system.
-        (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        <bug>66346</bug>: Ensure all JDBC pool JARs are reproducible. Pull
-        request <pr>566</pr> provided by John Neffenger. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update to Commons Daemon 1.3.3. (markt)
-      </update>
-      <fix>
-        <bug>66323</bug>: Move module start up parameters from
-        <code>JDK_JAVA_OPTIONS</code> to <code>JAVA_OPTS</code> now that the
-        minimum Java version is 11 and these options are always required.
-        (markt)
-      </fix>
-      <add>
-        Improvements to Chinese translations. Contributed by DigitalCat and
-        lihan. (markt)
-      </add>
-      <add>
-        Improvements to French translations. Contributed by Mathieu Bouchard.
-        (markt)
-      </add>
-      <add>
-        Improvements to Japanese translations. Contributed by Shirayuking and
-        tak7iji. (markt)
-      </add>
-      <add>
-        Improvements to Korean translations. (markt)
-      </add>
-      <add>
-        Improvements to Spanish translations. (markt)
-      </add>
-      <fix>
-        Correct a regression in the removal of the APR connector that broke
-        Graal native image support. Pull request <pr>564</pr> provided by
-        Sébastien Deleuze. (markt)
-      </fix>
-      <update>
-        Update the packaged version of the Apache Tomcat Native Library to 
2.0.2
-        to pick up the Windows binaries built with with OpenSSL 3.0.7. (markt)
-      </update>
-      <update>
-        Update the packaged version of the Apache Tomcat Migration Tool for
-        Jakarta EE to 1.0.5. (markt)
-      </update>
-      <scode>
-        Refactor code base to replace use of URL constructors. While they are
-        deprecated in Java 20 onwards, the reasons for deprecation are valid 
for
-        all versions so move away from them now. (markt)
-      </scode>
-      <scode>
-        Refine the Tomcat native image metadata to avoid including unintended
-        non-Tomcat resources. Pull request <pr>569</pr> provided by Sébastien
-        Deleuze. (markt)
-      </scode>
-      <update>
-        Update the internal fork of Apache Commons BCEL to b015e90 (2022-11-28,
-        6.7.0-RC1). (markt)
-      </update>
-      <update>
-        Update the internal fork of Apache Commons Codec to ae32a3f 
(2022-11-29,
-        1.16-SNAPSHOT). (markt)
-      </update>
-      <update>
-        Update the internal fork of Apache Commons FileUpload to aa8eff6
-        (2022-11-29, 2.0-SNAPSHOT). (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
 </body>
 </document>
 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to