2006-01-10:
    * CherryPy-2.1.1 released
    * Patch for serious security flaw in staticfilter

2005-10-21:
    * CherryPy-2.1.0 released
    * Changed the default value for sessionFilter.locking from "implicit" to "explicit" (remi)

2005-10-06:
    * CherryPy-2.1.0-rc2 released
    * Bug in sessionfilter fixed

2005-09-15:
    * CherryPy-2.1.0-rc1 released

2005-09-14:
    * The new HTTP error mechanism has been completely rewritten (see tutorial
    10)
    
2005-09-10:
    * New session implementation. See the CherryPy book for docs (remi)
    * New server.maxRequestBodySize and maxRequestHeaderSize options.
    *   See the CherryPy book for docs (remi)

2005-09-04:
    * Generalized mechanism for handling HTTP errors
    * raising a HTTPStatusError will automatically send an appropriate error page
    * All errors in production mode will cause CP to respond with a http error

2005-08-17:
    * The session filter has been simplified, the mechanism for creating multiple sessions has been removed. However .. (mikerobi)
    * The session filter can placed inside a _cpFilterList to provide an alternative to the default session.            (mikerobi)
    
2005-08-09:
    * The config section [global] is now distinct from, and the parent of, [/]. (fumanchu)
    * cherrypy.request.path is now parsed and set before onStartResource filter methods are called. (fumanchu)
    * Absolute Request-URI's are now acceptable, and are converted to relative paths. (fumanchu)
    * A Request-URI of "*" now maps to the [global] config section, and to cherrypy.root._global. (fumanchu)

2005-07-12:
    * CherryPy-2.1.0-beta released. Check http://www.cherrypy.org/wiki/WhatsNewIn21 for instructions on how to upgrade from 2.0. (remi)

2005-07-09:
    * Request entities that are not form params now get stuck in cherrypy.request.body (as a temp file object). (fumanchu)
    * cherrypy.config.update can be called with an the keyword override=False to prevent values from being overwritten.
2005-07-06:
    * Added code-coverage tools. (fumanchu)

2005-06-25:
    * BACKWARD INCOMPATIBILITY: Removed cpg module, renamed _cpserver to server, _cpconfig to config, cperror to _cperror. See http://www.cherrypy.org/wiki/PackageLayout21 (fumanchu)

2005-06-21:
    * New generic HTTPRedirect exception for 3xx responses. (fumanchu)

2005-06-17:
    * Handle all HTTP methods. (fumanchu)

2005-06-16:
    * First check-in of the documentation project (lawouach)

2005-06-11:
    * getSpecialFunction renamed getSpecialAttribute (mikerobi)

2005-06-10:
    * New test suite (no forks, no exec). (fumanchu)
    * New lib/profiler module. (fumanchu)
    * New session filter (mikerobi)
    * New config.getAll function (mikerobi)

2005-06-09:
    * New sessionauthenticatefilter. This replace CSAuthenticate implementation (based on aspect). (Remi)
    * New nsgmlsfilter. Provides XHTML validation (you need NSGMLS installed). (Remi)

2005-06-02:
    * New WSGI server. (Peter)

2005-06-01:
    * Core (_cphttptools) was completely rewritten to use iterators throughout. (fumanchu)
    * HTTP server has been decoupled from _cpserver. (fumanchu)
    * New WSGI interface to the builtin http server; WSGI is now the default. (fumanchu)
    * Moved session handling into a filter. (fumanchu)
    * New testCore.py for testing basic request and error handling. (fumanchu)
    * autoreload disabled if cpg.server.start is called with initOnly=True. (fumanchu)
    * BACKWARD INCOMPATIBILITY: filters changed, see http://www.cherrypy.org/wiki/Filters21. (fumanchu)

2005-05-20:
    * BACKWARD INCOMPATIBILITY: New config system, see http://www.cherrypy.org/wiki/ConfigSystem21 (Remi)
    * Fixed small bug in httptools.redirect (Remi)
    * Allow methods to return recursive generators (Remi)
    * Methods can now return file objects which are red in 64kb chunks. (Mike)

2005-04-25:
    * CherryPy-2.0-final released
    * Added tests about static content and httptools.redirect (Remi)
    * Handle %20 (and others) in static content - ticket #104 (Remi)
    * If y is a static dir make y/a?b try and serve a file named a?b (Dan)
    * Pass threadIndex to onStartThreadList functions - ticket #91 (Remi)
    * Renamed "configDict" into "configMap" for consistency - ticket  #82 (Remi)
    * Dots in requests path are now replaced by underscores  - ticket #87 (Remi)
    * Improved WSGI support and added example (seems to work OK) (Peter, Remi)
    * Added DecodingFilter (Remi)
    * Added form module (port from CP1 Form.cpy) (Remi)
    * Improved the way static files are being served (Remi)

2004-12-29:
    * CherryPY-2.0-beta released
    * xmlrpcfilter added (Remco)
    * cpg.response.body is now always an iterable type - ticket #59 (Carlos)
    * Allowed default session functions to be accessed by other modules - ticket #56 (Remi)
    * Added cpg.threadData - ticket #53 (Remi)
    * Added request.requestLine - ticket #52 (Remi)
    * logFile config option is now honored - ticket #51 (Remi)
    * Added cpg.request.remoteAddr and cpg.request.remoteHost - ticket #34 (Eurleif) 
    * Improved baseurlfilter to handle x-forwarded-host - ticket #49 (Kender)
    * Made object mapping algorithm iterative instead of recursive - ticket #48 (Jesir Vargas)
    * Improved testing framework (Remco)
    * Check that response is a string *after* filters have been applied (ticket #28) (Remi)
    * Removed all XML-RPC references from the core: it is now a filter (ticket #30) (Remi)
    * Removed "response encoding" from the core: it is now in a filter (ticket #31) (Remi)
    * Implemented filters and a couple of sample filters (Remi)
    * Fixed "cleanUpOldSessions" bug (ticket #12) (Remi)
    * "file" storage type for sessions now works fine (Remi)
    * Ticket #6: If a response is unicode, it gets encoded automatically. Encoding is specified in the config file unser [server].encoding (the default is UTF-8). (Remi)
    * Added more unittest (Remi)
    * Fixed file upload bug (Remi)

2004-10-13:
    * First alpha release of CherryPy-2 (Remi)

