Hey Catalyst Developers! New version of Catalyst in the wild, check it out over at the usual place: https://metacpan.org/source/JJNAPIORK/Catalyst-Runtime-5.90040
There's some bigger changes in this release, here's the highlights:
Unicode support baked in. Previously Catalyst required you to install and use Catalyst::Plugin::Unicode::Encoding to get proper unicode support, now you just need to set the configuration flag "encoding => 'UTF-8'". There's a backcompat shim in place for those of you already using the plugin, so be sure to look at "https://metacpan.org/source/JJNAPIORK/Catalyst-Runtime-5.90040/lib/Catalyst/Upgrading.pod" and consider taking the few minor steps needed so that in the future when the compatibility shim is removed we won't bust your code.
Stricter checking of your action subroutine attributes, so that insane setups now let you know. This will help us start to move toward better type checking in attributes instead of the random bag of whatever we currently have.
Support for async I/O and event loops! New attributes on Catalyst::Request that let you access a writer filehandle (useful for streaming and delayed writes, particularly when using an event loop server like Twiggy) and a raw IO filehandle (again useful in an event loop when you want to jailbreak out of the normal HTTP request response cycle, such as when you want to write cometd, socket.io or websockets applications).
Here's an example application on Github that has examples for streaming, websockets echo server and a basic websockets chat server, all running under Catalyst using Twiggy and Anyevent: "https://github.com/jjn1056/Perl-Catalyst-AsyncExample" There's also no reason Catalyst could not run under other event loops with these new features but currently I have not provided examples.
Also there's a handful of documentation and dependency updates, just to keep things moving along.
We think this is a pretty big release, particularly the i/o and write filehandle stuff, which supports async and generally better ability to control how Catalyst request / response is working for you, down to the action level. Supporting modern web development practices such as websockets / socket.io and related long connection techniques has been a long for ask, and now you have it!
Look forward to see more about this, more examples and more discussion about were this is going in the future. So, get out there and use this stuff, and lets figure out how to make it better!
See the full changelog in the normal place: https://metacpan.org/source/JJNAPIORK/Catalyst-Runtime-5.90040/Changes and also don't forget to look at https://metacpan.org/source/JJNAPIORK/Catalyst-Runtime-5.90040/lib/Catalyst/Upgrading.pod to make sure you can make the move and take advantage of these awesome new features!
Stay tuned in for a retrospective on the SicilianButtercup development cycle as well as setting some goals for the next (unnamed as of yet) development cycle which will cover the start of the summer!