Release 4.0
-------------------

This is the first stable (GA) release of Apache HttpAsyncClient 4.0. HttpAsyncClient is a library 
for asynchronous client-side HTTP communication built on top of HttpCore NIO transport. 
It is a complementary library to Apache HttpClient intended and optimized for special cases 
whereby ability to scale to many thousands of concurrent connections is more important than 
performance in terms of raw data throughput. 

HttpAsyncClient 4.0 is designed to have similar APIs as Apache HttpClient 4.3 and a comparable
feature set. In addition HttpAsyncClient provides full support for zero-copy file upload and 
download operations. It presently does not support transparent content decompression and automatic 
I/O error recovery. These features may be added in future releases.


Changelog:
-------------------

* [ HTTPASYNC-56] Fixed thread deadlock in DefaultClientExchangeHandlerImpl.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-57] HTTPS request execution via a HTTP proxy can cause an infinite loop.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-52] Proxy configuration set at the request level does not apply.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-51] Request producers do not get correctly reset if the server responds early 
  (out of sequence), which can cause entity enclosing requests to be malformed in case of 
  re-execution.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-45] CachingHttpAsyncClient to override Future returned by the backend.
  Contributed by James Leigh <james at 3roundstones dot com>


Release 4.0 Beta 4
-------------------

The 4.0 BETA4 release delivers significant performance improvements in request execution,
especially for short HTTP messages, and also re-aligns programming interfaces used by the library 
with HttpCore 4.3 and HttpClient 4.3 APIs. Configuration and preference APIs of HttpAsyncClient
are now consistent with those used by HttpClient 4.3.

Users of previous releases of HttpAsyncClient are advised to upgrade.

Changelog:

* [HTTPCLIENT-1353] 303 Redirects Should be Cacheable
  Contributed by James Leigh <james at 3roundstones dot com>

* Redesign of configuration and preference APIs. 
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Redesign of connection management APIs.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-34] HttpAsyncClient fails to re-start request execution if the opposite end 
  prematurely terminates persistent connection. 
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-28] PoolEntry's expiry information is never updated.
  Contributed by Daniel Kulp <dkulp at apache.org>



Release 4.0 Beta 3
-------------------

The 4.0 BETA3 is a maintenance release that picks up the latest bug fixes in the core components.

Changelog:

* Upgraded HttpCore to version 4.2.2

* [HTTPASYNC-26] OSGi bundle import fix.
  Contributed by Daniel Kulp <dkulp at apache.org>

* [HTTPASYNC-25] AsyncSchemeRegistry instance set in the execution context takes precedence over
  the default one.
  Contributed by Daniel Kulp <dkulp at apache.org> 

* Ported fix for HTTPCLIENT-1224
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.0 Beta 2
-------------------

The 4.0 BETA2 release fixes a number of non-critical issues found since release 4.0-beta1 and 
introduces basic support for HTTP/1.1 response caching. Please note that caching for streaming 
HTTP exchanges is currently not supported.

Users of previous releases of HttpAsyncClient are advised to upgrade.

Changelog:

* [HTTPASYNC-20] HTTP exchange can now be aborted with HttpUriRequest#abort().
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-17] Caching HttpAsyncClient facade.
  Contributed by Clinton Nielsen <clinton.h.nielsen at gmail.com>

* [HTTPASYNC-19] Fixed incorrect execution of message exchanges that span across multiple hosts 
  (for instance, in case of a request redirect).  
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-18] Fixed thread deadlock that could occur in the DefaultAsyncRequestDirector 
  in case of a runtime exception.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-15]: HttpAsyncClient hangs if connection leased from the pool gets immediately closed 
  by the opposite endpoint.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.0 Beta 1
-------------------

The 4.0 BETA1 release completes the application programming interface and the feature set 
of HttpAsyncClient and upgrades to the latest versions of core and client components 
(HttpCore 4.2-beta1 and HttpClient 4.2-beta1). As of this release HttpAsyncClient is expected
to be API stable.

Users of previous releases of HttpAsyncClient are advised to upgrade.

Changelog:

* [HTTPASYNC-11]: HttpAsyncClient fails to re-authenticate if connection is non-persistent.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-5]: Allow customized LineParser for asynchronous connections.
  Contributed by Oleg Kalnichevski <olegk at apache.org>



Release 4.0 Alpha 3
-------------------

The 4.0 ALPHA3 release largely completes the application programming interface and feature set 
of HttpAsyncClient. While the API may still change in the course of the ALPHA development phase, 
this is expected to be the last round of major API changes and the API is expected to be reasonably
stable as of this release.

We are kindly asking actual and prospective users of HttpAsyncClient to review its API, evaluate
its functionality and give us feedback while the 4.0 API is still not final. If no major flaws 
are discovered the 4.0 API is expected to be frozen with the next BETA release. 

Changelog:

* [HTTPASYNC-6]: Fixed NPE in the DefaultAsyncRequestDirector#responseCompleted method.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.0 Alpha 2
-------------------

The second ALPHA release of HttpAsyncClient 4.0 comes with a number of important improvements and
enhancements. As of this version HttpAsyncClient fully supports HTTP state management (cookies) 
and HTTP authentication (basic, digest, NTLM, spnego/kerberos). Connection management classes have 
been thoroughly reworked and improved. This version also improves support for zero copy file 
upload / download operations.

The HttpAsyncClient 4.0 API is still considered experimental and is expected to change 
in the course of the ALPHA development phase.

Please note that currently HttpAsyncClient DOES NOT support

* Stateful HTTP connections


Changelog:

* [HTTPASYNC-3]: Fixed incorrect handling of expired I/O sessions by SessionPool.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.0 Alpha 1
-------------------

HttpAsyncClient is a library for asynchronous client-side HTTP communication built on HttpCore NIO
and HttpClient components.

HttpAsyncClient is NOT meant to replace or supersede Apache HttpClient. It is a complementary
library to Apache HttpClient intended for special cases where ability to handle a great number of
concurrent connections is more important than performance in terms of a raw data throughput or
for those users who prefer event-driven APIs.

The HttpAsyncClient 4.0 API is still very experimental and is expected to change in the course
of the ALPHA development phase.

Please note that currently HttpAsyncClient DOES NOT support

* HTTP state management (cookies)
* HTTP authentication
* Stateful HTTP connections
