================
* Improved url parsing in ``urllib3.util.parse_url`` (properly parse '' in
username, and blank ports like 'hostname:').
* New ``urllib3.connection`` module which contains all the HTTPConnection
objects.
* Several ``urllib3.util.Timeout``-related fixes. Also changed constructor
signature to a more sensible order. [Backwards incompatible]
(Issues 252, 262, 263)
* Use ``backports.ssl_match_hostname`` if it's installed. (Issue 274)
* Added ``.tell()`` method to ``urllib3.response.HTTPResponse`` which
returns the number of bytes read so far. (Issue 277)
* Support for platforms without threading. (Issue 289)
* Expand default-port comparison in ``HTTPConnectionPool.is_same_host``
to allow a pool with no specified port to be considered equal to to an
HTTP/HTTPS url with port 80/443 explicitly provided. (Issue 305)
* Improved default SSL/TLS settings to avoid vulnerabilities.
(Issue 309)
* Fixed ``urllib3.poolmanager.ProxyManager`` not retrying on connect errors.
(Issue 310)
* Disable Nagle's Algorithm on the socket for non-proxies. A subset of requests
will send the entire HTTP request ~200 milliseconds faster; however, some of
the resulting TCP packets will be smaller. (Issue 254)
* Increased maximum number of SubjectAltNames in ``urllib3.contrib.pyopenssl``
from the default 64 to 1024 in a single certificate. (Issue 318)
* Headers are now passed and stored as a custom
``urllib3.collections_.HTTPHeaderDict`` object rather than a plain ``dict``.
(Issue 329, 333)
* Headers no longer lose their case on Python 3. (Issue 236)
* ``urllib3.contrib.pyopenssl`` now uses the operating system's default CA
certificates on inject. (Issue 332)
* Requests with ``retries=False`` will immediately raise any exceptions without
wrapping them in ``MaxRetryError``. (Issue 348)
* Fixed open socket leak with SSL-related failures. (Issue 344, 348)