Announcing Tornado 2.3

104 views
Skip to first unread message

Ben Darnell

unread,
Jun 1, 2012, 12:53:06 AM6/1/12
to Tornado Mailing List
We are pleased to announce the release of Tornado 2.3, available from
https://github.com/downloads/facebook/tornado/tornado-2.3.tar.gz

Release notes:
http://www.tornadoweb.org/documentation/releases/v2.3.0.html

Many thanks to everyone who contributed patches, bug reports, and
feedback that went into
this release!

-Ben


What's new in Tornado 2.3
=========================

May 31, 2012
------------

HTTP clients
~~~~~~~~~~~~

* `tornado.httpclient.HTTPClient` now supports the same constructor
keyword arguments as `AsyncHTTPClient`.
* The ``max_clients`` keyword argument to `AsyncHTTPClient.configure` now works.
* `tornado.simple_httpclient` now supports the ``OPTIONS`` and ``PATCH``
HTTP methods.
* `tornado.simple_httpclient` is better about closing its sockets
instead of leaving them for garbage collection.
* `tornado.simple_httpclient` correctly verifies SSL certificates for
URLs containing IPv6 literals (This bug affected Python 2.5 and 2.6).
* `tornado.simple_httpclient` no longer includes basic auth credentials
in the ``Host`` header when those credentials are extracted from the URL.
* `tornado.simple_httpclient` no longer modifies the caller-supplied header
dictionary, which caused problems when following redirects.
* `tornado.curl_httpclient` now supports client SSL certificates (using
the same ``client_cert`` and ``client_key`` arguments as
`tornado.simple_httpclient`)

HTTP Server
~~~~~~~~~~~

* `HTTPServer` now works correctly with paths starting with ``//``
* `HTTPHeaders.copy` (inherited from `dict.copy`) now works correctly.
* `HTTPConnection.address` is now always the socket address, even for non-IP
sockets. `HTTPRequest.remote_ip` is still always an IP-style address
(fake data is used for non-IP sockets)
* Extra data at the end of multipart form bodies is now ignored, which fixes
a compatibility problem with an iOS HTTP client library.


``IOLoop`` and ``IOStream``
~~~~~~~~~~~~~~~~~~~~~~~~~~~

* `IOStream` now has an ``error`` attribute that can be used to determine
why a socket was closed.
* `tornado.iostream.IOStream.read_until` and ``read_until_regex`` are much
faster with large input.
* `IOStream.write` performs better when given very large strings.
* `IOLoop.instance()` is now thread-safe.

``tornado.options``
~~~~~~~~~~~~~~~~~~~

* `tornado.options` options with ``multiple=True`` that are set more than
once now overwrite rather than append. This makes it possible to override
values set in `parse_config_file` with `parse_command_line`.
* `tornado.options` ``--help`` output is now prettier.
* `tornado.options.options` now supports attribute assignment.

``tornado.template``
~~~~~~~~~~~~~~~~~~~~

* Template files containing non-ASCII (utf8) characters now work on Python 3
regardless of the locale environment variables.
* Templates now support ``else`` clauses in
``try``/``except``/``finally``/``else`` blocks.

``tornado.web``
~~~~~~~~~~~~~~~

* `tornado.web.RequestHandler` now supports the ``PATCH`` HTTP method.
Note that this means any existing methods named ``patch`` in
``RequestHandler`` subclasses will need to be renamed.
* `tornado.web.addslash` and ``removeslash`` decorators now send permanent
redirects (301) instead of temporary (302).
* `RequestHandler.flush` now invokes its callback whether there was any data
to flush or not.
* Repeated calls to `RequestHandler.set_cookie` with the same name now
overwrite the previous cookie instead of producing additional copies.
* `tornado.web.OutputTransform.transform_first_chunk` now takes and returns
a status code in addition to the headers and chunk. This is a
backwards-incompatible change to an interface that was never technically
private, but was not included in the documentation and does not appear
to have been used outside Tornado itself.
* Fixed a bug on python versions before 2.6.5 when `URLSpec` regexes
are constructed from unicode strings and keyword arguments are extracted.
* The ``reverse_url`` function in the template namespace now comes from
the `RequestHandler` rather than the `Application`. (Unless overridden,
`RequestHandler.reverse_url` is just an alias for the `Application`
method).
* The ``Etag`` header is now returned on 304 responses to an ``If-None-Match``
request, improving compatibility with some caches.
* `tornado.web` will no longer produce responses with status code 304
that also have entity headers such as ``Content-Length``.

