Organize release notes by module
This commit is contained in:
parent
dedc6f61e0
commit
f55614a641
|
@ -4,82 +4,173 @@ What's new in the next version of Tornado
|
|||
In progress
|
||||
-----------
|
||||
|
||||
* `tornado.util.import_object` now works with top-level module names that
|
||||
do not contain a dot.
|
||||
* `tornado.util.import_object` now consistently raises `ImportError`
|
||||
instead of `AttributeError` when it fails.
|
||||
* The ``handlers`` list passed to the `tornado.web.Application` constructor
|
||||
and `~tornado.web.Application.add_handlers` methods can now contain
|
||||
lists in addition to tuples and `~tornado.web.URLSpec` objects.
|
||||
Multiple modules
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
* Many reference cycles have been broken up throughout the package,
|
||||
allowing for more efficient garbage collection on CPython.
|
||||
* Silenced some log messages when connections are opened and immediately
|
||||
closed (i.e. port scans), or other situations related to closed
|
||||
connections.
|
||||
* Various small speedups: `.HTTPHeaders` case normalization, `.UIModule`
|
||||
proxy objects, precompile some regexes.
|
||||
|
||||
`tornado.auth`
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
* `tornado.auth.OAuthMixin` always sends ``oauth_version=1.0`` in its
|
||||
request as required by the spec.
|
||||
|
||||
`tornado.escape`
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
* `.url_escape` and `.url_unescape` have a new ``plus`` argument (defaulting
|
||||
to True for consistency with the previous behavior) which specifies
|
||||
whether they work like `urllib.parse.unquote` or `urllib.parse.unquote_plus`.
|
||||
|
||||
`tornado.gen`
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
* Fixed a potential memory leak with long chains of `tornado.gen` coroutines.
|
||||
|
||||
`tornado.httpclient`
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* `tornado.httpclient.HTTPRequest` takes a new argument ``auth_mode``,
|
||||
which can be either ``basic`` or ``digest``. Digest authentication
|
||||
is only supported with ``tornado.curl_httpclient``.
|
||||
* `tornado.stack_context` has been rewritten and is now much faster.
|
||||
* ``tornado.curl_httpclient`` no longer goes into an infinite loop when
|
||||
pycurl returns a negative timeout.
|
||||
* `tornado.testing.AsyncTestCase.wait` now raises the correct exception
|
||||
when it has been modified by `tornado.stack_context`.
|
||||
* `tornado.web.StaticFileHandler` now works on Windows when the client
|
||||
passes an ``If-Modified-Since`` timestamp before 1970.
|
||||
* ``curl_httpclient`` now supports the ``PATCH`` and ``OPTIONS`` methods
|
||||
without the use of ``allow_nonstandard_methods=True``.
|
||||
* Worked around a class of bugs in libcurl that would result in
|
||||
errors from `.IOLoop.update_handler` in various scenarios including
|
||||
digest authentication and socks proxies.
|
||||
|
||||
`tornado.httpserver`
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* `tornado.httpserver.HTTPServer` handles malformed HTTP headers more
|
||||
gracefully.
|
||||
* `tornado.auth.OAuthMixin` always sends ``oauth_version=1.0`` in its
|
||||
request as required by the spec.
|
||||
* Many reference cycles have been broken up throughout the package,
|
||||
allowing for more efficient garbage collection on CPython.
|
||||
* `tornado.testing.gen_test` can now be called as ``@gen_test(timeout=60)``
|
||||
to give some tests a longer timeout than others.
|
||||
* The environment variable ``ASYNC_TEST_TIMEOUT`` can now be set to
|
||||
override the default timeout for `.AsyncTestCase.wait` and `.gen_test`.
|
||||
* `.HTTPServer` now supports lists of IPs in ``X-Forwarded-For``
|
||||
(it chooses the last, i.e. nearest one).
|
||||
* Memory is now reclaimed promptly on CPython when an HTTP request
|
||||
fails because it exceeded the maximum upload size.
|
||||
* The ``TCP_NODELAY`` flag is now set when appropriate in `.HTTPServer`
|
||||
and ``simple_httpclient``.
|
||||
* The `.HTTPServer` ``no_keep_alive`` option is now respected with
|
||||
HTTP 1.0 connections that explicitly pass ``Connection: keep-alive``.
|
||||
* The ``Connection: keep-alive`` check for HTTP 1.0 connections is now
|
||||
case-insensitive.
|
||||
|
||||
`tornado.httputil`
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* The cache used in `.HTTPHeaders` will no longer grow without bound.
|
||||
|
||||
`tornado.ioloop`
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
* Some `.IOLoop` implementations (such as ``pyzmq``) accept objects
|
||||
other than integer file descriptors; these objects will now have
|
||||
their ``.close()`` method called when the ``IOLoop` is closed with
|
||||
``all_fds=True``.
|
||||
* `.HTTPServer` now supports lists of IPs in ``X-Forwarded-For``
|
||||
(it chooses the last, i.e. nearest one).
|
||||
* Fixed an exception in `.WSGIContainer` when the connection is closed
|
||||
while output is being written.
|
||||
* Silenced some log messages when connections are opened and immediately
|
||||
closed (i.e. port scans), or other situations related to closed
|
||||
connections.
|
||||
* The default `.Resolver` implementation now works on Solaris.
|
||||
* Memory is now reclaimed promptly on CPython when an HTTP request
|
||||
fails because it exceeded the maximum upload size.
|
||||
* `tornado.options.define` with ``multiple=True`` now works on Python 3.
|
||||
* `.Locale.format_date` now works on Python 3.
|
||||
* Some internal names used by the template system have been changed;
|
||||
now all "reserved" names in templates start with ``_tt_``.
|
||||
* The constructors of `.TCPServer` and `.HTTPServer` now take a
|
||||
``max_buffer_size`` keyword argument.
|
||||
* The stub handles left behind by `.IOLoop.remove_timeout` will now get
|
||||
cleaned up instead of waiting to expire.
|
||||
|
||||
`tornado.iostream`
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* Fixed a bug in `.BaseIOStream.read_until_close` that would sometimes
|
||||
cause data to be passed to the final callback instead of the streaming
|
||||
callback.
|
||||
* The `.IOStream` close callback is now run more reliably if there is
|
||||
an exception in ``_try_inline_read``.
|
||||
* New methods `.BaseIOStream.set_nodelay` and
|
||||
`.WebSocketHandler.set_nodelay` can be used to set the
|
||||
``TCP_NODELAY`` flag.
|
||||
* Fixed a case where errors in ``SSLIOStream.connect`` (and
|
||||
``SimpleAsyncHTTPClient``) were not being reported correctly.
|
||||
|
||||
`tornado.locale`
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
* `.Locale.format_date` now works on Python 3.
|
||||
|
||||
`tornado.netutil`
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
* The default `.Resolver` implementation now works on Solaris.
|
||||
* `.Resolver` now has a `~.Resolver.close` method.
|
||||
* Fixed a potential CPU DoS when ``tornado.netutil.ssl_match_hostname``
|
||||
is used on certificates with an abusive wildcard pattern.
|
||||
|
||||
`tornado.options`
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
* `tornado.options.define` with ``multiple=True`` now works on Python 3.
|
||||
* `tornado.options.options` and other `.OptionParser` instances support some
|
||||
new dict-like methods: `~.OptionParser.items()`, iteration over keys,
|
||||
and (read-only) access to options with square braket syntax.
|
||||
`.OptionParser.group_dict` returns all options with a given group
|
||||
name, and `.OptionParser.as_dict` returns all options.
|
||||
|
||||
`tornado.stack_context`
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* `tornado.stack_context` has been rewritten and is now much faster.
|
||||
* New function `.run_with_stack_context` facilitates the use of stack
|
||||
contexts with coroutines.
|
||||
|
||||
`tornado.tcpserver`
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* The constructors of `.TCPServer` and `.HTTPServer` now take a
|
||||
``max_buffer_size`` keyword argument.
|
||||
|
||||
`tornado.template`
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* Some internal names used by the template system have been changed;
|
||||
now all "reserved" names in templates start with ``_tt_``.
|
||||
|
||||
`tornado.testing`
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
* `tornado.testing.AsyncTestCase.wait` now raises the correct exception
|
||||
when it has been modified by `tornado.stack_context`.
|
||||
* `tornado.testing.gen_test` can now be called as ``@gen_test(timeout=60)``
|
||||
to give some tests a longer timeout than others.
|
||||
* The environment variable ``ASYNC_TEST_TIMEOUT`` can now be set to
|
||||
override the default timeout for `.AsyncTestCase.wait` and `.gen_test`.
|
||||
* `.bind_unused_port` now passes ``None`` instead of ``0`` as the port
|
||||
to ``getaddrinfo``, which works better with some unusual network
|
||||
configurations.
|
||||
|
||||
`tornado.util`
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
* `tornado.util.import_object` now works with top-level module names that
|
||||
do not contain a dot.
|
||||
* `tornado.util.import_object` now consistently raises `ImportError`
|
||||
instead of `AttributeError` when it fails.
|
||||
|
||||
`tornado.web`
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
* The ``handlers`` list passed to the `tornado.web.Application` constructor
|
||||
and `~tornado.web.Application.add_handlers` methods can now contain
|
||||
lists in addition to tuples and `~tornado.web.URLSpec` objects.
|
||||
* `tornado.web.StaticFileHandler` now works on Windows when the client
|
||||
passes an ``If-Modified-Since`` timestamp before 1970.
|
||||
* New method `.RequestHandler.log_exception` can be overridden to
|
||||
customize the logging behavior when an exception is uncaught. Most
|
||||
apps that currently override ``_handle_request_exception`` can now
|
||||
use a combination of `.RequestHandler.log_exception` and
|
||||
`.write_error`.
|
||||
* The ``TCP_NODELAY`` flag is now set when appropriate in `.HTTPServer`
|
||||
and ``simple_httpclient``.
|
||||
* New methods `.BaseIOStream.set_nodelay` and
|
||||
`.WebSocketHandler.set_nodelay` can be used to set the
|
||||
``TCP_NODELAY`` flag.
|
||||
* The cache used in `.HTTPHeaders` will no longer grow without bound.
|
||||
* Various small speedups: `.HTTPHeaders` case normalization, `.UIModule`
|
||||
proxy objects, precompile some regexes.
|
||||
* `.bind_unused_port` now passes ``None`` instead of ``0`` as the port
|
||||
to ``getaddrinfo``, which works better with some unusual network
|
||||
configurations.
|
||||
* `.RequestHandler.get_argument` now raises `.MissingArgumentError`
|
||||
(a subclass of `tornado.web.HTTPError`, which is what it raised previously)
|
||||
if the argument cannot be found.
|
||||
* New function `.run_with_stack_context` facilitates the use of stack
|
||||
contexts with coroutines.
|
||||
* `.url_escape` and `.url_unescape` have a new ``plus`` argument (defaulting
|
||||
to True for consistency with the previous behavior) which specifies
|
||||
whether they work like `urllib.parse.unquote` or `urllib.parse.unquote_plus`.
|
||||
* `.Application.reverse_url` now uses `.url_escape` with ``plus=False``,
|
||||
i.e. spaces are encoded as ``%20`` instead of ``+``.
|
||||
* Arguments extracted from the url path are now decoded with
|
||||
|
@ -94,12 +185,6 @@ In progress
|
|||
`.Future`. The `~tornado.web.asynchronous` decorator is not used with
|
||||
``prepare``; one of the `.Future`-related decorators should be used instead.
|
||||
* ``RequestHandler.current_user`` may now be assigned to normally.
|
||||
* The `.HTTPServer` ``no_keep_alive`` option is now respected with
|
||||
HTTP 1.0 connections that explicitly pass ``Connection: keep-alive``.
|
||||
* The ``Connection: keep-alive`` check for HTTP 1.0 connections is now
|
||||
case-insensitive.
|
||||
* The stub handles left behind by `.IOLoop.remove_timeout` will now get
|
||||
cleaned up instead of waiting to expire.
|
||||
* `.RequestHandler.redirect` no longer silently strips control characters
|
||||
and whitespace. It is now an error to pass control characters, newlines
|
||||
or tabs.
|
||||
|
@ -116,21 +201,11 @@ In progress
|
|||
the url versioning.
|
||||
* `.StaticFileHandler` now reads its file in chunks, which will reduce
|
||||
memory fragmentation.
|
||||
* Fixed a case where errors in ``SSLIOStream.connect`` (and
|
||||
``SimpleAsyncHTTPClient``) were not being reported correctly.
|
||||
* `.Resolver` now has a `~.Resolver.close` method.
|
||||
* Fixed a potential memory leak with long chains of `tornado.gen` coroutines.
|
||||
* ``curl_httpclient`` now supports the ``PATCH`` and ``OPTIONS`` methods
|
||||
without the use of ``allow_nonstandard_methods=True``.
|
||||
* `tornado.options.options` and other `.OptionParser` instances support some
|
||||
new dict-like methods: `~.OptionParser.items()`, iteration over keys,
|
||||
and (read-only) access to options with square braket syntax.
|
||||
`.OptionParser.group_dict` returns all options with a given group
|
||||
name, and `.OptionParser.as_dict` returns all options.
|
||||
* Fixed a potential CPU DoS when ``tornado.netutil.ssl_match_hostname``
|
||||
is used on certificates with an abusive wildcard pattern.
|
||||
* Fixed a problem with the ``Date`` header and cookie expiration dates
|
||||
when the system locale is set to a non-english configuration.
|
||||
* Worked around a class of bugs in libcurl that would result in
|
||||
errors from `.IOLoop.update_handler` in various scenarios including
|
||||
digest authentication and socks proxies.
|
||||
|
||||
`tornado.wsgi`
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
* Fixed an exception in `.WSGIContainer` when the connection is closed
|
||||
while output is being written.
|
||||
|
|
Loading…
Reference in New Issue