Application Development using Catalyst, Moose, Plack, DBIx::Class and other Modern Perl software!

12/19/2013

Perl Catalyst "Runner" New Development Branch Now Open!

Good Morning Catalyst Stakeholders!

Yesterday we released a point update to the 5.9005x series which fixed a critical bug in how Catalyst::Plugin::ConfigLoader interacted with installing Plack middleware via configuration. If that was giving you trouble, it should now be fixed.

We also documented and tested a previously existing feature that allows you to setup middleware via the 'setup_middleware' class method. For those of you that found it odd to use configuration to install you Plack middleware, you can now just do:

The release also had some improved docs about how Catalyst works when you set the response body to a filehandle, better errors when your middleware configuration craps out and some additional documentation typo fixes.

Now that the 5.9005x series seems to be settling down I think its time to kick off the next development cycle. So I am please to announce that the repository for Perl Catalyst "Runner" is now open:

Which removes the long deprecated Regexp dispatching types. As you might recall from last year we moved Regexp out of Catalyst core and into a standalone repository, but to give all you laggards a bit of extra grace, we included that external distribution in the Catalyst dependency list. That was nine months or so ago. So if you've not taken the trouble of adding the standalone Regexp distribution:

To your dependency list (or better yet, removed the regexp dispatching) you really need to do so now. I didn't make a huge questlist this go around and I expect to see the next stable version of Catalyst sometime late February 2014.

A quick recap of the open quests:

Fix ModPerl Support

This was targeted for a previous release but got held up because I had issues creating a sane modperl 1/2 testing enviroment. If anyone with skills here wants to step up, I'd love to know.

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

A great, easy job for someone that wants to get started contributing to Catalyst.

Fix how Catalyst handles a file handle for response body

Right now if you assign a filehandle to response->body, Catalyst will automatically 'unroll' it and stream chunks. However it would be much better if we allowed the underlying PSGI handler to do this job, since the code can be more specific to the type of webserver. For example, if you are using an event loop and Twiggy, it will stream a filehandle in a non blocking manner. This change will remove that code from Catalyst.

Support Plack::Middleware::HTTPExceptions

This is another quest in the pursuit of making Catalyst a better container for any Plack application you may be mounting. Right now Catalyst catches and handles all types of exceptions. This will make it so that Catalyst will rethrow exception objects that meet limited criteria. It will also allow you to use tools like:

Undocumented but under consideration would be to expose some features of Catalyst into $env for interactivity with other PSGI applications running in the same process. For example, the stash could be moved to $env->{'catalyst.stash'} and so forth. We need to tread carefully here, but this would be another step in the direction of moving Catalyst deeper into the Plack ecosystem.