fix issues with middleware stash localizing stuff
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Upgrading.pod
index ac230c1..432e3d0 100644 (file)
@@ -2,16 +2,23 @@
 
 Catalyst::Upgrading - Instructions for upgrading to the latest Catalyst
 
+=head1 Upgrading to Catalyst 5.90100
+
+We changed the way the middleware stash works so that it no longer localizes
+the PSGI env hashref.  This was done to fix bugs where people set PSGI ENV hash
+keys and found them to dissappear in certain cases.  It also means that now if
+a sub applications sets stash variables, that stash will now bubble up to the
+parent application.  This may be a breaking change for you since previous
+versions of this code did not allow that.  A workaround is to explicitly delete
+stash keys in your sub application before returning control to the parent
+application.
+
 =head1 Upgrading to Catalyst 5.90097
 
 In older versions of Catalyst one could construct a L<URI> with a fragment (such as
 https://localhost/foo/bar#fragment) by using a '#' in the path or final argument, for
 example:
 
-    $c->uri_for('/mypath#fragment');
-
-or:
-
     $c->uri_for($action, 'foo#fragment');
 
 This behavior was never documented and would break if using the Unicode plugin, or when
@@ -39,7 +46,7 @@ delimiter, which is going to be a breaking change for you.  You need to alter yo
 to match the new specification or modify uri_for for your local case.  Patches to solve
 this are very welcomed, as long as they don't break existing test cases.
 
-B<NOTE> If you are using the alternative:
+B<NOTE> If you are using the string form of the first argument:
 
     $c->uri_for('/foo/bar#baz')