Revert "Unicode plugin - rework exception handler"
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Upgrading.pod
index 1807053..3e2d9d0 100644 (file)
@@ -4,41 +4,60 @@ Catalyst::Upgrading - Instructions for upgrading to the latest Catalyst
 
 =head1 Upgrading to Catalyst 5.90040
 
-This version of L<Catalyst> offers some support for using L<AnyEvent> and
-L<IO::Async> event loops in your application.  In order to achieve this goal
-we needed to make some changes to the way the we finalize the HTTP response
-such that sloppy code that closed over $c and leaked memory will no longer
-work in some manner.  For example you might accidently have:
+=head2 Catalyst::Plugin::Unicode::Encoding is now core
 
-    $c->stash(my_model => sub { $c->model->find(shift) });
+The previously stand alone Unicode support module L<Catalyst::Plugin::Unicode::Encoding>
+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:
 
-If you have old code that leaks memory in this way but otherwise seemed to
-work, it will no longer complete the response properly.
+    package Myapp::Web;
 
-If you don't want to fix your code, you can force the old behavior with the
-global configuration key C<aggressively_close_writer_on_finalize_body>.  This
-of course will still leave you with a leaky application and you lose the new
-event loop support, but your application will go back to completing its
-response output.  For example:
+    use Catalyst;
 
-    package MyApp::Web;
+    __PACKAGE__->config( encoding => 'UTF-8' );
 
-    use Moose;
-    use Catalyst;
+Please note that this is different from the old stand alone plugin which applied
+C<UTF-8> encoding by default (that is, if you did not set an explicit
+C<encoding> 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 :)
 
-    __PACKAGE__->config(
-      name => 'MyApp::Web',
-      enable_catalyst_header => 1,
-      disable_component_resolution_regex_fallback => 1,
-      aggressively_close_writer_on_finalize_body => 1,
-    );
+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).
 
-    __PACKAGE__->setup;
+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<Catalyst> offers some support for using L<AnyEvent> and
+L<IO::Async> 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<Catalyst::Response\write_fh> 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.
 
-See L<Catalyst::Component::ContextClosure> for help on how to close over the
-context safely, should you need to do this.  See L<CatalystX::LeakChecker>
-and L<Catalyst::Controller::LeakTracker> for help if you want to solve your
-memory leak issues.
+=head1 Upgrading to Catalyst 5.90030
+
+=head2 Regex dispatch type is deprecated.
+
+The Regex dispatchtype (L<Catalyst::DispatchType::Regex>) has been deprecated.
+
+You are encouraged to move your application to Chained dispatch (L<Catalyst::DispatchType::Chained>).
+
+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
 
@@ -252,15 +271,6 @@ This behavior has been removed, and now a 500 response will be returned
 to the test. This change standardizes behavior, so that local test
 requests behave similarly to remote requests.
 
-=head2 Regex dispatch type is deprecated.
-
-The Regex dispatchtype (L<Catalyst::DispatchType::Regex>) has been deprecated.
-
-You are encouraged to move your application to Chained dispatch (L<Catalyst::DispatchType::Chained>).
-
-If you cannot do so, please add a dependency to Catalyst::DispatchType::Regex to your application's
-Makefile.PL
-
 =head1 Upgrading to Catalyst 5.80
 
 Most applications and plugins should run unaltered on Catalyst 5.80.