Axis2-C (0.96)
   * Major Memory leak fixes
   * Many Bug Fixes
   * Improvement to REST processing
   * Improvement to SOAP-Fault processing
   * Improvement to mod_axis2 library (plugged with apr pools)
   * Visual Studio 7.0 project
-- Axis2-C team <axis-c-dev@ws.apache.org> Thu, 19 December  2006 
	
Axis2-C (0.95)
  * Major Memory leak fixes
  * Many Bug Fixes
  * Improved Documentation
-- Axis2-C team <axis-c-dev@ws.apache.org> Thu, 26 October  2006 

Axis2-C (0.94)
  * Guththila pull parser support
  * WSDL2C code generation tool
  * TCP Monitor - C implementation
  * Major Memory leak fixes
  * Fixes to code generation with Java Tool
  * Many Bug Fixes
	
-- Axis2-C team <axis-c-dev@ws.apache.org>  Tue, 3 October  2006 
	
Axis2-C (0.93)
  * REST support for HTTP GET case
  * XML Schema implementation
  * Woden/C implementation that supports both WSDL 1.1 and WSDL 2.0
  * Dynamic client invocation (given a WSDL, consume services dynamically)
  * Numerous improvements to API and API documentation
  * Many bug fixes, especially, many paths of execution previously untouched were tested along with Sandesha2/C  implementation

-- Axis2-C team <axis-c-dev@ws.apache.org>  Thu, 31 August  2006 
	
Axis2-C (0.92)
  * Completed MTOM implementation with multiple attachment support and non-optimize  
  * Completed service client API with send robust and fire and forget
  * Added "message" to description hierarchy
  * Archive based deployment Model (for services and modules)
  * Code generation for WSDL using Java WSDL2Code tool
  * ADB support (with Java WSDL2C tool)
  * WS-Security usernameToken support
  * Initial implementation of the XML Schema parser (To be used in WSDL parser and REST support)
  * Initial implementation of WSDL parser (To be used in dynamic invocation)
  * Changed double pointer environment parameters into pointer parameters
  to improve efficiency

 -- Axis2-C team <axis-c-dev@ws.apache.org>  Fri, 16 June 2006 
	
Axis2-C (0.91)

  * Full Addressing 1.0 support
  * Improved fault handling model
  * SSL client transport
  * MTOM implementation
  * Implementation of easy to use service client and operation client APIs for client side programming
  * REST support (POST case)
  * Module version support
  * Service groups
  * Numerous bug fixes since last release

 -- Axis2-C team <axis-c-dev@ws.apache.org>  Mon, 15 May 2006 


Axis2-C (0.90)

  * Minimal memory leaks
  * Apache2 module working in Windows
  * More samples and tests
  * WSDL Object Model built based on the proposed WSDL 2.0 Component model
  * Dynamic Invocation
  * Numerous bug fixes since last release

 -- Axis2-C team <axis-c-dev@ws.apache.org>  Fri, 31 Mar 2006 


Axis2-C (M0.5)

  * Improving code quality by fixing memory leaks and reviewing the code
  * Apache2 integration
  * More samples and tests
  * Initial documentation(User guide, Developer Guide and Installation Guide)
  * Numerous bug fixes since last release

 -- Axis2-C team <axis-c-dev@ws.apache.org>  Fri, 10 Mar 2006 


Axis2-C (M0.4)

  * Threading support and threaded simple axis server
  * Module loading support
  * Addressing module and addressing based dispatching
  * HTTP chunking support
  * Improved logging mechanism
  * Ability to build and run on Windows platform

 -- Axis2-C team <axis-c-dev@ws.apache.org>  Fri, 17 Feb 2006


Axis2-C (M0.3)

  * Core engine in place with deployment, description and context hiarachies and http transport support
  * Soap processing support
  * Simple http server
  * Client API implementation
  * Couple of working service and client samples

 -- Axis2-C team <axis-c-dev@ws.apache.org>  Thu, 02 Feb 2006 


Axis2-C (M0.2)

  * Improved OM module
  * libxml2 parser support
  * PHP binding for OM module
  * Some test cases for PHP binding
  * Many memory leaks fixes

 -- Axis2-C team <axis-c-dev@ws.apache.org>  Thu, 08 Dec 2005


Axis2-C (M0.1)

  * Initial release

  * OM module
  * Guththila pull parser support
  * libxml2 parser support(only reader is supported as of now)
  * doxygen documentation support
  * A sample demonstrating how to use OM

 -- Axis2-C team <axis-c-dev@ws.apache.org>  Fri, 25 Nov 2005
