X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FDelta.pod;h=32a4fe92ca6bf40986c2aef57fd4895d0a6bae83;hp=e965025ef195d4bbfbd3be648cdbd74fca4018ab;hb=03eb666ac5845c0290b83e294bf6f2b7fd4dd728;hpb=ec4d72594fb7a701c2f36e85ecf9a680ca1abba2 diff --git a/lib/Catalyst/Delta.pod b/lib/Catalyst/Delta.pod index e965025..32a4fe9 100755 --- a/lib/Catalyst/Delta.pod +++ b/lib/Catalyst/Delta.pod @@ -7,9 +7,88 @@ Catalyst::Delta - Overview of changes between versions of Catalyst This is an overview of the user-visible changes to Catalyst between major Catalyst releases. +=head2 VERSION 5.90102 - 5.90103 + +A significant change is that we now preserve the value of $c->state from action +to following action. This gives you a new way to pass a value between actions +in a chain, for example. However any 'auto' actions always have $c->state +forced to be set to 0, which is the way its been for a long time, this way an +auto action is required to return 1 to pass the match. It also exists to maintain +compatibility with anyone that exits an auto action with a detach (which is not a +documented way to escape matching, but exists in the wild since it worked as a +side effect of the code for a long time). + +Additionally, upon $c->detach we also force set state to 0. + +Version 5.90102 contains a version of this change but its considered buggy, so +that is a version to avoid. + +=head2 VERSION 5.90100 + +Support for type constraints in Args and CaptureArgs has been improved. You may +now inherit from a base controller that declares type constraints and use roles +that declare type constraints. See L for more. + +You may now. also use a full type constraint namespace instead of importing type +constraints into your package namespace. + +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 disappear 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. + +=head2 VERSION 5.90097 + +=head3 Defined how $c->uri_for adds a URI fragment. + +We now have a specification for creating URIs with fragments (or HTML anchors). +Previously you could do this as a side effect of how we create URIs but this +side effect behavior was never documented or tested, and was broken when we +introduced default UTF-8 encoding. When creating URIs with fragments please +follow the new, supported specification: + + $c->uri_for($action_or_path, \@captures_or_args, @args, \$query, \$fragment); + +This will be a breaking change for some codebases, we recommend testing if +you are creating URLs with fragments. + +B If you are using the alternative: + + $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'. + +=head2 VERSION 5.90094 + +=head3 Multipart form POST with character set headers + +When we did the UTF8 work, we punted on Form POSTs when the POST envelope was +multipart and each part had complex headers such as content-types, character +sets and so forth. In those cases instead of returning a possibly incorrect +value, we returned an object describing the part so that you could figure it +out manually. This turned out to be a bad workaround as people did not expect +to find that object. So we changed this to try much harder to get a correct +value. We still return an object if we fail but we try much harder now. If +you used to check for the object you might find that code is no longer needed +(although checking for it should not hurt or break anything either). + +=head2 VERSION 5.90091 + +=head3 'case_sensitive' configuration + +At one point in time we allowed you to set a 'case_sensitive' configuration value so +that you could find actions by their private names using mixed case. We highly +discourage that. If you are using this 'feature' you should be on notice that we +plan to remove the code around it in the near future. + =head2 VERSION 5.90090+ -=head2 Type constraints on Args and CaptureArgs. +=head3 Type constraints on Args and CaptureArgs. You may now use a type constraint (using L, L or preferably L in your Args or CaptureArgs action attributes. This can be used @@ -24,11 +103,36 @@ your arguments to $c->uri_for(...) must match those constraints. See L for more. -=head2 Move CatalystX::InjectComponent into core +=head3 Move CatalystX::InjectComponent into core L has a new method 'inject_component' which works the same as the method of the same name in L. +=head3 inject_components + +New configuration key allows you to inject components directly into your application without +any subclasses. For example: + + MyApp->config({ + inject_components => { + 'Controller::Err' => { from_component => 'Local::Controller::Errors' }, + 'Model::Zoo' => { from_component => 'Local::Model::Foo' }, + 'Model::Foo' => { from_component => 'Local::Model::Foo', roles => ['TestRole'] }, + }, + 'Controller::Err' => { a => 100, b=>200, namespace=>'error' }, + 'Model::Zoo' => { a => 2 }, + 'Model::Foo' => { a => 100 }, + }); + +Injected components are useful to reduce the amount of nearly empty boilerplate classes +you might have, particularly when first starting an application. + +=head3 Component setup changes. + +Previously you could not depend on an application scoped component doing setup_components +since components were setup 'in order'. Now all components are first registered and then +setup, so you can now reliably use any component doing setup_components. + =head2 VERSION 5.90080+ The biggest change in this release is that UTF8 encoding is now enabled by @@ -111,7 +215,7 @@ Plack middleware to aid in backwards compatibility. =head3 Distinguish between body null versus undef. -We also now more carefully distingush the different between a body set +We also now more carefully distinguish 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 @@ -120,7 +224,7 @@ or report specific problems to the dev team. =head3 More Catalyst Middleware -We have started migrating code in Catalyst to equivilent Plack +We have started migrating code in Catalyst to equivalent Plack Middleware when such exists and is correct to do so. For example we now use L to determine content length of a response when none is provided. This replaces similar code inlined with L