* 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).
+ 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.
* `.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.
+* 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 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
+ `.url_unescape` with ``plus=False``, so plus signs are left as-is
+ instead of being turned into spaces.