|
| 1 | +What's new in Tornado 2.0 |
| 2 | +========================= |
| 3 | + |
| 4 | +Jun 21, 2011 |
| 5 | +------------ |
| 6 | + |
| 7 | +:: |
| 8 | + |
| 9 | + Major changes: |
| 10 | + * Template output is automatically escaped by default; see backwards |
| 11 | + compatibility note below. |
| 12 | + * The default AsyncHTTPClient implementation is now simple_httpclient. |
| 13 | + * Python 3.2 is now supported. |
| 14 | + |
| 15 | + Backwards compatibility: |
| 16 | + * Template autoescaping is enabled by default. Applications upgrading from |
| 17 | + a previous release of Tornado must either disable autoescaping or adapt |
| 18 | + their templates to work with it. For most applications, the simplest |
| 19 | + way to do this is to pass autoescape=None to the Application constructor. |
| 20 | + * Applications that wish to continue using curl_httpclient instead of |
| 21 | + simple_httpclient may do so by calling |
| 22 | + AsyncHTTPClient.configure("tornado.curl_httpclient.CurlAsyncHTTPClient") |
| 23 | + at the beginning of the process. Users of Python 2.5 will probably want |
| 24 | + to use curl_httpclient as simple_httpclient only supports ssl on Python 2.6+. |
| 25 | + * Python 3 compatibility involved many changes throughout the codebase, |
| 26 | + so users are encouraged to test their applications more thoroughly than |
| 27 | + usual when upgrading to this release. |
| 28 | + |
| 29 | + Other changes in this release: |
| 30 | + * Templates support several new directives: |
| 31 | + - {% autoescape ...%} to control escaping behavior |
| 32 | + - {% raw ... %} for unescaped output |
| 33 | + - {% module ... %} for calling UIModules |
| 34 | + * {% module Template(path, **kwargs) %} may now be used to call another |
| 35 | + template with an independent namespace |
| 36 | + * All IOStream callbacks are now run directly on the IOLoop via add_callback. |
| 37 | + * HTTPServer now supports IPv6 where available. To disable, pass |
| 38 | + family=socket.AF_INET to HTTPServer.bind(). |
| 39 | + * HTTPClient now supports IPv6, configurable via allow_ipv6=bool on the |
| 40 | + HTTPRequest. allow_ipv6 defaults to false on simple_httpclient and true |
| 41 | + on curl_httpclient. |
| 42 | + * RequestHandlers can use an encoding other than utf-8 for query parameters |
| 43 | + by overriding decode_argument() |
| 44 | + * Performance improvements, especially for applications that use a lot of |
| 45 | + IOLoop timeouts |
| 46 | + * HTTP OPTIONS method no longer requires an XSRF token. |
| 47 | + * JSON output (RequestHandler.write(dict)) now sets Content-Type to |
| 48 | + application/json |
| 49 | + * Etag computation can now be customized or disabled by overriding |
| 50 | + RequestHandler.compute_etag |
| 51 | + * USE_SIMPLE_HTTPCLIENT environment variable is no longer supported. |
| 52 | + Use AsyncHTTPClient.configure instead. |
0 commit comments