From 326d283c6f6e6187208f13be08a6e1026c59bf80 Mon Sep 17 00:00:00 2001 From: Ben Darnell Date: Mon, 30 Dec 2013 13:24:53 -0500 Subject: [PATCH] Reorganize and expand next-release notes. --- docs/releases/next.rst | 214 ++++++++++++++++++++++++++++++----------- 1 file changed, 158 insertions(+), 56 deletions(-) diff --git a/docs/releases/next.rst b/docs/releases/next.rst index 5d7520b86..4e99ab186 100644 --- a/docs/releases/next.rst +++ b/docs/releases/next.rst @@ -4,47 +4,150 @@ What's new in the next version of Tornado In Progress ----------- -* `.WSGIContainer` now calls the iterable's ``close()`` method even if - an error is raised, in compliance with the spec. -* Fixed an incorrect error message when handler methods return a value - other than None or a Future. +Installation +~~~~~~~~~~~~ +* Tornado now depends on the `backports.ssl_match_hostname + `_ when + running on Python 2. This will be installed automatically when using ``pip`` + or ``easy_install`` +* Tornado now includes an optional C extension module, which greatly improves + performance of websockets. This extension will be built automatically + if a C compiler is found at install time. + +New modules +~~~~~~~~~~~ + +* The `tornado.platform.asyncio` module provides integration with the + ``asyncio`` module introduced in Python 3.4 (also available for Python + 3.3 with ``pip install asyncio``). + +`tornado.auth` +~~~~~~~~~~~~~~ + +* Added `.GoogleOAuth2Mixin` support authentication to Google services + with OAuth 2 instead of OpenID and OAuth 1. +* `.FacebookGraphMixin` has been updated to use the current Facebook login + URL, which saves a redirect. + +`tornado.concurrent` +~~~~~~~~~~~~~~~~~~~~ + +* `.TracebackFuture` now accepts a ``timeout`` keyword argument (although + it is still incorrect to use a non-zero timeout in non-blocking code). + +``tornado.curl_httpclient`` +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* ``tornado.curl_httpclient`` now works on Python 3 with the + soon-to-be-released pycurl 7.19.3, which will officially support + Python 3 for the first time. Note that there are some unofficial + Python 3 ports of pycurl (Ubuntu has included one for its past + several releases); these are not supported for use with Tornado. + +`tornado.escape` +~~~~~~~~~~~~~~~~ + * `.xhtml_escape` now escapes apostrophes as well. -* `.Subprocess` no longer leaks file descriptors if `subprocess.Popen` fails. +* `tornado.escape.utf8`, `.to_unicode`, and `.native_str` now raise + `TypeError` instead of `AssertionError` when given an invalid value. + +`tornado.gen` +~~~~~~~~~~~~~ + +* Coroutines may now yield dicts in addition to lists to wait for + multiple tasks in parallel. +* Improved performance of `tornado.gen` when yielding a `.Future` that is + already done. + +`tornado.httpclient` +~~~~~~~~~~~~~~~~~~~~ + +* `tornado.httpclient.HTTPRequest` now uses property setters so that + setting attributes after construction applies the same conversions + as ``__init__`` (e.g. converting the body attribute to bytes). + +`tornado.httpserver` +~~~~~~~~~~~~~~~~~~~~ + +* Malformed ``x-www-form-urlencoded`` request bodies will now log a warning + and continue instead of causing the request to fail (similar to the existing + handling of malformed ``multipart/form-data`` bodies. This is done mainly + because some libraries send this content type by default even when the data + is not form-encoded. +* Fix some error messages for unix sockets (and other non-IP sockets) + +`tornado.ioloop` +~~~~~~~~~~~~~~~~ + +* `.IOLoop` now uses `~.IOLoop.handle_callback_exception` consistently for + error logging. * `.IOLoop` now frees callback objects earlier, reducing memory usage while idle. -* `.FacebookGraphMixin` has been updated to use the current Facebook login - URL, which saves a redirect. + +`tornado.iostream` +~~~~~~~~~~~~~~~~~~ + * `.IOStream` now recognizes ``ECONNABORTED`` error codes in more places (which was mainly an issue on Windows). * `.IOStream` now frees memory earlier if a connection is closed while there is data in the write buffer. -* `.StaticFileHandler` no longer fails if the client requests a ``Range`` that - is larger than the entire file (Facebook has a crawler that does this). * `.PipeIOStream` now handles ``EAGAIN`` error codes correctly. * `.SSLIOStream` now initiates the SSL handshake automatically without waiting for the application to try and read or write to the connection. -* `.IOLoop` now uses `~.IOLoop.handle_callback_exception` consistently for - error logging. -* `.RequestHandler.on_connection_close` now works correctly on subsequent - requests of a keep-alive connection. -* `.RequestHandler.clear_all_cookies` now accepts ``domain`` and ``path`` - arguments, just like `~.RequestHandler.clear_cookie`. -* The embedded ``ca-certificats.crt`` file has been updated with the current - Mozilla CA list. -* `.GoogleOAuth2Mixin` has been added so that Google's OAuth2 only apps are - able to get a context without OpenID (which uses OAuth 1). -* `.WebSocketHandler.write_message` now raises `.WebSocketClosedError` instead - of `AttributeError` when the connection has been closed. -* ``simple_httpclient`` now applies the ``connect_timeout`` to requests - that are queued and have not yet started. +* Swallow a spurious exception from ``set_nodelay`` when a connection + has been reset. + +`tornado.locale` +~~~~~~~~~~~~~~~~ + +* `.Locale.format_date` no longer forces the use of absolute + dates in Russian. + +`tornado.log` +~~~~~~~~~~~~~ + +* Fix an error from `tornado.log.enable_pretty_logging` when + `sys.stderr` does not have an ``isatty`` method. +* `tornado.log.LogFormatter` now accepts keyword arguments ``prefix_fmt`` + and ``datefmt``. + +`tornado.netutil` +~~~~~~~~~~~~~~~~~ + * `.is_valid_ip` (and therefore ``HTTPRequest.remote_ip``) now rejects empty strings. -* `.websocket_connect` now accepts preconstructed ``HTTPRequest`` objects. -* Fix a bug with `.WebSocketHandler` when used with some proxies that - unconditionally modify the ``Connection`` header. +* Synchronously using `.ThreadedResolver` at import time to resolve + a unicode hostname no longer deadlocks. + +`tornado.platform.twisted` +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* `.TwistedResolver` now has better error handling. + +`tornado.process` +~~~~~~~~~~~~~~~~~ + +* `.Subprocess` no longer leaks file descriptors if `subprocess.Popen` fails. + +``tornado.simple_httpclient`` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* ``simple_httpclient`` now applies the ``connect_timeout`` to requests + that are queued and have not yet started. +* On Python 2.6, ``simple_httpclient`` now uses TLSv1 instead of SSLv3. +* ``simple_httpclient`` now enforces the connect timeout during DNS resolution. +* The embedded ``ca-certificates.crt`` file has been updated with the current + Mozilla CA list. + +`tornado.web` +~~~~~~~~~~~~~ + +* `.StaticFileHandler` no longer fails if the client requests a ``Range`` that + is larger than the entire file (Facebook has a crawler that does this). +* `.RequestHandler.on_connection_close` now works correctly on subsequent + requests of a keep-alive connection. * New application setting ``default_handler_class`` can be used to easily set up custom 404 pages. -* Fix some error messages for unix sockets (and other non-IP sockets) * New application settings ``autoreload``, ``compiled_template_cache``, ``static_hash_cache``, and ``serve_traceback`` can be used to control individual aspects of debug mode. @@ -53,37 +156,36 @@ In Progress `.HTTPRequest.query_arguments` and `.HTTPRequest.body_arguments` allow access to arguments without intermingling those from the query string with those from the request body. -* `.websocket_connect` now returns an error immediately for refused connections - instead of waiting for the timeout. -* Exceptions will no longer be logged twice when using both ``@asynchronous`` - and ``@gen.coroutine`` -* Swallow a spurious exception from ``set_nodelay`` when a connection - has been reset. -* Coroutines may now yield dicts in addition to lists to wait for - multiple tasks in parallel. -* Fix an error from `tornado.log.enable_pretty_logging` when - `sys.stderr` does not have an ``isatty`` method. -* `.WebSocketClientConnection` now has a ``close`` method. +* `.RequestHandler.decode_argument` and related methods now raise + an ``HTTPError(400)`` instead of `UnicodeDecodeError` when the + argument could not be decoded. +* `.RequestHandler.clear_all_cookies` now accepts ``domain`` and ``path`` + arguments, just like `~.RequestHandler.clear_cookie`. * It is now possible to specify handlers by name when using the `.URLSpec` class. -* On Python 2.6, ``simple_httpclient`` now uses TLSv1 instead of SSLv3. -* Added `.GoogleOAuth2Mixin` support authentication to Google services - with OAuth 2 instead of OpenID and OAuth 1. * `.Application` now accepts 4-tuples to specify the ``name`` parameter (which previously required constructing a `.URLSpec` object instead of a tuple). -* ``simple_httpclient`` now enforces the connect timeout during DNS resolution. -* Tornado now depends on the `backports.ssl_match_hostname - `_ when - running on Python 2. This will be installed automatically when using ``pip`` - or ``easy_install`` -* Tornado now includes an optional C extension module, which greatly improves - performance of websockets. This extension will be built automatically - if a C compiler is found at install time. -* The `tornado.platform.asyncio` module provides integration with the - ``asyncio`` module introduced in Python 3.4. -* Malformed ``x-www-form-urlencoded`` request bodies will now log a warning - and continue instead of causing the request to fail (similar to the existing - handling of malformed ``multipart/form-data`` bodies. This is done mainly - because some libraries send this content type by default even when the data - is not form-encoded. +* Fixed an incorrect error message when handler methods return a value + other than None or a Future. +* Exceptions will no longer be logged twice when using both ``@asynchronous`` + and ``@gen.coroutine`` + + +`tornado.websocket` +~~~~~~~~~~~~~~~~~~~ + +* `.WebSocketHandler.write_message` now raises `.WebSocketClosedError` instead + of `AttributeError` when the connection has been closed. +* `.websocket_connect` now accepts preconstructed ``HTTPRequest`` objects. +* Fix a bug with `.WebSocketHandler` when used with some proxies that + unconditionally modify the ``Connection`` header. +* `.websocket_connect` now returns an error immediately for refused connections + instead of waiting for the timeout. +* `.WebSocketClientConnection` now has a ``close`` method. + +`tornado.wsgi` +~~~~~~~~~~~~~~ + +* `.WSGIContainer` now calls the iterable's ``close()`` method even if + an error is raised, in compliance with the spec. -- 2.47.3