[Catalyst] Catalyst 5.50 RC1

Andy Grundman andy at hybridized.org
Mon Oct 10 17:13:47 CEST 2005


5.5 is almost here!  The first release candidate has been released to 
CPAN today as version 5.49_01.  The new Apache engine has also been 
released separately, as version 0.99.

If they're not yet at your local CPAN mirror, you can grab the files 
from ftp://pause.perl.org/incoming/

We'd like to ask that you please take a bit of time to download this 
version and give it a test if you have any applications running on a 
current version of Catalyst.

Also, I'd strongly recommend that all plugin authors give their plugins 
a test, as most internal changes we've made will only affect plugins. 
Specifically, if your plugin uses the prepare_body or finalize_body 
methods, you may need to make some changes.

Now, on to the list of changes and new features. :)

* Added support for calling forward with arguments in the path.

   Instead of using
     $c->forward( '/foo/bar', [ qw/arg1 arg2/ ] );
   you can now write this instead
     $c->forward( '/foo/bar/arg1/arg2' );

* Made $c->req->uri and $c->req->base into URI objects.

   The only incompatible change to the API comes in the form of URI 
objects for both the req->uri and req->base methods.  This allows for 
more flexibility in retrieving pieces of the URI, such as 
$c->req->uri->query to get the original untouched query string, and 
$c->req->uri->host to get the server hostname.

* Parameters with multiple values (?a=1&a=2) now display properly in the 
debug output.

* Semi-colon separators in query strings now work properly.

* Added support for running as a backend server behind a frontend proxy 
so req->base and req->address are set properly.  See the section 'Proxy 
Support' in the Catalyst.pm docs for more info.

* Added an 'abort' method to the Log api, so that you can kill logging 
for a whole request.  This is most useful in the latest version of 
Static::Simple, where logging is now disabled by default for static files.

* Added $c->uri_for method to simplify URI handling.

   This method enables you to construct correct URIs without worrying 
about whether or not your application is running at the root or another 
base location.  Note that this method returns a URI object.  For 
example, if you are running at http://localhost/base:
   # Absolute paths
     $c->req->uri_for( '/foo/bar' ); # http://localhost/base/foo/bar
   # Relative paths (assuming current page is http://localhost/base/page)
     $c->req->uri_for( 'subpage'  ); # http://localhost/base/page/subpage
   # Dot paths
     $c->req->uri_for( '../page2' ); # http://localhost/base/page2

* Reimplemented core engines, all are now CGI based for better test 
coverage and maintainability.  The Apache engines have been separated 
out into their own package, Catalyst::Engine::Apache.

* Added fork support to built in test server.

   This feature is disabled by default, but may be enabled by passing 
the -f switch to myapp_server.pl.  This will cause the server to fork a 
new process for each incoming request, to avoid long-running tasks that 
may block the server.

* Fixed all memory leaks.

* Thread-related bug fixes and tests.  We now believe the Catalyst 
core to be thread-safe.  Of course, take care if running in a threaded 
environment such as Apache 2 mpm_worker that all other modules you are 
using are thread-safe.

* Added streaming IO support through $c->req->read() and $c->res->write()

   It's now possible to stream data to and from Catalyst applications. 
One example of streaming can be seen in the small mp3 server located in 
svn at examples/Streaming or at 
http://www.hybridized.org/catalyst/Streaming-0.01.tar.gz

-Andy



More information about the Catalyst mailing list