# What’s new in Tornado 4.4

## Jul 15, 2016

### General

- Tornado now requires Python 2.7 or 3.3+; versions 2.6 and 3.2 are no longer supported. Pypy3 is still supported even though its latest release is mainly based on Python 3.2.
- The monotonic package is now supported as an alternative to Monotime for monotonic clock support on Python 2.

### `tornado.curl_httpclient`

- Failures in `_curl_setup_request` no longer cause the `max_clients` pool to be exhausted.
- Non-ascii header values are now handled correctly.

### `tornado.gen`

- `with_timeout` now accepts any yieldable object (except `YieldPoint`), not just `tornado.concurrent.Future`.

### `tornado.httpclient`

- The errors raised by timeouts now indicate what state the request was in; the error message is no longer simply “599 Timeout”.
- Calling `repr` on a `tornado.httpclient.HTTPError` no longer raises an error.

### `tornado.httpserver`

- Int-like enums (including `http.HTTPStatus`) can now be used as status codes.
- Responses with status code `204 No Content` no longer emit a `Content-Length: 0` header.

### `tornado.ioloop`

- Improved performance when there are large numbers of active timeouts.

### `tornado.netutil`

- All included `Resolver` implementations raise `IOError` (or a subclass) for any resolution failure.

### `tornado.options`

- Options can now be modified with subscript syntax in addition to attribute syntax.
- The special variable `__file__` is now available inside config files.

### `tornado.simple_httpclient`

- HTTP/1.0 (not 1.1) responses without a `Content-Length` header now work correctly.

### `tornado.tcpserver`

- `TCPServer.bind` now accepts a `reuse_port` argument.

### `tornado.testing`

- Test sockets now always use `127.0.0.1` instead of `localhost`. This avoids conflicts when the automatically-assigned port is available on IPv4 but not IPv6, or in unusual network configurations when `localhost` has multiple IP addresses.

### `tornado.web`

- `image/svg+xml` is now on the list of compressible mime types.
- Fixed an error on Python 3 when compression is used with multiple `Vary` headers.

### `tornado.websocket`

- `WebSocketHandler.__init__` now uses `super`, which improves support for multiple inheritance.