--- /dev/null
+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.
+ * 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.