This week we released Perl Catalyst 5.90085, the fifth installment in the stable 5.9008x branch. This release continues to focus on providing workarounds for people using unusual or non standard encodings, and are having trouble with all the UTF-8 normalization that Catalyst now does. 5.900.85 added three new configuration settings that allows one to control how the query parameters of the request URI are decoded (or if they are at all).
It also introduces a change in the logic around action chaining so that when there is more than one endpoint matching a request and they all have Args(o) we now follow the general rule of 'last defined action always wins in a tie'. This change also comes with a configuration setting to revert to the old behavior on the odd chance it causes you trouble. Read more here: https://metacpan.org/source/JJNAPIORK/Catalyst-Runtime-5.90085/Changes
We also just released the first development version of the next major release of Catalyst, currently codenamed 'Australorp'. Australorp will focus on improving our ability to express complex request matching in the dispatcher. For the dev001 release we have added the ability to use a Moose or Type::Tiny type constraint in your Arg or CaptureArg attributes. For example you can now do:
package MyApp::Controller::User; use Moose; use MooseX::MethodAttributes; extends 'Catalyst::Controller'; sub find :Path('') Args(Int) { my ($self, $c, $int) = @_; } __PACKAGE__->meta->make_immutable;
and GET /user/100 would match but GET /user/string would not. You may have more than one type constraint (for example Args(Int,Int) ). Please see the early draft of a new document Catalyst::RouteMatching for more information and examples.
Australorp will focus on issues around this new feature, should they arise and also the plan is to add similar matching for GET query parameters (for example ?page=Int) and POST/PUT Body/BodyData.
We expect this series to show good backwards compatibility with existing versions of Catalyst, but as always I recommend testing your code on early development branches so that I can get fixes in now, rather than later.
Contribute on Github: https://github.com/perl-catalyst/catalyst-runtime
Enjoy!