[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