updated the encoding pod a bit
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Delta.pod
index 2d8c31d..a47c884 100755 (executable)
@@ -7,6 +7,107 @@ 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.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' configuraion 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+
+
+=head3 Type constraints on Args and CaptureArgs.
+
+You may now use a type constraint (using L<Moose>, L<MooseX::Types> or preferably
+L<Type::Tiny> in your Args or CaptureArgs action attributes.  This can be used
+to restrict the value of the Arg.  For example:
+
+    sub myaction :Local Args(Int) { ... }
+
+Would match '.../myaction/5' but not '.../myaction/string'.
+
+When an action (or action chain) has Args (or CaptureArgs) that declare type constraints
+your arguments to $c->uri_for(...) must match those constraints.
+
+See L<Catalyst::RouteMatching> for more.
+
+=head3 Move CatalystX::InjectComponent into core
+
+L<Catalyst::Utils> has a new method 'inject_component' which works the same as the method of
+the same name in L<CatalystX::InjectComponent>.
+
+=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 ammount 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
+default.  So you no longer need any plugins (such as L<Catalyst::Plugin::Unicode::Encoding>)
+which you can just no go ahead and remove.  You also don't need to set
+the encoding configuration (__PACKAGE__->config(encoding=>'UTF-8')) anymore
+as well (although its presence hurts nothing).
+
+If this change causes you trouble, you can disable it:
+
+    __PACKAGE__->config(encoding=>undef);
+
+For further information, please see L<Catalyst::UTF8>
+
+But please report bugs.  You will find that a number of common Views have been
+updated for this release (such as L<Catalyst::View::TT>).  In all cases that the
+author is aware of these updates were to fix test cases only.  You shouldn't
+need to update unless you are installing fresh and want tests to pass.
+
+L<Catalyst::Plugin::Compress> was updated to be compatible with this release.
+You will need to upgrade if you are using this plugin.  L<Catalyst::Upgrading>
+also has details.
+
+A small change is that the configuration setting C<using_frontend_proxy>
+was not doing the right thing if you started your application with C<psgi_app>
+and did not apply the default middleware.  This setting is now honored in
+all the ways an application may be started.  This could cause trouble if you
+are using the configuration value and also adding the proxy middleware
+manually with a custom application startup.  The solution is that you only
+need the configuration value set, or the middleware manually added (not both).
+
 =head2 VERSION 5.90060+
 
 =head3 Catalyst::Log object autoflush on by default