Changes for version 5.90089_003 - 2015-04-27

  • Fixed an issue where a delayed controller that did ACCEPT_CONTEXT would raise an error when registering its actions.
  • Updated some documentation around route matching.
  • refactored the setup of injected components to allow you to hook into the injection and do custom injection types.

Changes for version 5.90089_002 - 2015-04-17

  • Changed the way we check for presence of Type::Tiny in a test case to be more explicit in the version requirement. Hopefully a fix for reported test fail.
  • When declaring type constraints in Args and CaptureArgs, if you want to use a Moose builtin type (or a custom stringy type that you've already defined and associated with the Moose::TypeRegistry) you must now quote the type name. This is to clearly disambiguate between Moose stringy types and imported types.
  • Additional changes to type constraint detection to between determine when a type constraint for reference types have a measured number of arguments or not. clarify restriction on reference type constraints.
  • Several bugs with type constraints and uri_for squashed. More test cases around all the argument type constraints to tighten scope of action.
  • NEW FEATURE: New method in Catalyst::Utils 'inject_component', which is a core version of the previously external addon 'CatalystX::InjectComponent'. You should start to convert your existing code which uses the stand alone version, since going forward only the core version will be supported. Also the core version in Catalyst::Utils has an additional feature to compose roles into the injected component.
  • NEW FEATURE: Concepts from 'CatalystX::RoleApplicator' have been moved to core so we now have the follow application attributes 'request_class_traits', 'response_class_traits' and 'stats_class_traits' which allow you to compose traits for these core Catalyst classes without needing to create subclasses. So in general any request or response trait on CPAN that used 'CatalystX::RoleApplicator' should now just work with this core feature. Note that can also set thse roles via new configuration keys, 'request_class_traits', 'response_class_traits' and 'stats_class_traits'. If you use both configuration and application class methods, they are combined.
  • NEW FEATURE: Core concepts from 'CatalystX::ComponentsFromConfig'. You can now setup components directly from configuration. This could save you some effort and creating 'empty' base classes in your Model/View and Controller directories. This feature is currently limited in that you can only configure components that are 'true' Catalyst components (but you may use Catalyst::Model::Adaptor to proxy stand alone classes...).
  • Only create a stats object if you are using stats. This is a minor performance optimization, but there's a small chance it is a breaking change, so please report any stats related issues.
  • Added a developer mode warning if you call a component with arguments that does not expect arguments (for example calling $c->model('Foo', 1,2,3,4) where Myapp::Model::Foo does not ACCEPT_CONTEXT. Only components that ACCEPT_CONTEXT do anything with passed arguments in $c->controller/view/model.
  • Change the way components are setup so that you can now rely on all components when setting up a component. Previously application scoped components could not reliably use an existing application scoped component as a dependecy for initialization.

Changes for version 5.90089_001 - 2015-03-26

  • New development branch synched with 5.90085.
  • NEW FEATURE: Type Constraints on Args/CaptureArgs. Allows you to declare a Moose, MooseX::Types or Type::Tiny named constraint on your Arg or CaptureArg.
  • When using $c->uri_for (or the derived $c->uri_for_action) and the target action has type constrainted args (or captures), verify that the proposed URL matches the defined args. In general $c->uri_for will be a bit more noisy if the supplied arguments are not correct.
  • New top level document on Route matching. (Catalyst::RouteMatching). This document is still in development, but is worth review and comments.


Contributing to Catalyst and Change managment
Overview of changes between versions of Catalyst
How Catalyst and PSGI work together
How Catalyst maps an incoming URL to actions in controllers.
All About UTF8 and Catalyst Encoding
Instructions for upgrading to the latest Catalyst
Bootstrap a Catalyst application


The Elegant MVC Web Application Framework
Catalyst Action
Chain of Catalyst Actions
Catalyst Action Container
Match on HTTP Request Content-Type
Match on HTTP Methods
Match on GET parameters using type constraints
Match on HTTP Request Scheme
Deprecated base class
Class data accessors
Catalyst Component Base Class
Moose Role for components which capture the application context.
Moose Role for components which need to close over the $ctx, without leaking
Catalyst Controller base class
DispatchType Base Class
Path Part DispatchType
Default DispatchType
Index DispatchType
Path DispatchType
The Catalyst Dispatcher
The Catalyst Engine
removed module
The Catalyst Engine Loader
Catalyst Exception Class
Basic Catalyst Exception Role
Exception for redispatching using $ctx->detach()
Exception for redispatching using $ctx->go()
Role defining the interface for Catalyst exceptions
Catalyst Log Class
The Catalyst stash - in middleware
Catalyst Model base class
Unicode aware Catalyst
provides information about the current client request
handles file upload requests
handles file upload requests
stores output responding to the current client request
The Catalyst Framework Runtime
The CGI Catalyst Script
Create a new Catalyst Component
The FastCGI Catalyst Script
Catalyst test server
Test Catalyst application on the command line
Common functionality for Catalyst scripts.
The Catalyst Framework script runner
Catalyst Timing Statistics Class
Test Catalyst Applications
The Catalyst Utils
Catalyst View base class


in lib/Catalyst/
in lib/Catalyst/Response/