From cca6f313bd96cff3a5d8dd5ee559645ba894247d Mon Sep 17 00:00:00 2001 From: Ben Darnell Date: Tue, 29 Sep 2020 22:23:56 -0400 Subject: [PATCH] Add release notes for 6.1, bump version to 6.1b1 --- docs/index.rst | 7 --- docs/releases.rst | 1 + docs/releases/v6.1.0.rst | 94 +++++++++++++++++++++++++++++++++++++ tornado/__init__.py | 4 +- tornado/platform/asyncio.py | 9 ++-- 5 files changed, 103 insertions(+), 12 deletions(-) create mode 100644 docs/releases/v6.1.0.rst diff --git a/docs/index.rst b/docs/index.rst index 7ba5cbf75..8a663c307 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -120,13 +120,6 @@ is limited (Even though Tornado is built on ``asyncio``, which supports Windows, Tornado does not use the APIs that are necessary for scalable networking on Windows). -On Windows, Tornado requires the ``WindowsSelectorEventLoop``. This is -the default in Python 3.7 and older, but Python 3.8 defaults to an -event loop that is not compatible with Tornado. Applications that use -Tornado on Windows with Python 3.8 must call -``asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())`` -at the beginning of their ``main`` file/function. - Documentation ------------- diff --git a/docs/releases.rst b/docs/releases.rst index 81babaa3e..a478821d7 100644 --- a/docs/releases.rst +++ b/docs/releases.rst @@ -4,6 +4,7 @@ Release notes .. toctree:: :maxdepth: 2 + releases/v6.1.0 releases/v6.0.4 releases/v6.0.3 releases/v6.0.2 diff --git a/docs/releases/v6.1.0.rst b/docs/releases/v6.1.0.rst new file mode 100644 index 000000000..02289ab57 --- /dev/null +++ b/docs/releases/v6.1.0.rst @@ -0,0 +1,94 @@ +What's new in Tornado 6.1.0 +=========================== + +Oct X, 2020 +----------- + +General changes +~~~~~~~~~~~~~~~ + +- Windows support has been improved. Tornado is now compatible with the proactor + event loop (which became the default in Python 3.8) by automatically falling + back to running a selector in a second thread. This means that it is no longer + necessary to explicitly configure a selector event loop, although doing so may + improve performance. This does not change the fact that Tornado is significantly + less scalable on Windows than on other platforms. +- Binary wheels are now provided for Windows, MacOS, and Linux (amd64 and arm64). + +`tornado.http1connection` +~~~~~~~~~~~~~~~~~~~~~~~~~ + +- ``HEAD`` requests to handlers that used chunked encoding no longer produce malformed output. +- Certain kinds of malformed ``gzip`` data no longer cause an infinite loop. + +`tornado.httpclient` +~~~~~~~~~~~~~~~~~~~~ + +- Setting ``decompress_response=False`` now works correctly with + ``curl_httpclient``. +- Mixing requests with and without proxies works correctly in ``curl_httpclient`` + (assuming the version of pycurl is recent enough). +- A default ``User-Agent`` of ``Tornado/$VERSION`` is now used if the + ``user_agent`` parameter is not specified. +- After a 303 redirect, ``tornado.simple_httpclient`` always uses ``GET``. + Previously this would use ``GET`` if the original request was a ``POST`` and + would otherwise reuse the original request method. For ``curl_httpclient``, the + behavior depends on the version of ``libcurl`` (with the most recent versions + using ``GET`` after 303 regardless of the original method). +- Setting ``request_timeout`` and/or ``connect_timeout`` to zero is now supported + to disable the timeout. + +`tornado.httputil` +~~~~~~~~~~~~~~~~~~ + +- Header parsing is now faster. +- `.parse_body_arguments` now accepts incompletely-escaped non-ASCII inputs. + +`tornado.iostream` +~~~~~~~~~~~~~~~~~~ + +- `ssl.CertificateError` during the SSL handshake is now handled correctly. +- Reads that are resolved while the stream is closing are now handled correctly. + +`tornado.log` +~~~~~~~~~~~~~ + +- When colored logging is enabled, ``logging.CRITICAL`` messages are now + recognized and colored magenta. + +`tornado.netutil` +~~~~~~~~~~~~~~~~~ + +- ``EADDRNOTAVAIL`` is now ignored when binding to ``localhost`` with IPv6. This + error is common in docker. + +`tornado.platform.asyncio` +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- `.AnyThreadEventLoopPolicy` now also configures a selector event loop for + these threads (the proactor event loop only works on the main thread) + +``tornado.platform.auto`` +~~~~~~~~~~~~~~~~~~~~~~~~~ + +- The ``set_close_exec`` function has been removed. + +`tornado.testing` +~~~~~~~~~~~~~~~~~ + +- `.ExpectLog` now has a ``level`` argument to ensure that the given log level + is enabled. + +`tornado.web` +~~~~~~~~~~~~~ + +- ``RedirectHandler.get`` now accepts keyword arguments. +- When sending 304 responses, more headers (including ``Allow``) are now preserved. +- ``reverse_url`` correctly handles escaped characters in the regex route. +- Default ``Etag`` headers are now generated with SHA-512 instead of MD5. + +`tornado.websocket` +~~~~~~~~~~~~~~~~~~~ + +- The ``ping_interval`` timer is now stopped when the connection is closed. +- `.websocket_connect` now raises an error when it encounters a redirect instead of hanging. diff --git a/tornado/__init__.py b/tornado/__init__.py index c053149d0..ca162bff6 100644 --- a/tornado/__init__.py +++ b/tornado/__init__.py @@ -22,5 +22,5 @@ # is zero for an official release, positive for a development branch, # or negative for a release candidate or beta (after the base version # number has been incremented) -version = "6.1.dev1" -version_info = (6, 1, 0, -100) +version = "6.1b1" +version_info = (6, 1, 0, -99) diff --git a/tornado/platform/asyncio.py b/tornado/platform/asyncio.py index fc88f918e..633a35f9c 100644 --- a/tornado/platform/asyncio.py +++ b/tornado/platform/asyncio.py @@ -14,9 +14,12 @@ the same event loop. .. note:: - Tornado requires the `~asyncio.AbstractEventLoop.add_reader` family of - methods, so it is not compatible with the `~asyncio.ProactorEventLoop` on - Windows. Use the `~asyncio.SelectorEventLoop` instead. + Tornado is designed to use a selector-based event loop. On Windows, + where a proactor-based event loop has been the default since Python 3.8, + a selector event loop is emulated by running ``select`` on a separate thread. + Configuring ``asyncio`` to use a selector event loop may improve performance + of Tornado (but may reduce performance of other ``asyncio``-based libraries + in the same process). """ import asyncio -- 2.47.2