Skip to content

v6.6.0a1

@bdarnell bdarnell tagged this 22 Sep 03:01
Oct XX, 2026
------------

General changes
~~~~~~~~~~~~~~~

- Python 3.15 is now supported. Python 3.9 and 3.10 are no longer supported; 3.11 is the minimum
  supported version.
- Free-threaded python interpreters are now supported; prebuilt wheels are available for 3.14t
  and 3.15t.
- Windows on ARM is now supported and prebuilt wheels are available.
- Prebuilt wheels are now available for ``riscv64``, ``ppc64le``, and ``s390x`` architectures on
  Linux. These architectures are experimental and have limited support and testing.

Deprecation notices
~~~~~~~~~~~~~~~~~~~

- The ``host`` argument to the `.HTTPServerRequest` constructor is deprecated (since
  Tornado 6.5.2); use ``headers["Host"]`` instead. It will be removed in Tornado 6.7.
- The ``start_line`` argument to the ``HTTPServerRequest`` constructor will become required in
  Tornado 6.7. The ``method``, ``uri``, and ``version`` arguments are deprecated and will be
  removed at the same time. All remaining arguments will become keyword-only.
- `tornado.auth.OpenIdMixin` is deprecated and will be removed in Tornado 6.7 (this is a change
  in the timeline; it was previously scheduled for removal in Tornado 7.0).

Type annotation changes
~~~~~~~~~~~~~~~~~~~~~~~

- `.tornado.gen.multi` now has overload annotations to indicate that its return type depends
  on its inputs (list vs dict).
- `.HTTPServerRequest.method` and ``uri`` attributes are now typed as ``str`` instead of
  ``str | None``

``tornado.curl_httpclient``
~~~~~~~~~~~~~~~~~~~~~~~~~~~

- The minimum supported version of libcurl is now 7.81 (which is the version shipped by
  Ubuntu 22.04 LTS).

``tornado.simple_httpclient``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- The ``streaming_callback`` argument to ``SimpleAsyncHTTPClient.fetch`` may now be a coroutine.

``tornado.http1connection``
~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Invalid ``Host`` headers are now logged at the INFO level instead of as an uncaught exception.

`tornado.httputil`
~~~~~~~~~~~~~~~~~~

- If the ``start_line`` argument to `.HTTPServerRequest` is not provided, both ``method`` and
  ``uri`` must be provided.

`tornado.locks`
~~~~~~~~~~~~~~~

- A ``timeout`` value of zero will either return or raise immediately. Previously, zero was
  treated as equivalent to ``None`` (wait forever). This affects `.Condition.wait`, `.Event.wait`,
  `.Semaphore.acquire`, and `.Lock.acquire`.

`tornado.netutil`
~~~~~~~~~~~~~~~~~

- The default ``SSLContext`` objects are now lazily created on first use rather than at import time.

`tornado.platform.asyncio`
~~~~~~~~~~~~~~~~~~~~~~~~~~

- The selector thread used on Windows now cleans up its sockets correctly on interpreter exit,
  preventing logged warnings.

`tornado.platform.caresresolver`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- The ``CaresResolver`` class (which has been deprecated since Tornado 6.2) requires pycares
  version 4.x; it will not be updated to support pycares 5.x.

`tornado.queues`
~~~~~~~~~~~~~~~~

- A ``timeout`` value of zero will either return or raise immediately. Previously, zero was
  treated as equivalent to ``None`` (wait forever). This affects `.Queue.get`, `.Queue.put`, and
  `.Queue.join`.
Assets 2
Loading