Howdy Catalyst Hackers and Users!

I'm pleased to announce that the fifth development release of the next stable version of Perl Catalyst is on CPAN now. Follows is discussion. Please note this summary aggregates several previous development versions as well.

So we are moving towards the end of the first development cycle for Catalyst in 2014, codenamed "Runner" (for why see here) and I think we are making great progress in attaining all our goals. Let's review the quest list (for original announcement, see here):

Quest Status

Migrate some custom Catalyst code to Plack::Middleware

90%+ Complete

This was a task to start migrating core Catalyst functionality into Plack middleware when existing Plack middleware existed to fit the need, or the creation of such middleware was clearly acheiveable and could serve a broad use beyond the Catalyst community. This task is basically complete, I'm leaving it open for a bit in case we notice any other easy to migrate code, and also I want to ponder the best way to expose the interface to managing middleware (Rails has a MiddlewareStack system, for example). Right now we just have a simple Array and that might suffice for the first stable release.

Big shout out to Upasana, who previously has delivered structured exceptions to the Moose community, for stepping in and creating two new Plack Middlware distributions towards this quest. And I also want to say that while working on some of that middleware we got really engaged with the Plack community and that lead to some tweaking of the Plack docs which is fantastic and exactly what I had hoped we'd see as Catalyst starts to flex its PSGI pedigree.

The following middleware now is used in Catalyst in replacement of similar code scattered throughout the codebaase:

Plack::Middleware::RemoveRedundantBody

Plack::Middleware::FixMissingBodyInRedirect

Plack::Middleware::ContentLength

Plack::Middleware::MethodOverride

Plack::Middleware::Head

Registering Middleware and Datahandlers is broken when using Configloader

100% complete

This was a bug reported that prevented one from using configuration via the popular ConfigLoader plugin to setup middleware and datahandles.

Support Plack::Middleware::HTTPExceptions

100% Complete

This allows one to throw catchable exceptions that can be converted into PSGI responses. Useful for when you need to return a PSGI response from deep inside your code. It also sets the stage for later moving some of the inlined code around displaying error pages into stand alone applications (think 'make it easy to provide alternative error pages')

Fix reported issue with using Plack Middleware

100% Complete

Improved the error you get if you specify middleware that doesn't exist.

Complete the removal of Regexp DispatchTypes

100% Complete

If you are still using Regexp in your controllers, you now need to install the stand alone Regexp distribution. This will be supported for the time being.

Fix how Catalyst handles a file handle for response body

100% Complete

In the past, Catalyst would read and stream any filehandles set in the response body. Now, if you set a filehandle this will be passed directly to the Plack handler. So if you are using a non blocking server, it will stream in a non blocking manner.

$c->config->{name} should has a sensible default

Incomplete

Small task, great for someone that wants to get started contributing to Catalyst but is afraid!

Fix ModPerl Support

Incomplete

Carried over from the previous development cycle, Hamburg. This is a quest to restore the questionable feature of accessing the apache request object via context, but at the same time move support for using your application object as a mod Perl handler to a plugin so that we can more easily deprecate the feature.

Final Thoughts

Development for Perl Catalyst "Runner" is starting to wind down. Its pretty important that you really check this out and kick the tires because there's some deep changes here, particularly around the use of middleware and the changes to how Catalyst passes a response to your server. You should also review the change list and the Catalyst::Delta file for a list of proposed deprecations that will go into effect for Version 6, which I hope we are starting to aim for sometime in the next release or two. So check it out because although we want to enable the next generation of great Catalyst applications, I really don't want to leave anyone with an important existing application behind. So take a look, read the docs and the proposed changes, view the diffs and make your voice heard...

More Information:

CPAN: Catalyst

Github: https://github.com/perl-catalyst/

Code Repository: catagits@git.shadowcat.co.uk:Catalyst-Runtime.git

Questhub: http://questhub.io/realm/perl/explore/latest/tag/catalyst

Mailing List Info: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst