t push origin masterMerge branch 'billmoseley-check_return_of_write_to_psgi_input'
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Upgrading.pod
index 6055442..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
@@ -37,7 +44,15 @@ for a URI via ->uri_for:
 If you are relying on the previous side effect behavior your URLs will now encode the '#'
 delimiter, which is going to be a breaking change for you.  You need to alter your code
 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. 
+this are very welcomed, as long as they don't break existing test cases.
+
+B<NOTE> If you are using the string form of the first argument:
+
+    $c->uri_for('/foo/bar#baz')
+
+construction, we do not attempt to encode this and it will make a URL with a
+fragment of 'baz'.
+
 
 =head1 Upgrading to Catalyst 5.90095