Other modules
~~~~~~~~~~~~~

* `tornado.auth.FacebookGraphMixin` no longer sends ``post_args`` redundantly
in the url.
* The ``extra_params`` argument to `tornado.escape.linkify` may now be
a callable, to allow parameters to be chosen separately for each link.
* `tornado.gen` no longer leaks `StackContexts` when a ``@gen.engine`` wrapped
function is called repeatedly.
* `tornado.locale.get_supported_locales` no longer takes a meaningless
``cls`` argument.
* `StackContext` instances now have a deactivation callback that can be
used to prevent further propagation.
* `tornado.testing.AsyncTestCase.wait` now resets its timeout on each call.
* `tornado.wsgi.WSGIApplication` now parses arguments correctly on Python 3.
* Exception handling on Python 3 has been improved; previously some exceptions
such as `UnicodeDecodeError` would generate `TypeErrors`

Felinx Lee

unread,
Jun 1, 2012, 12:58:18 AM6/1/12
to python-...@googlegroups.com
Tornado is awesome!
Thanks, Ben!
--
What can change the nature of a man?(Planescape Torment)
----------------------------------------------------------------------------------------
http://feilong.me            Felinx Lee's Blog (Chinese Only)

Carl S. Yestrau Jr.

unread,
Jun 1, 2012, 1:00:49 AM6/1/12
to python-...@googlegroups.com
Thumbs up Tornado crew!

Aleksey Silk

unread,
Jun 1, 2012, 3:35:48 AM6/1/12
to python-...@googlegroups.com
Nice! Like tornado very much :)

С уважением, Алексей Силк
With best regards, Aleksey Silk
 
skype - rootiks
 



2012/6/1 Carl S. Yestrau Jr. <ca...@featureblend.com>

Andrew Grigorev

unread,
Jun 1, 2012, 6:19:25 AM6/1/12
to python-...@googlegroups.com
Thanks!

01.06.2012 08:53, Ben Darnell написал:
--
Andrew

Dai Tianqi

unread,
Jun 1, 2012, 6:44:13 AM6/1/12
to python-...@googlegroups.com

Jason Huang

unread,
Jun 1, 2012, 3:47:53 PM6/1/12
to python-...@googlegroups.com
Thanks for your hard work!!

Jorge Escobar

unread,
Jun 1, 2012, 11:56:43 PM6/1/12
to python-...@googlegroups.com
Awesome Ben! Thanks so much for a great product!

Shane Spencer

unread,
Jun 2, 2012, 3:47:40 AM6/2/12
to python-...@googlegroups.com
Just great guys! Huge list of improvements! I tried to follow a lot
of the iostream bulk data threads for a while and I'm happy to see
they resulted in progress!

Gordon Radlein

unread,
Jun 2, 2012, 3:56:11 PM6/2/12
to python-...@googlegroups.com
Thanks for all the hard work Ben! These IOStream improvements are a drop in performance gain for my application.

Gang(Gary) Wu

unread,
Jun 3, 2012, 12:22:54 AM6/3/12
to python-...@googlegroups.com
Awesome Ben!

Meir Kriheli

unread,
Jun 3, 2012, 3:30:58 AM6/3/12
to python-...@googlegroups.com
On Fri, Jun 1, 2012 at 7:53 AM, Ben Darnell <b...@bendarnell.com> wrote:
We are pleased to announce the release of Tornado 2.3, available from
https://github.com/downloads/facebook/tornado/tornado-2.3.tar.gz

Release notes:
http://www.tornadoweb.org/documentation/releases/v2.3.0.html

Many thanks to everyone who contributed patches, bug reports, and
feedback that went into
this release!

-Ben




Thanks Ben (and all others helping).
 
Cheers




--

Reply all
Reply to author
Forward
0 new messages