2011-05-19    v1.047
[Bug Fixes]
  - $Response->Expires("30M") wasn't documented.  Now it is.
  - $Response->Expires wasn't working properly.  Now it is. (Always ended up with pre-epoch expiration times).

2011-05-03    v1.046
[Bug Fixes]
  - $Response->Redirect(...) wasn't returning '301' - now it does.

2011-05-03    v1.045
[Bug Fixes]
  - Actually it turned out that setting $Session->is_read_only(1) *DID* prevent
    $Session->save() from working.  This is now fixed to match the documentation.

2011-05-01    v1.044

[Bug Fixes]
  - ASP4::ModPerl now does the Right Thing when a non-200 response is encountered.
    - 500 response does not result in an "encoding error" in firefox.
    - 200 (or 0 response) does the right thing.
    - non-200 (and non-500) response does the right thing (eg: 401)
  - ASP4::SessionStateManager now checks $s->is_changed *before* checking $s->{__lastMod} date
    before deciding whether is should persist its changes in ->save().

[New Features]
  - $Session->is_read_only(1) is new.  Setting it to a true value (eg: 1) will prevent
    the default behavior of calling $Session->save() at the end of each successful request.

2011-04-08    v1.043
  - Documentation overhaul.

2011-03-23    v1.042
  - Fixed sporadic error in master pages that looks like this:
    Can't call method "Write" on an undefined value at /tmp/PAGE_CACHE/BStat/_masters_global_asp.pm line 1.
  - Apparently $s->init_asp_objects($context) was not getting called before the 
    master page's run() method was called, resulting in a call to $Response->Write(...)
    before $Response had been initialized.

2010-11-11    v1.041
  - ASP4::UserAgent calls all cleanup handlers registered via $Server->RegisterCleanup(sub { }, @args)
    at the end of each request, not when the ASP4::Mock::Pool object's DESTROY method is called.
    This fixes a condition which caused conflict when a Class::DBI::Lite ORM is
    used and the ASP4 application is executed via the `asp4` helper script.

2010-10-25    v1.040
  - 1.039 introduced a bug that could cause session-id conflicts in the asp_sessions table.
  - This release fixes that bug.

2010-10-25    v1.039
  - Session expiration now happens exclusively on the server, not as the 
    result of an expiring session cookie.

2010-10-21    v1.038
  - Another stab at getting http response codes right for errors.

2010-09-25    v1.037
  - Added a couple tweaks here and there to make ASP4 run on Windows a little easier:
    * $Config->web->page_cache_root now does the Right Thing on linux & win32.
    * $Config->web->page_cache_root is automatically created if it does not exist.

2010-09-21    v1.036
  - Added ASP4::StaticHandler to process requests for static files - like images, css, etc.

2010-09-17    v1.035
  - It turns out that if you close the client socket, some browsers complain (Chrome).
    Upgrade recommended.

2010-09-17    v1.034
  - Non-2xx responses are more returned more correctly, albeit with empty bodies.
  - HTTPHandler now caches the @ISA tree in RAM, offering a slight performance boost.
  - Added missing '$r->headers_in' method to ASP4::Mock::RequestRec.

2010-05-26    v1.033
  - Fixed more issues related to running multiple web applications under different
    VirutalHosts on the same server.  This time related to how Filters and Handlers
    are cached - now not only by URL but also by $ENV{DOCUMENT_ROOT}.

2010-05-20    v1.032
  - Fixed several issues related to running multiple web applications under different
    VirtualHosts on the same server.

2010-05-19    v1.031
  - Migrated from Ima::DBI to Ima::DBI::Contextual.

2010-05-18    v1.030
  - $ENV{HTTP_HOST} is set to $r->hostname or $ENV{DOCUMENT_ROOT} in ASP4::ModPerl and ASP4::UserAgent, respectively.

2010-04-18    v1.029
  - The document root was not always set properly in some very, very strange
    circumstances.
  - Upgrade recommended.

2010-04-18    v1.028
  - $Request->Reroute($uri) no longer changes $ENV{REQUEST_URI} to $uri.

2010-04-15    v1.027
  - ASP4::Request was not properly URLDecoding parameters.  Now it does.

2010-04-13    v1.026
  - Now both POST'ed and GET'ed parameters are added to $Form.  This means that if
    you...
    <form action="/page/?foo=abc" method="post"><input name="bar" value="123" /></form>
    ...both foo=abc and bar=123 will be in $Form.  Before this update, only bar=123 would
    be there, and foo=abc would be lost.

2010-04-06    v1.025
  - If Router::Generic is installed, ASP4::ConfigNode::Web will create $Config->web->router
    based on the "routes" segment of asp4-config.json.
  - No documentation about this yet.

2010-03-22    v1.024
  - $Request->Reroute() with additional querystring parameters was not adding
    those extra parameters to $Form.  Now it does.

2010-03-08    v1.023
  - ASP4::HTTPContext now checks to see if any RequestFilters match a uri before
    returning a 404.  This is helpful for SEO optimizations.
  - New feature: $Request->Reroute("/new-uri/?foo=bar")
    * Also very useful for SEO.

