=head1 DESCRIPTION
-This is an overview of the user-visible changes to Catalyst between major Catalyst releases.
-
-=head2 VERSION 5.9XXX 'cataplack'
+This is an overview of the user-visible changes to Catalyst between major
+Catalyst releases.
+
+=head2 VERSION 5.90060+
+
+We changed the way we return body content (from response) to whatever
+Plack handler you are using (Starman, FastCGI, etc.) We no longer
+always use the streaming interface for the cases when the body is a
+simple scalar, object or filehandle like. In those cases we now just
+pass the simple response on to the plack handler. This might lead to
+some minor differences in how streaming is handled. For example, you
+might notice that streaming starts using chunked encoding when running
+on a server that supports that, or that previously missing headers
+(possible content-length) might appear suddenly correct. Also, if you
+are using middleware like L<Plack::Middleware::XSendfile> and are using
+a filehandle that sets a readable path, your server might now correctly
+handle the file (rather than as before where Catalyst would stream it
+very likely very slowly).
+
+In other words, some things might be meaninglessly different and some
+things that were broken codewise but worked because of Catalyst being
+incorrect might suddenly be really broken. The behavior is now more
+correct in that Catalyst plays better with features that Plack offers
+but if you are making heavy use of the streaming interface there could
+be some differences so you should test carefully (this is probably not
+the vast majority of people). In particular if you are developing
+using one server but deploying using a different one, differences in
+what those server do with streaming should be noted.
+
+We also now more carefully distingush the different between a body set
+to '' and a body that is undef. This might lead to situations where
+again you'll get a content-length were you didn't get one before or
+where a supporting server will start chunking output. If this is an
+issue you can apply the middleware L<Plack::Middleware::BufferedStreaming>
+or report specific problems to the dev team.
+
+Also, we have started migrating code in Catalyst to equivilent Plack
+Middleware when such exists and is correct to do so.
+
+We also deprecated setting the response body to an object that does 'read'
+but not 'getline'. If you are using a custom IO-Handle like object for
+response you should verify that 'getline' is supported in your interface.
+You will get a first use warning for this error in your logs. Unless we
+here this case is a major issue for people, we will be removing support
+in a near future release of Catalyst.
+
+L<Catalyst::Engine::PSGI> is also officially no longer supported. We will
+no long run test cases against this and can remove backcompat code for it
+as deemed necessary for the evolution of the platform. You should simple
+discontinue use of this engine, as L<Catalyst> has been PSGI at the core
+for several years.
+
+=head2 VERSION 5.90053
+
+We are now clarifying the behavior of log, plugins and configuration during
+the setup phase. Since Plugins might require a log during setup, setup_log
+must run BEFORE setup_plugins. This has the unfortunate side effect that
+anyone using the popular ConfigLoader plugin will not be able to supply
+configuration to custom logs since the configuration is not yet finalized
+when setup_log is run (when using ConfigLoader, which is a plugin and is
+not loaded until later.)
+
+As a workaround, you can supply custom log configuration directly into
+the configuration:
+
+ package MyApp;
+ use Catalyst;
+
+ __PACKAGE__->config(
+ my_custom_log_info => { %custom_args },
+ );
+
+ __PACKAGE__->setup;
+
+If you wish to configure the custom logger differently based on ENV, you can
+try:
+
+ package MyApp;
+
+ use Catalyst;
+ use Catalyst::Utils;
+
+ __PACKAGE__->config(
+ Catalyst::Utils::merge_hashes(
+ +{ my_custom_log_info => { %base_custom_args } },
+ +{ do __PACKAGE__->path_to( $ENV{WHICH_CONF}."_conf.pl") },
+ ),
+ );
+
+ __PACKAGE__->setup;
+
+Or create a standalone Configuration class that does the right thing.
+
+Basically if you want to configure a logger via Catalyst global configuration
+you can't use ConfigLoader because it will always be loaded too late to be of
+any use. Patches and workaround options welcomed!
+
+=head2 VERSION 5.9XXXX 'cataplack'
The Catalyst::Engine sub-classes have all been removed and deprecated,
to be replaced with Plack handlers.
Has been updated to fix failing tests (although older versions still
function perfectly with this version of Catalyst).
+=item Catalyst::Plugin::Authentication
+
+Has been updated to fix failing tests (although older versions still
+function perfectly with this version of Catalyst).
+
=back
=head1 PREVIOUS VERSIONS
-=head2 VERSION 5.8XXX 'catamoose'
+=head2 VERSION 5.8XXXX 'catamoose'
=head3 Deprecations
=item *
-L<MooseX::MethodAttributes::Inheritable> is used to contain action
+L<MooseX::MethodAttributes::Role::AttrContainer::Inheritable> is used to contain action
attributes. This means that attributes are represented in the MOP, and
decouples action creation from attributes.