X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=Changes;h=7c12eb13bc0a43861469f8559700c136411888eb;hp=de5caacc47d692a03f61a68afa5c6bc020fecb10;hb=342d21698a97962c51114b6ebc6bb8626511cfc6;hpb=d18964f7496b1456508c79f3bf5b90bfa32e9d6f diff --git a/Changes b/Changes index de5caac..7c12eb1 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,364 @@ # This file documents the revision history for Perl extension Catalyst. -TBA +5.90079_001 - TBD + - MyApp->to_app is now an alias for MyApp->psgi_app in order to better support + existing Plack conventions. + - Modify Catayst::Response->from_psgi_response to allow the first argument to + be an object that does ->as_psgi. + - Modified Catayst::Middleware::Stash to be a shallow copy in $env. Added some + docs. Added a test case to make sure stash keys added in a child application + don't bubble back up to the main application. + - We no longer use Encode::is_utf8 since it doesn't work the way we think it + does... This required some UTF-8 changes. If your application is UTF-8 aware + I highly suggest you test this release. + - We alway do utf8 decoding on incoming URLs (before we only did so if the server + encoding was utf8. I believe this is correct as per the w3c spec, but please + correct if incorrect :) + - Debug output now shows utf8 characters if those are incoming via Args or as + path or pathparts in your actions. query and body parameter keys are now also + subject to utf8 decoding (or as specificed via the encoding configuration value). + - lots of UTF8 changes. Again we think this is now more correct but please test. + - Allow $c->res->redirect($url) to accept $url as an object that does ->as_string + which I think will ease a common case (and common bug) and added documentation. + - !!! UTF-8 is now the default encoding (there used to be none...). You can disable + this if you need to with MyApp->config(encoding => undef) if it causes you trouble. + - Calling $c->res->write($data) now encodes $data based on the configured encoding + (UTF-8 is default). + - $c->res->writer_fh now returns Catalyst::Response::Writer which is a decorator + over the PSGI writer and provides an additional methd 'write_encoded' that just + does the right thing for encoding your responses. This is probably the method + you want to use. + - New dispatch matching attribute: Scheme. This lets you match a route based on + the incoming URI scheme (http, https, ws, wss). + - If $c->uri_for targets an action or action chain that defines Scheme, use that + scheme for the generated URI object instead of just using whatever the incoming + request uses. + +5.90077 - 2014-11-18 + - We store the PSGI $env in Catalyst::Engine for backcompat reasons. Changed + this so that the storage is a weak reference, so that it goes out of scope + with the request. This solves an issue where items in the stash (now in the + PSGI env) would not get closed at the end of the request. This caused some + regression, primarily in custom testing classes. + +5.90076 - 2014-11-13 + - If throwing an exception object that does the code method, make sure that + method returns an expected HTTP status code before passing it on to the + HTTP Exception middleware. + +5.90075 - 2014-10-06 + - Documentation patch for $c->req->param to point out the recently discovered + potential security issues: http://blog.gerv.net/2014/10/new-class-of-vulnerability-in-perl-web-applications/ + - You don't need to install this update, but you should read about the exploit + and review if your code is vulnerable. If you use the $c->req->param interface + you really need to review this exploit. + +5.90074 - 2014-10-01 + - Specify Carp minimum version to avoid pointless test fails (valy++) + +5.90073 - 2014-09-23 + - Fixed a regression caused by the last release where we broke what happened + when you tried to set request parameters via $c->req->param('foo', 'bar'). + You shouldn't do this, but I guess I shouldn't have busted it either :) + - Allow the term_width to be regenerated (see Catalyst::Utils::term_width, + Frew Schmidt) + - More aggressive skipping of value decoding if the value is undefined. + +5.90072 - 2014-09-15 + - In the case where you call $c->req->param(undef), warn with a more useful + warning (now gives the line of your code that called param with the undef, + so you can go to hunt it out. + +5.90071 - 2014-08-10 + - Travis config now performs basic reverse dependency testing. + - Restored deprecated 'env' code in Engine.pm b/c it is still being used out + in the wild (Catalyst-Plugin-Authentication-0.10023) - (removed in 5.90070) + - Reverted changes to debug log/handling (5.90069_003) to fix + rev dep Catalyst-Plugin-Static-Simple-0.32 test suite. + - Added italian translation of default error. + +5.90070 - 2014-08-07 + - Retagged previous release as stable; no changes + +5.90069_004 + - Fixed typo in middleware stash that was causing older Perls to fail + certain tests. No other changes. + +5.90069_003 + - The default log level is now 'info', not 'debug'. + - Finished merging all the encoding plugin code to core code. The encoding + plugin is now just an empty package. Also tried to improve encoding docs + a bit. + - Some additional changes to the stash middleware that should not break + anything new. + - Documentation around using Sendfile type http headers with a filehandle + type response. + - Merged from master branch to pick up some additional fixes and documentation + improvements. + +5.90069_002 + - Catalyst stash functionality has been moved to Middleware. It should + work entirely the same when used as a context method, please report + questions or problems! + - Removed code related to supporting the long deprecated stand alone + PSGI Engine. If you are still using this you code is now broken. + Luckily you can just stop using it and likely everything will work + under the new PSGI support built into Catalyst for several years. + - 'abort_chain_on_error_fix' now defaults to true. If this behavior + causes you issues, you can explicitly turn it off by setting it to a + non true defined value (0 is a good option here). + - When throwing an http style exception, make sure we properly flush the + existing log and report other errors in the error stack. + +5.90069_001 + - Set encoding on STDERR when encoding is set in config + - documentation and test fixes + +5.90065 - 2014-06-04 + - The Catalyst::Log object now has 'autoflush' (which defaults to true) and + causes log messages to be written out in real-time. This is helpful for the + test/dev server to be able to see messages during startup as well as before + the end of the request when the log is flushed. + - Fix spelling, grammar and structural errors in POD + - Remove redundant ->setup call in t/head_middleware.t RT#95361 + - Fix test failures when running under CATALYST_DEBUG. RT#95358 + +5.90064 - 2014-05-05 + - Fix for mindless broken tests on Win32 (Haarg++). + - Happy Cinco de Mayo! + +5.90063 - 2014-05-01 + - 'end' and other special actions won't catch HTTP style exceptions anymore. + - Fix bug where Catalyst did not properly detect the terminal width when in + debug mode and thus making the debug output narrow and hard to read. + - Documentation corrections for Util methods around localized PSGI $env. + - Improvements to auto detection of terminal width. + - Updating deprecation list to include Class::Load and ensure_class_loaded + - Added a few docs around middleware and corrected the order that middleware + is loaded when registering it via ->setup_middleware instead of via + configuration. + - Added a test case to make sure default middleware order is correct. +s +5.90062 - 2014-04-14 + - HTTP::Exception objects were not properly bubbled up to middleware since + there was some code in Catalyst that was triggering stringification. + +5.90061 - 2014-03-10 + - Reverted a change related to how plugins get initialized that was + introduced by a change in December. + +5.90060 - 2014-02-07 + - Same as 5.90059_006, just marking it as stable, no functional changes. + + +5.90059_006 - 2014-02-06 + - MyApp->setup now returns $app to allow class method chaining. + - New Util helper functional localize $env to make it easier to mount PSIG + applications under controllers and actions. See Catalyst::Utils/PSGI Helpers. + - NOTICE: Final Development release for Runner, unless significant issues are + raised. Please test. + +5.90059_005 - 2014-01-28 + - Specify newest versions of some middleware in attempt to solve test errors + reported while installing. +5.90059_004 - 2014-01-27 + - Make sure IO handle objects do 'getline' before sending them to the + response callback, to properly support the PSGI specification. + - Added some backcompat code when setting a response body to an object + that does 'read' but not 'getline'. Added deprecation notice for this + case. Added docs to Catalyst::Delta. + - Catalyst::Delta contains a list of behaviors which will be considered + deprecated immediatelty. Most items have workarounds and tweaks you can + make to avoid issues. These deprecations are targeted for removal/enforcement + in the Catalyst 6 release. Please review and give your feedback. + - More middleware to replace inline code (upasana++) + - Documentation around Exceptions and how we handle them. + - update copyright notices. + +5.90059_003 - 2013-12-24 + - More documentation about alternative ways to setup middleware. + - removed unneeded use of Devel::Dwarn in test case that was causing + fails to install (sorry). + - When finalizing caught errors, if the error conforms to the interface as + described by Plack::Middleware::HTTPExceptions, rethrow it and let the + middleware deal with it. + +5.90059_002 - 2013-12-21 + - We now pass a scalar or filehandle directly to you Plack handler, rather + than always use the streaming interface (we are still always using a + delayed response callback). This means that you can make use of Plack + middleware like Plack::Middleware::XSendfile and we expect better use of + server features (when they exist) like correct use of chunked encoding or + properly non blocking streaming when running under a supporting server like + Twiggy. See Catalyst::Delta for more. This change might cause issues if + you are making heaving use of streaming (although in general we expect things + to work much better. + - In the case when we remove a content body from the response because you set + an information status or a no content type status, warn that we are doing so + when in debug mode. You might see additional debugging information to help + you find and remove unneeded response bodies. + - Updated the code where Catalyst tries to guess a content length when you + fail to provide one. This should cause less issues when trying to guess the + length of a funky filehandle. This now uses Plack::Middleware::ContentLength + - Removed custom code to remove body content when the request is HEAD and + swapped it for Plack::Middleware::Head + - Merged fix for regressions from stable.. + +5.90059_001 - 2013-12-19 + - Removed deprecated Regexp dispatch type from dependency list. If you are + using Regex[p] type dispatching you need to add the standalone distribution + 'Catalyst::DispatchType::Regex' to you build system NOW or you application + will be broken. + +5.90053 - 2013-12-21 + - Reverted a change in the previous release that moved the setup_log phase + to after setup_config. This change was made to allow people to use + configuration that is late loaded (such as via the ConfigLoader Plugin) + to setup the plugin. However it also broke the ability to use the log + during plugin setup (ie, it breaks lots of plugins). Reverting the + change. See Catalyst::Delta for workarounds. + +5.90052 - 2013-12-18 + + - Fixed first block of startup debug messages missing when using a custom + logger that gets set at runtime, for example by overriding finalize_config + - Give a more descriptive error message when trying to load middleware that + does not exist. + - Change the way we initialize plugins to fix a bug where when using the + populare ConfigLoader plugin, configs merged are not available for setting + up middleware and data handlers (and probably other things as well). + + NOTE: This change might cause issues if you had code that was relying on the + broken behavior. For example external configuration that was being loaded to + late to have effect might now take effect. Please test you code carefully and + be aware of this possible issue . + + - You may now also call 'setup_middleware' as a package method if you think + that loading middleware via configuration is a weird or broken idea. + - Various POD formating fixed. + - Improved some documentation about what type of filehandles that ->body can + accept and issues that might arise. + +5.90051 - 2013-11-06 + - Be more skeptical of the existance of $request->env to fix a regression + introduced in Catalyst::Action::REST by the previous release + +5.90050 - 2013-11-05 + - Previously public predicates on the following attributes are now considered + private and their method names have been changed to follow Perl convention + for internal methods: + + -- Catalyst::Request->has_io_fh ==> _has_io_fh + -- Catalyst::Request->has_env ==> _has_env + -- Catalyst::Response->has_write_fh ==> _has_write_fh + + These are breaking changes but these methods were never documented and serve + no use for external code. If you are using thing, you need to make the noted + change (but please consider finding another way to do what you are trying to + do). t0m++ for code review of Hamburg branch. + +5.90049_006 - 2013-11-04 + - Fixed case where test could fail when Starman was partly installed (n0body++) + - Fixed missing date information in previous release + +5.90049_005 - 2013-10-31 + - NEW FEATURE: New Controller action attribute 'Consumes', which allows you + to specify the content type of the incoming request. This makes it easier + to create actions that only handle certain content type POST or PUT, such + as actions that only handle JSON or actions that only understand classic + HTML forms. + - NEW FEATURE: Request->body_data is now also populated from classic HTML + Forms using CGI::Struct to support nested data. For non nested data you + should use the classic ->body_parameters method. + - Removed PSGI $env keys that are added on the 'plack.request.*' namespace + since after discussion it was clear those keys are not part of the public + API. Keys removed: 'plack.request.query', 'plack.request.body', + 'plack.request.merged' and 'plack.request.http.body'. Altered some test + cases to reflect this change. + +5.90049_004 - 2013-10-18 + - JSON Data handler looks for both JSON::MaybeXS and JSON, and uses + whichever is first (prefering to find JSON::MaybeXS). This should + improve compatibility as you likely already have one installed. + - Fixed a warning in the server script (bokutin++) + - We now populate various Plack $env keys in order to play nice with + downstream middleware or plack apps (and to reduce processing if + those keys already exist). Keys added: + - plack.request.query + - plack.request.body + - plack.request.merged + - plack.request.http.body + (NOTE: REMOVED IN 5.90049_005) + - If incoming input (from a POST or PUT) is not buffered, create the + buffer and set the correct psgi env keys to note this for downstream + psgi apps / middleware. This should solve some issues where Catalyst + sucks up the body input but its not buffered so downstream apps can't + read it (for example FCGI does not buffer). We now also try to make + sure the body content input is reset to the start of the filehandle + so that we are polite to downstream middleware /apps. + - NEW FEATURE: Catalyst::Response can now pull response from a PSGI + specification response. This makes it easier to host external Plack + applications under Catalyst. See Catalyst::Response->from_psgi_response + - NEW FEATURE: New configuration option 'use_hash_multivalue_in_request' + will populate $request methods 'parameters', 'body_parameters' and + 'query_parameters' with an instance of Hash::MultiValue instead of a + HashRef. This is used by Plack and is intended to reduce the need to + write defensive logic since you are never sure if an incoming parameter + is a scalar or arrayref. + - NEW FEATURE: We now experimentally support Net::Async::HTTP::Server + and IO-Async based event loops. Examples will follow. + +5.90049_003 - 2013-09-20 + - Documented the new body_data method added in the previous release + - Merged from master many important bugfixes and forward compatiblity + updates, including: + - Use modern preferred method for Moose metaclass access and many other + small changes to how we use Moose for better forward compat (ether++) + - Killed some evil use of $@ (ether++) + - spelling fixes and documentation updates (ether++), (gerda++) + - use Test::Fatal over Test::Exception (ether++) + - Misc. test case fixes to modernize code (ether++) + - Added a first pass cpanfile, to try and make it easier to bootstrap + a development setup (ether++) + +5.90049_002 - 2013-08-20 + - Fixed loading middleware from project directory + - Fixed some pointless warnings when middleware class lacked VERSION + - NEW FEATURE: Declare global 'data_handlers' for parsing HTTP POST/PUT + alternative content, and created default JSON handler. Yes, now Catalyst + handles JSON request content out of the box! More docs eventually but + for now see the DATA HANDLERS section in Catalyst.pm (or review the test + case t/data_handler.t + +5.90049_001 - 2013-07-26 + - Declare PSGI compliant Middleware as part of your Catalyst Application via + a new configuration key, "psgi_middleware". + - Increased lowest allowed module version for Module::Pluggable to be 4.7 (up + from 3.4) to solve the fact this is no longer bundled with Perl in v5.18. + +5.90042 - 2013-06-14 + - Removed more places where an optional dependency shows up in the test + suite. Hopefully really fixed the unicode regression introduced in 5.90040 + - reverted the change we introduced in 5.90040 where a unicode conversion + error warned instead of died. Now it dies again, like in the stand alone + plugin + - More work to make sure nothing happens with encoding unless you explicitly + ask for encoding + - Code to hopefully fix an issue where file uploads using the unicode plugin + caused trouble. + +5.90041 - 2013-06-14 + - Bug fix release to fix regressions introduced in previous. I would consider + this a likely upgrade and if you are having trouble with the previous I hope + this fixes all of them. + - Fix regression with the cored Unicode plugin that broke systems where you are + setting encoding type in an external configuration file + - Fixed circular dependency introduced when we cored the unicode plugin tests + - Fixed a longstanding problem with stats when locale uses , instead of . for + number decimals + - Fixed some docs that didn't properly date the previous release. + +5.90040 - 2013-06-12 ! Stricter checking of attributes in Catalyst::DispatchType::Chained: 1) Only allow one of either :CaptureArgs or :Args 2) :CaptureArgs() argument must be numeric @@ -16,6 +374,15 @@ TBA action in an action chain throws and error (fixes issues where currently the remaining actions are processed and the error is handled at chain termination). + - Cored the Encoding plugin. Now get unicode out of the box by just setting + $c->config->{encoding} = 'UTF-8'. BACKCOMPAT WARNING: If you are using + the Encoding plugin on CPAN, we skip it to avoid double encoding issues, so + you should remove it from your plugin list, HOWEVER the 'encoding' config + setting is now undef, rather than 'UTF-8' (this was done to avoid breaking + people's existing applications) so you should add the encoding setting to + you global config. There's some other changes between the stand alone + plugin and the cored version, if you use it be sure to see Catalyst::Upgrading + for more. - minor documentation typo fixes and updates 5.90030 - 2013-04-12