The handlers list passed to the tornado.web.Application constructor and add_handlers methods can now contain lists in addition to tuples and 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 .

RequestHandler.get_argument now raises MissingArgumentError (a subclass of tornado.web.HTTPError , which is what it raised previously) if the argument cannot be found.

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.

RequestHandler.send_error will now only be called once per request, even if multiple exceptions are caught by the stack context.

The tornado.web.asynchronous decorator is no longer necessary for methods that return a Future (i.e. those that use the gen.coroutine or return_future decorators)

RequestHandler.prepare may now be asynchronous if it returns a 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.

RequestHandler.redirect no longer silently strips control characters and whitespace. It is now an error to pass control characters, newlines or tabs.

StaticFileHandler has been reorganized internally and now has additional extension points that can be overridden in subclasses.

StaticFileHandler now supports HTTP Range requests. StaticFileHandler is still not suitable for files too large to comfortably fit in memory, but Range support is necessary in some browsers to enable seeking of HTML5 audio and video.

StaticFileHandler now uses longer hashes by default, and uses the same hashes for Etag as it does for versioned urls.

StaticFileHandler.make_static_url and RequestHandler.static_url now have an additional keyword argument include_version to suppress the url versioning.

StaticFileHandler now reads its file in chunks, which will reduce memory fragmentation.