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 (also available for Python
3.3 with pipinstallasyncio).
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.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).
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)
IOLoop now frees callback objects earlier, reducing memory usage
while idle.
IOLoop will no longer call logging.basicConfig if there is a handler
defined for the root logger or for the tornado or tornado.application
loggers (previously it only looked at the root logger).
New application setting default_handler_class can be used to easily
set up custom 404 pages.
New application settings autoreload, compiled_template_cache,
static_hash_cache, and serve_traceback can be used to control
individual aspects of debug mode.
New methods RequestHandler.get_query_argument and
RequestHandler.get_body_argument and new attributes
HTTPRequest.query_arguments and HTTPRequest.body_arguments allow access
to arguments without intermingling those from the query string with those
from the request body.