2011-06-22 05:28:20 +00:00
|
|
|
What's new in Tornado 2.0
|
|
|
|
=========================
|
|
|
|
|
|
|
|
Jun 21, 2011
|
|
|
|
------------
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
Major changes:
|
|
|
|
* Template output is automatically escaped by default; see backwards
|
|
|
|
compatibility note below.
|
|
|
|
* The default AsyncHTTPClient implementation is now simple_httpclient.
|
|
|
|
* Python 3.2 is now supported.
|
|
|
|
|
|
|
|
Backwards compatibility:
|
|
|
|
* Template autoescaping is enabled by default. Applications upgrading from
|
|
|
|
a previous release of Tornado must either disable autoescaping or adapt
|
|
|
|
their templates to work with it. For most applications, the simplest
|
|
|
|
way to do this is to pass autoescape=None to the Application constructor.
|
2011-06-28 06:04:52 +00:00
|
|
|
Note that this affects certain built-in methods, e.g. xsrf_form_html
|
|
|
|
and linkify, which must now be called with {% raw %} instead of {}
|
2011-06-22 05:28:20 +00:00
|
|
|
* Applications that wish to continue using curl_httpclient instead of
|
|
|
|
simple_httpclient may do so by calling
|
|
|
|
AsyncHTTPClient.configure("tornado.curl_httpclient.CurlAsyncHTTPClient")
|
|
|
|
at the beginning of the process. Users of Python 2.5 will probably want
|
|
|
|
to use curl_httpclient as simple_httpclient only supports ssl on Python 2.6+.
|
|
|
|
* Python 3 compatibility involved many changes throughout the codebase,
|
|
|
|
so users are encouraged to test their applications more thoroughly than
|
|
|
|
usual when upgrading to this release.
|
|
|
|
|
|
|
|
Other changes in this release:
|
|
|
|
* Templates support several new directives:
|
|
|
|
- {% autoescape ...%} to control escaping behavior
|
|
|
|
- {% raw ... %} for unescaped output
|
|
|
|
- {% module ... %} for calling UIModules
|
|
|
|
* {% module Template(path, **kwargs) %} may now be used to call another
|
|
|
|
template with an independent namespace
|
|
|
|
* All IOStream callbacks are now run directly on the IOLoop via add_callback.
|
|
|
|
* HTTPServer now supports IPv6 where available. To disable, pass
|
|
|
|
family=socket.AF_INET to HTTPServer.bind().
|
|
|
|
* HTTPClient now supports IPv6, configurable via allow_ipv6=bool on the
|
|
|
|
HTTPRequest. allow_ipv6 defaults to false on simple_httpclient and true
|
|
|
|
on curl_httpclient.
|
|
|
|
* RequestHandlers can use an encoding other than utf-8 for query parameters
|
|
|
|
by overriding decode_argument()
|
|
|
|
* Performance improvements, especially for applications that use a lot of
|
|
|
|
IOLoop timeouts
|
|
|
|
* HTTP OPTIONS method no longer requires an XSRF token.
|
|
|
|
* JSON output (RequestHandler.write(dict)) now sets Content-Type to
|
|
|
|
application/json
|
|
|
|
* Etag computation can now be customized or disabled by overriding
|
|
|
|
RequestHandler.compute_etag
|
|
|
|
* USE_SIMPLE_HTTPCLIENT environment variable is no longer supported.
|
|
|
|
Use AsyncHTTPClient.configure instead.
|