X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FUpgrading.pod;h=ebfa2a35a7b8f10ee800dffc66be621c874f6f2e;hp=ae5a6ffa37240d12003e88fc57a247afa01625f7;hb=772bd9deac85d462d77bfe2cbbe73f3de1688ebf;hpb=4e68badce837f4ebc4567faeaa707bbae88c5ffd diff --git a/lib/Catalyst/Upgrading.pod b/lib/Catalyst/Upgrading.pod index ae5a6ff..ebfa2a3 100644 --- a/lib/Catalyst/Upgrading.pod +++ b/lib/Catalyst/Upgrading.pod @@ -1,20 +1,420 @@ +=head1 NAME + +Catalyst::Upgrading - Instructions for upgrading to the latest Catalyst + +=head1 Upgrading to Catalyst 5.90080 + +UTF8 encoding is now default. For temporary backwards compatibility, if this +change is causing you trouble, you can disable it by setting the application +configuration option to undef: + + MyApp->config(encoding => undef); + +But please consider this a temporary measure since it is the intention that +UTF8 is enabled going forwards and the expectation is that other ecosystem +projects will assume this as well. At some point you application will not +correctly function without this setting. + +As of 5.90084 we've added two additional configuration flags for more selective +control over some encoding changes: 'skip_body_param_unicode_decoding' and +'skip_complex_post_part_handling'. You may use these to more selectively +disable new features while you are seeking a long term fix. Please review +CONFIGURATION in L. + +For further information, please see L + +A number of projects in the wider ecosystem required minor updates to be able +to work correctly. Here's the known list: + +L, L, L, +L, L + +You will need to update to modern versions in most cases, although quite a few +of these only needed minor test case and documentation changes so you will need +to review the changelog of each one that is relevant to you to determine your +true upgrade needs. + +=head1 Upgrading to Catalyst 5.90060 + +Starting in the v5.90059_001 development release, the regexp dispatch type is +no longer automatically included as a dependency. If you are still using this +dispatch type, you need to add L into your build +system. + +The standalone distribution of Regexp will be supported for the time being, but +should we find that supporting it prevents us from moving L forward +in necessary ways, we reserve the right to drop that support. It is highly +recommended that you use this last stage of deprecation to change your code. + +=head1 Upgrading to Catalyst 5.90040 + +=head2 Catalyst::Plugin::Unicode::Encoding is now core + +The previously stand alone Unicode support module L +has been brought into core as a default plugin. Going forward, all you need is +to add a configuration setting for the encoding type. For example: + + package Myapp::Web; + + use Catalyst; + + __PACKAGE__->config( encoding => 'UTF-8' ); + +Please note that this is different from the old stand alone plugin which applied +C encoding by default (that is, if you did not set an explicit +C configuration value, it assumed you wanted UTF-8). In order to +preserve backwards compatibility you will need to explicitly turn it on via the +configuration setting. THIS MIGHT CHANGE IN THE FUTURE, so please consider +starting to test your application with proper UTF-8 support and remove all those +crappy hacks you munged into the code because you didn't know the Plugin +existed :) + +For people that are using the Plugin, you will note a startup warning suggesting +that you can remove it from the plugin list. When you do so, please remember to +add the configuration setting, since you can no longer rely on the default being +UTF-8. We'll add it for you if you continue to use the stand alone plugin and +we detect this, but this backwards compatibility shim will likely be removed in +a few releases (trying to clean up the codebase after all). + +If you have trouble with any of this, please bring it to the attention of the +Catalyst maintainer group. + +=head2 basic async and event loop support + +This version of L offers some support for using L and +L event loops in your application. These changes should work +fine for most applications however if you are already trying to perform +some streaming, minor changes in this area of the code might affect your +functionality. Please see L for more and for a +basic example. + +We consider this feature experimental. We will try not to break it, but we +reserve the right to make necessary changes to fix major issues that people +run into when the use this functionality in the wild. + +=head1 Upgrading to Catalyst 5.90030 + +=head2 Regex dispatch type is deprecated. + +The Regex dispatchtype (L) has been deprecated. + +You are encouraged to move your application to Chained dispatch (L). + +If you cannot do so, please add a dependency to Catalyst::DispatchType::Regex to your application's +Makefile.PL + +=head1 Upgrading to Catalyst 5.9 + +The major change is that L, a toolkit for using the L +specification, now replaces most of the subclasses of L. If +you are using one of the standard subclasses of L this +should be a straightforward upgrade for you. It was a design goal for +this release to preserve as much backwards compatibility as possible. +However, since L is different from L, it is +possible that differences exist for edge cases. Therefore, we recommend +that care be taken with this upgrade and that testing should be greater +than would be the case with a minor point update. Please inform the +Catalyst developers of any problems so that we can fix them and +incorporate tests. + +It is highly recommended that you become familiar with the L ecosystem +and documentation. Being able to take advantage of L development and +middleware is a major bonus to this upgrade. Documentation about how to +take advantage of L by writing your own C<< .psgi >> file +is contained in L. + +If you have created a custom subclass of L, you will +need to convert it to be a subclass of L. + +If you are using the L engine, L, this new +release supersedes that code. + +If you are using a subclass of L that is aimed at +nonstandard or internal/testing uses, such as +L, you should still be able to continue +using that engine. + +Advice for specific subclasses of L follows: + +=head2 Upgrading the FastCGI Engine + +No upgrade is needed if your myapp_fastcgi.pl script is already upgraded +to use L. + +=head2 Upgrading the mod_perl / Apache Engines + +The engines that are built upon the various iterations of mod_perl, +L (for mod_perl 1, and Apache 1.x) and +L (for mod_perl 2, and Apache 2.x), +should be seamless upgrades and will work using L +or L as required. + +L, however, is no longer supported, as +Plack does not support mod_perl version 1.99. This is unlikely to be a +problem for anyone, as 1.99 was a brief beta-test release for mod_perl +2, and all users of mod_perl 1.99 are encouraged to upgrade to a +supported release of Apache 2 and mod_perl 2. + +=head2 Upgrading the HTTP Engine + +The default development server that comes with the L distribution +should continue to work as expected with no changes as long as your C +script is upgraded to use L. + +=head2 Upgrading the CGI Engine + +If you were using L there is no upgrade needed if your +myapp_cgi.pl script is already upgraded to use L. + +=head2 Upgrading Catalyst::Engine::HTTP::Prefork + +If you were using L then L +is automatically loaded. You should (at least) change your C +to depend on Starman. + +You can regenerate your C script with C +and implement a C class that looks like this: + + package MyApp::Script::Server; + use Moose; + use namespace::autoclean; + + extends 'CatalystX::Script::Server::Starman'; + + 1; + +This takes advantage of the new script system, and will add a number of +options to the standard server script as extra options are added by +Starman. + +More information about these options can be seen at +L. + +An alternate route to implement this functionality is to write a simple .psgi +file for your application, and then use the L utility to start the +server. + +=head2 Upgrading the PSGI Engine + +If you were using L, this new release supersedes +this engine in supporting L. By default the Engine is now always +L. As a result, you can remove the dependency on +L in your C. + +Applications that were using L +previously should entirely continue to work in this release with no changes. + +However, if you have an C script, then you no longer need to +specify the PSGI engine. Instead, the L application class now +has a new method C which returns a L compatible coderef +which you can wrap in the middleware of your choice. + +Catalyst will use the .psgi for your application if it is located in the C +directory of the application. + +For example, if you were using L in the past, you will +have written (or generated) a C