Changes for version 5.90049_005
- NEW FEATURE: New Controller action attribute 'Consumes', which allows you to specify the content type of the incoming request. This makes it easier to create actions that only handle certain content type POST or PUT, such as actions that only handle JSON or actions that only understand classic HTML forms.
- NEW FEATURE: Request->body_data is now also populated from classic HTML Forms using CGI::Struct to support nested data. For non nested data you should use the classic ->body_parameters method.
- Removed PSGI $env keys that are added on the 'plack.request.*' namespace since after discussion it was clear those keys are not part of the public API. Keys removed: 'plack.request.query', 'plack.request.body', 'plack.request.merged' and 'plack.request.http.body'. Altered some test cases to reflect this change.
Changes for version 5.90049_004
- JSON Data handler looks for both JSON::MaybeXS and JSON, and uses whichever is first (prefering to find JSON::MaybeXS). This should improve compatibility as you likely already have one installed.
- Fixed a warning in the server script (bokutin++)
- We now populate various Plack $env keys in order to play nice with downstream middleware or plack apps (and to reduce processing if those keys already exist). Keys added:
- (NOTE: REMOVED IN 5.90049_005)
- If incoming input (from a POST or PUT) is not buffered, create the buffer and set the correct psgi env keys to note this for downstream psgi apps / middleware. This should solve some issues where Catalyst sucks up the body input but its not buffered so downstream apps can't read it (for example FCGI does not buffer). We now also try to make sure the body content input is reset to the start of the filehandle so that we are polite to downstream middleware /apps.
- NEW FEATURE: Catalyst::Response can now pull response from a PSGI specification response. This makes it easier to host external Plack applications under Catalyst. See Catalyst::Response->from_psgi_response
- NEW FEATURE: New configuration option 'use_hash_multivalue_in_request' will populate $request methods 'parameters', 'body_parameters' and 'query_parameters' with an instance of Hash::MultiValue instead of a HashRef. This is used by Plack and is intended to reduce the need to write defensive logic since you are never sure if an incoming parameter is a scalar or arrayref.
- NEW FEATURE: We now experimentally support Net::Async::HTTP::Server and IO-Async based event loops. Examples will follow.
Changes for version 5.90049_003
- Documented the new body_data method added in the previous release
- Merged from master many important bugfixes and forward compatiblity updates, including:
- Use modern preferred method for Moose metaclass access and many other small changes to how we use Moose for better forward compat (ether++)
- Killed some evil use of $@ (ether++)
- spelling fixes and documentation updates (ether++), (gerda++)
- use Test::Fatal over Test::Exception (ether++)
- Misc. test case fixes to modernize code (ether++)
- Added a first pass cpanfile, to try and make it easier to bootstrap a development setup (ether++)
Changes for version 5.90049_002
- Fixed loading middleware from project directory
- Fixed some pointless warnings when middleware class lacked VERSION
- NEW FEATURE: Declare global 'data_handlers' for parsing HTTP POST/PUT alternative content, and created default JSON handler. Yes, now Catalyst handles JSON request content out of the box! More docs eventually but for now see the DATA HANDLERS section in Catalyst.pm (or review the test case t/data_handler.t
Changes for version 5.90049_001
- Declare PSGI compliant Middleware as part of your Catalyst Application via a new configuration key, "psgi_middleware".
- Increased lowest allowed module version for Module::Pluggable to be 4.7 (up from 3.4) to solve the fact this is no longer bundled with Perl in v5.18.
- Catalyst - The Elegant MVC Web Application Framework
- Catalyst::Action - Catalyst Action
- Catalyst::ActionChain - Chain of Catalyst Actions
- Catalyst::ActionContainer - Catalyst Action Container
- Catalyst::ActionRole::ConsumesContent - Match on HTTP Request Content-Type
- Catalyst::ActionRole::HTTPMethods - Match on HTTP Methods
- Catalyst::Base - Deprecated base class
- Catalyst::ClassData - Class data accessors
- Catalyst::Component - Catalyst Component Base Class
- Catalyst::Component::ApplicationAttribute - Moose Role for components which capture the application context.
- Catalyst::Component::ContextClosure - Moose Role for components which need to close over the $ctx, without leaking
- Catalyst::Controller - Catalyst Controller base class
- Catalyst::DispatchType - DispatchType Base Class
- Catalyst::DispatchType::Chained - Path Part DispatchType
- Catalyst::DispatchType::Default - Default DispatchType
- Catalyst::DispatchType::Index - Index DispatchType
- Catalyst::DispatchType::Path - Path DispatchType
- Catalyst::Dispatcher - The Catalyst Dispatcher
- Catalyst::Engine - The Catalyst Engine
- Catalyst::EngineLoader - The Catalyst Engine Loader
- Catalyst::Exception - Catalyst Exception Class
- Catalyst::Exception::Basic - Basic Catalyst Exception Role
- Catalyst::Exception::Detach - Exception for redispatching using $ctx->detach()
- Catalyst::Exception::Go - Exception for redispatching using $ctx->go()
- Catalyst::Exception::Interface - Role defining the interface for Catalyst exceptions
- Catalyst::Log - Catalyst Log Class
- Catalyst::Model - Catalyst Model base class
- Catalyst::Plugin::Unicode::Encoding - Unicode aware Catalyst
- Catalyst::Request - provides information about the current client request
- Catalyst::Request::Upload - handles file upload requests
- Catalyst::Response - stores output responding to the current client request
- Catalyst::Runtime - The Catalyst Framework Runtime
- Catalyst::Script::CGI - The CGI Catalyst Script
- Catalyst::Script::Create - Create a new Catalyst Component
- Catalyst::Script::FastCGI - The FastCGI Catalyst Script
- Catalyst::Script::Server - Catalyst test server
- Catalyst::Script::Test - Test Catalyst application on the command line
- Catalyst::ScriptRole - Common functionality for Catalyst scripts.
- Catalyst::ScriptRunner - The Catalyst Framework script runner
- Catalyst::Stats - Catalyst Timing Statistics Class
- Catalyst::Test - Test Catalyst Applications
- Catalyst::Utils - The Catalyst Utils
- Catalyst::View - Catalyst View base class
- Catalyst::Exception::Base in lib/Catalyst/Exception.pm