2010-03-08    v1.022
  - asphelper's final instructions are now more clear and concise.
  - Fixes a bug that caused active sessions to timeout as though inactive simply
    because they were not changed before the timeout occurred.  Now, $Session->save()
    checks to see if it's been more than 60 seconds since the last time the __lastMod
    was changed - and if it has been more than 60 seconds, the session is saved
    and the __lastMod value is updated to time() - thus preventing expiry of 
    active sessions.

2010-03-08    v1.021
  - Removed a warning that popped up now and then about the use of an uninitialized value.
  - Added a more informative "Yay you're finished!" message after running asphelper.

2010-03-04    v1.020
  - Now asphelper will output sbin/ddl.sql, which contains the structure of the 
    asp_sessions database table.  This is a handy place to start describing the
    database structure of a web application.
  - If $Config->web->data_connections->session->session_timeout is set to '*' then
    the session lasts as long as the browser keeps the cookie around.
  - 20% performance increase by using Cwd::fastcwd() instead of Cwd::cwd() and a
    few other minor tweaks.

2010-03-02    v1.019
  - Fixed a bug in asphelper that caused some problems creating a skeleton website.

2010-03-01    v1.018
  - Updated asphelper script so that the POD on CPAN is not contaminated with POD
    from within one of the modules that asphelper generates.
  - Now asphelper will not create a Class::DBI::Lite model class unless 
    Class::DBI::Lite is installed.

2010-03-01    v1.017
  - Updated asphelper script to only accept options on the command-line, like "normal" scripts.

2010-02-28    v1.016
  - A vestigial "use encoding 'utf8'" was removed from ASP4::Server.
  - It was causing Apache to segfault on ubuntu 9.10.

2010-02-19    v1.015
  - Hostnames like http://myapplication/ were not setting session cookies properly.
  - $Config->data_connections->session->cookie_domain should set to "*" in these cases.
  - $Response->SetCookie accepts the "*" value for domain also.
  - The result is that no "domain=xyz" attribute is given to these cookies.

2010-02-18    v1.014
  - $Response->ContentType now functions correctly.
  - Upgrade mandatory!

2010-02-18    v1.013
  - ASP4::HandlerResolver was not properly remembering timestamps on handler files.
    This resulted in unnecessary reloads of handlers that had not been changed.

2010-02-18    v1.012
  - MANIFEST was missing a few files that caused tests to fail.

2010-02-17    v1.011
  ! Upgrade Recommended !
  - $Response->SetCookie and $Response->ContentType were not functioning properly.
  - Added new method $Response->SetHeader.

2010-02-10    v1.010
  ! UPGRADE *SERIOUSLY* RECOMMENDED !
  - In an environment with multiple VirtualHosts running ASP4 web applications,
    ASP4::HandlerResolver's %HandlerCache and %FileTimes hashes were shared between
    all VirtualHosts.  This means that if you had 2 web apps (Foo and Bar) then
    "/index.asp" on "Foo" might get handled by "Bar::_index_asp" or vice versa.

2010-02-08    v1.009
  ! Upgrade Recommended !
  - ASP4::ModPerl sets $ENV{DOCUMENT_ROOT} = $r->document_root before doing 
    anything else.
  - The scaffold website output by 'asphelper' had some minor bugs:
      * email was sometimes referred to as email_address
      * The error message for the 'message' field was displaying the wrong error.

2010-02-07    v1.008
  - Multi-value form parameters (eg 3 checkboxes with the same name) will now
    *correctly* appear as an arrayref in $Form, instead of 3 values joined with
    a null byte.

2010-01-31    v1.007
  - $FileUpload->SaveAs("/path/to/file.txt") will now create "/path" and "/path/to"
    before writing "/path/to/file.txt".

2010-01-27    v1.006
  - Sometimes changes in MasterPages are not immediately reflected in child pages.
    This release attempts to correct this bug.

2010-01-25    v1.005
  - Request Filters were not always matching properly
    because of a regexp bug in ASP4::FilterResolver.

2010-01-22    v1.004
  - $ENV{REQUEST_URI} was not getting set properly - this is now fixed.

2009-12-22    v1.003
  - $ENV{HTTP_REFERER} can be set and preserved properly.
  - conf/asp4-config.json will be reloaded if it is modified.  This means that
    the server does not have to be restarted for changes to asp4-config.json 
    to take effect.
  - Added ASP4::TransHandler

2009-12-17    v1.002
  - %ENV is no longer clobbered by ASP4::UserAgent.

2009-12-16    v1.001
  - Fixed a bug that prevented ASP4 for reliably detecting when an ASP script
    had been updated.

2009-12-15    v1.000
  - Ready for production use.

2009-12-14    v0.001_03 .. v0.001_05
  - Just getting the Makefile.PL prerequisites correct.

2009-12-13    v0.001_02
  - Added POD.

2009-12-13    v0.001_01
  * Initial release