The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 5.90079_001

  • MyApp->to_app is now an alias for MyApp->psgi_app in order to better support existing Plack conventions.
  • Modify Catayst::Response->from_psgi_response to allow the first argument to be an object that does ->as_psgi.
  • Modified Catayst::Middleware::Stash to be a shallow copy in $env. Added some docs. Added a test case to make sure stash keys added in a child application don't bubble back up to the main application.
  • We no longer use Encode::is_utf8 since it doesn't work the way we think it does... This required some UTF-8 changes. If your application is UTF-8 aware I highly suggest you test this release.
  • We alway do utf8 decoding on incoming URLs (before we only did so if the server encoding was utf8. I believe this is correct as per the w3c spec, but please correct if incorrect :)
  • Debug output now shows utf8 characters if those are incoming via Args or as path or pathparts in your actions. query and body parameter keys are now also subject to utf8 decoding (or as specificed via the encoding configuration value).
  • lots of UTF8 changes. Again we think this is now more correct but please test.
  • Allow $c->res->redirect($url) to accept $url as an object that does ->as_string which I think will ease a common case (and common bug) and added documentation.
  • !!! UTF-8 is now the default encoding (there used to be none...). You can disable this if you need to with MyApp->config(encoding => undef) if it causes you trouble.
  • Calling $c->res->write($data) now encodes $data based on the configured encoding (UTF-8 is default).
  • $c->res->writer_fh now returns Catalyst::Response::Writer which is a decorator over the PSGI writer and provides an additional methd 'write_encoded' that just does the right thing for encoding your responses. This is probably the method you want to use.
  • New dispatch matching attribute: Scheme. This lets you match a route based on the incoming URI scheme (http, https, ws, wss).
  • If $c->uri_for targets an action or action chain that defines Scheme, use that scheme for the generated URI object instead of just using whatever the incoming request uses.