Go to for the roadmap and known issues. 1.0034 2015-02-02 21:42:42 CET [SECURITY] - Fixed a possible directory traversal with Plack::App::File on Win32 (sri) [IMPROVEMENTS] - Documentation improvements (timbunce, oalders, autarch, frioux) - Avoid warnings in Plack::App::WrapCGI (frioux) 1.0033 2014-10-23 12:33:18 PDT [BUG FIXES] - Lint: Fix error messages (fgabolde) #473 - ErrorDocument: Reverse the $done filtering (nwellnhof) #474 [IMPROVEMENTS] - StackTrace: Improve the accuracy of thrown exceptions in case where an excpetion is thrown in destructors (nwellnhof) #476 1.0032 2014-10-04 11:13:24 PDT [IMPROVEMENTS] - Support Server::Starter in FCGI handler (yuryu) #435 - Various documentation fixes 1.0031 2014-08-01 13:19:14 PDT [SECURITY] - Plack::App::File would previously strip trailing slashes off provided paths. This in combination with the common pattern of serving files with Plack::Middleware::Static could allow an attacker to bypass a whitelist of generated files (avar) #446 [IMPROVEMENTS] - Let HTTP::Message::PSGI warn in case of invalid PSGI response (wchristian) #437 - Update documentation on how response_cb works with writer (doy) - Make AccessLog work on non-POSIX environment (dex4er) #442 - Plack::App::WrapCGI no longer warns under 5.19.9 (frew) - Avoid Rosetta Flash attack in JSONP middleware (nichtich) #464 - Fix Plack::Util::inline_object to make it work with can() as a class method [NEW FEATURES] - Add $req->query_string shortcut to access QUERY_STRING in PSGI environment 1.0030 2013-11-23 08:54:01 CET [IMPROVEMENTS] - Middleware::LogDispatch stringifies objects (oalders) #427 - Encode wide character strings as UTF-8 in HTTP::Server::PSGI #429 - Optimize Plack::Response->finalize performance (kazeburo) #433 - Optimize mount() performance in Plack::App::URLMap [BUG FIXES] - ErrorDocument: remove Content-Encoding and Transfer-Encoding (kazeburo) #430 - Fix harakiri test hang on win32 (wchristian) #431 - Handler::FCGI: Restore --keep-stderr option (mauzo) #432 1.0029 2013-08-22 14:05:44 PDT [NEW FEATURES] - Plack::Test now has a simpler object-oriented interface that doesn't take multiple callbacks. #420 [IMPROVEMENTS] - bump dependencies for Test::TCP and HTTP::Tiny - Set no_proxy for HTTP::Tiny in tests (kazeburo) [INCOMPATIBLE CHANGES] - Split HTTP::Server::Simple handler from Plack distribution and merge to HTTP-Server-Simple-PSGI distribution 1.0028 2013-06-15 01:42:52 PDT [IMPROVEMENTS] - Skip cgi related tests for Win32 (chorny) #413 - Skip tests that could potentially write empty bytes, which could cause issues on some servers on local sockets with HTTP::Tiny - Skip tests that require HTTP::Cookies, if not available #414 1.0027 2013-06-13 21:30:12 PDT [IMPROVEMENTS] - Not a dev release, including XS free version of Plack::Test* - Fix cgibin tests that often fail on Win32 #375 1.0026 2013-06-12 23:00:21 PDT [INCOMPATIBLE CHANGES] - use HTTP::Tiny in Plack::Test::Suite and Plack::Test::Server rather than skipping it. 1.0025 2013-06-12 13:08:58 PDT [INCOMPATIBLE CHANGES] - No XS! Eliminates dependency to LWP::UserAgent by making it completely optional for testing. If you run Plack::Test with Server implementation or run Plack::Test::Suite (for PSGI handlers) without LWP installed, the tests will automatically be skipped. This removes the eventual sub-dependency to HTML::Parser, which is the only XS dependency in Plack. #408 [IMPROVEMENTS] - Fixed the warning in OO usage of Plack::Builder (doy) #407 - Shotgun loader now dies if used in Win32 since it leaks memory #320, #400 - Suppress warnings for Test::TCP (kazeburo) #406 - $res->to_app shortcut (ether) #409 1.0024 2013-05-01 10:05:56 PDT [IMPROVEMENTS] - Fix warnings for Plack::App::WrapCGI (frioux) - Ignore emacs lock file from restarter (maio) - Add documentation for environment variable in Auth::Basic - Some Metadata cleanup and Travis CI 1.0023 2013-04-08 11:13:11 PDT [IMPROVEMENTS] - Use Apache::LogFormat::Compiler in AccessLog (kazeburo) 1.0022 2013-04-02 12:37:42 PDT [BUG FIXES] - Fixed a major bug in 1.0020-1.0021 where posix_default prevents arbitrary arguments for plackup-compat (e.g. starman) to handle them (Thanks to justnoxx) Starman#66 [IMPROVEMENTS] - Fixed test warnings (Keedi Kim) 1.0021 2013-04-02 11:20:00 PDT - Repackage with Milla v0.9.6 #392 1.0020 2013-04-01 19:34:54 PDT [INCOMPATIBLE CHANGES] - Enable posix_default and gnu_compat in plackup Getopt, so that ambiguous option names do not match with long options accidentally [IMPROVEMENTS] - Document fix for the AccessLog (ether) - Special-case Content-Length and Content-Type for %{}i in AccessLog format #387 1.0019 2013-04-01 17:58:25 PDT - Trial release with Milla 1.0018 Fri Mar 8 10:43:45 PST 2013 [IMPROVEMENTS] - Performance boost in Plack::Request#query_parameters (lestrrat) - Added custom log formats for %m, %U, %q and %H (Hiroshi Sakai) - Fixed warnings in SimpleContentFilter (earino) [DOCUMENTATION] - Added docs about plackup --path - Added docs about using manager object in Plack::Handler::FCGI 1.0017-TRIAL Thu Feb 7 19:21:24 PST 2013 [INCOMPATIBLE CHANGES] - Gives you warnings when you use one of Plack::App objects in `plackup -e` or in .psgi files but forgot to call ->to_app to make it a PSGI application (#369) Still automatically converts them for backward compatibility, but in the loading time inside Plack::Builder. [BUG FIXES] - chdir to the CGI path when executing CGIBin (#338, #368) 1.0016 Thu Jan 31 13:21:14 PST 2013 [SECURITY] - Fixed directory traversal bug in Plack::App::File on win32 environments [INCOMPATIBLE CHANGES] - Updated Plack::Builder OO interface to be more natural. Still keeps backward compatible to the old ->mount() and ->to_app() interface. [NEW FEATURES] - Static middleware 'path' callback now takes $env as a 2nd argument (avar) - Static middleware takes 'content_type' callback to determine custom MIME (pstadt) [IMPROVEMENTS] - Fixed regexp warning for blead (doy) - Documentation update for AccessLog::Timed to suggest Runtime (ether) - Ignore vim swap files on restarter (nihen) - Major doucmentation overhaul on Apache2 startup files (rkitover, avar)) 1.0003 Wed Aug 29 13:44:53 PDT 2012 [BUG FIXES] - Fix Basic authentication error in case password contains a colon #319 - Fix AccessLog middleware in platforms where %z strftime is not supported #318 - Escape $_ in Plack::Request path method due to a possible URI::Escape bug 1.0002 Mon Aug 13 17:04:25 PDT 2012 [NEW FEATURES] - Added --no-default-middleware option to plackup #290 [BUG FIXES] - Use C locale for AccessLog strftime #313 - Escape Plack::Request URI path using RFC 3986 definition (ssmccoy) [IMPROVEMENTS] - Documentation improvements (ether, Tom Heady) - Skip displaying ".." in Plack::App::Directory #277 - Document load_class() doesn't validate user input. #285 1.0001 Thu Jul 26 16:24:13 PDT 2012 [INCOMPATIBLE CHANGES] - Deleted lots of code, methods and warnings that have been deprecated since 0.99 (which should have been done in the 1.0000 release) [DEVELOPERS] - Added bootstrap script to install devel dependencies [IMPROVEMENTS] - Fixed version numbers in some of the modules that have their own $VERSION 1.0000 Thu Jul 19 18:59:18 PDT 2012 - This be 1.0! (Same as 0.9991) 0.9991 Thu Jul 19 17:27:52 PDT 2012 [NEW FEATURES] - Added IIS7 fix middleware (t0m) 0.9990 Wed Jul 18 11:12:07 PDT 2012 [INCOMPATIBILE CHANGES] - Plack::Request changes the way it parses QUERY_STRING for valueless keys such as "?a&b=1". Now "a" becomes part of query_parameters with empty string as its value (yannk) [IMPROVEMENTS] - Support max-age options in Plack::Response cookies (remorse) - Pass correct protocol from HTTP::Server::PSGI to display https URL correctly (siracusa) - Copy Authorization header from FastCGI handler (ray1729) - Stop special casing COOKIE environment variable in Plack::Request headers (doy) 0.9989 Thu Jun 21 13:39:11 PDT 2012 [IMPROVEMENTS] - Support streaming in Head middleware (wreis) - Document middleware prefixing (Jon Swartz) - Make Basic authentication detection case insensitive per RFC (Mark Fowler) - Added backlog option to FCGI handler (xaicron) 0.9988 Fri May 11 12:25:09 CEST 2012 [BUG FIXES] - Fixes HTTP_HOST in HTTP::Message::PSGI #287 (doy) 0.9987 Thu May 10 07:06:32 CEST 2012 [IMPROVEMENTS] - Support streaming in AccessLog::Timed (Peter Makholm) - Support streaming in ErrorDocument - Removed UTF8 hack in HTTP::Message::PSGI. Depends on URI.pm 1.59 (wreis) - Set Host headers correctly in HTTP::Message::PSGI #177 - Added documentation on supported %-flags in AccessLog (ether) - Skip unnecessary tests on non-developer environment 0.9986 Mon Mar 12 11:26:59 PDT 2012 [IMPROVEMENTS] - Use I/O handles to FCGI::Request instead of global STDIN, STDOUT etc. (chansen) - Improved FastCGI docs (osfameron) - Cascade app now returns the last response code (aristotle) 0.9985 Mon Oct 31 13:11:19 PDT 2011 [BUG FIXES] - Short circuit Plack::Handler fallback to avoid %INC bugs in perl 5.8 (mst) - Fixed Makefile.PL to avoid Test::SharedFork interferring with Module::Install (ambs)) 0.9982 Tue Jul 19 13:07:35 PDT 2011 [BUG FIXES] - Fixed the bug in restarter introduced in 0.9980 (nihen) #223 #234 - Removed a debug statement left over in Plack::Util - Fixed warnings in Lint 0.9981 Mon Jul 18 17:24:11 PDT 2011 [BUG FIXES] - Plack::Request: Added a sanity check to remove newlines from headers to follow the PSGI specification #224 - HTTPParser::PP: Fixed warnings #225 - plackup now prints errors to psgi.errors rather than STDERR - Fixes issues with undef returned from streaming handler in middleware #231 - ContentLength: Do not auto-add Content-Length from block devices, pipes and character files [NEW FEATURES] - HTTPExceptions: Support ->as_psgi method on exceptions (doy) - FastCGI: Support psgix.harakiri [IMPROVEMENTS] - Lint: Added more checks to validate header values - StackTrace: Strip caller information since it is not useful anyway - HTTPExceptions: Added rethrow option (doy) - Misc. doc fixes on plackup (chromatic) - binmode STDIN for CGI handler for Win32 #218 - Remove the test that tests Server specific handling of Transfer-Encoding - Fixed POD link (audreyt) 0.9980 Mon Jun 6 20:24:25 PDT 2011 [BUG FIXES] - Fixed a bug where restarting loader doesn't terminate children (#209) - Strip URI fragments off of PATH_INFO and QUERY_STRING (#213) [IMPROVEMENTS] - Documented -r vs auto server detection caveat - Documented a default AccessLog format (ask) - Support %V in AccessLog formats (ask) - Document PLACK_HTTP_PARSER_PP (melo) [NEW FEATURES] - Added experimental IPv6 and SSL support for the built-in HTTP::Server::PSGI 0.9979 Tue May 17 09:54:03 PDT 2011 [BUG FIXES] - Fixed Middleware::AccessLog's default %t format to match Apache's format - Fixed a warning in Apache1 handler where PATH_INFO doesn't exist #204 - Fixed a bad test relying on new Test::More versions [IMPROVEMENTS] - Fixed Lint to accept bare in-memory filehandle per - Added setup_env() to Plack::Handler::CGI (markstos) - Added a non-blocking Hello World example in eg/dot-psgi - Doc cleanup 0.9978 Wed May 4 11:29:12 PDT 2011 [TEST FIXES] - Fixed a failing output_encoding.t because of FCGI dependencies - Improved Plack::Test::Suite documentation 0.9977 Sun May 1 12:16:08 PDT 2011 [BUG FIXES] - Fixed ConditionalGET to not die with streaming interface (reported by Paul Ervamaa) - Add a reason string to CGI/FastCGI Status header to comply with RFC 3875 (Stephen Clouse) - Fixed a CGI/FastCGI handler to ensure newlines are not mangled on Win32 platforms (Christian Walde) [IMPROVEMENTS] - localize @ARGV to empty when evaluating a PSGI application () - Fixed the use of Getopt::Long to make the pass_through flag local - Middleware::JSONP now supports more response types such as IO::Handle (reported by Theory) 0.9976 Fri Apr 8 18:07:11 PDT 2011 [NEW FEATURES] - Support setting content_type in App::File (ajgb) [IMPROVEMENTS] - Document fixes (jhannah) - Skip bad tests failing on LWP 6 (daxim) 0.99_75 Thu Mar 24 11:29:22 PDT 2011 [INCOMPATIBLE CHANGES] - builder {} now always returns a PSGI code reference, instead of inconsistently returning URLMap object when mount() is used. (reported by hoelzro) - Plack::Runner now automatically calls ->parse_options() if it hasn't been called, so the sane defaults for plackup can be applied. (reported by arcanez) [BUG FIXES] - Fixed the way to override %ENV to avoid test breakages in Win32 #179 - Properly append '/' when linking to a directory in Plack::App::Directory (theory) [IMPROVEMENTS] - Skips the current directory in Plack::App::Directory - Plack::App::Directory now redirects to a canonical URL that has a trailing slash just like Apache (hobbs) - Fixed some typos and outdated information in the PODs 0.9974 Thu Mar 3 20:55:28 PST 2011 - Added a documentation about using relative URI paths beginning with // - Added IIS6ScriptNameFix that fixes SCRIPT_NAME for IIS6 FastCGI, extracted from Catalyst (rafl) - Moved the wrapcgi/exec tests for Win32 #174 - Fixed a warning for the new Test::TCP in FCGI testing - Clear %ENV when running the Plack::Test::Suite with Server implementation (hachi) 0.9973 Sat Feb 26 09:40:15 PST 2011 - Fixed the regexp in the code check added in 0.9972 (leedo) 0.9972 Thu Feb 24 10:50:01 PST 2011 - Fixed the Plack::Runner docs to avoid the cargo cult issue of __FILE__ eq $0 - Added a silly check to give warnings if the idiom __FILE__ eq $0 is used in .psgi 0.9971 Wed Feb 23 14:02:35 PST 2011 [INCOMPATIBLE CHANGES] - Localize $0 to the given .psgi path when evaluating it in Plack::Util::load_psgi() This fixes the unexpected values and/or crashes with Starman when your application uses FindBin module. 0.9970 Tue Feb 22 08:35:50 PST 2011 - Apache2: Fixed a bug where dispatcher fails to parse first path when it begins with two or more slashes (clkao) 0.9969 Fri Feb 18 21:35:29 PST 2011 - Suppress the use of unlocalized $_ in Plack::Runner (mst) - Plack::Handler::Net::FastCGI is now removed from Plack core dist. It will be released as a separate distribution on CPAN. - Fixed Plack::Handler::Apache2 so that it can safely call log (Andy Wardley) - StackTrace: Display graceful fallback errors when $SIG{__DIE__} is overridden in the application (mkanat) 0.9968 Wed Feb 9 19:07:48 PST 2011 - Fixed Recursive middleware to rethrow unknown exceptions. #166 (reported by waba) - Document response_cb. #121 - Plack::Loader to print errors if it is really a compilation error - Fixed the Cascade app to work with all 404 responses with the streaming interface. #171 (reported by eevee) 0.9967 Tue Jan 25 14:26:37 PST 2011 - Fixed StackTrace to require D::ST::WithLexicals 0.08 that supports 'message' (doy) 0.9966 Tue Jan 25 12:00:25 PST 2011 - Fixed a memory leak in SimpleLogger (vti) - Support %v in AccessLog (Ranguard) - Force set CONTENT_LENGTH in req_to_psgi when $content is given to HTTP::Request (timbunce) #150 - Fixed a case where SCRIPT_NAME and PATH_INFO can both get empty in req_to_psgi (doy) #163 0.9965 Mon Jan 24 23:08:04 PST 2011 - Requires Devel::StackTrace 0.11 - Fixed a regression where StackTrace wasn't able to get the thrown exception as an error message (hachi) 0.9964 Mon Jan 24 16:29:08 PST 2011 - Various documentation improvements (miyagawa, schwern) - Improved the way it eliminates Plack::Middleware::StackTrace from its own stacktrace (Jonathan Swartz) 0.9963 Mon Jan 10 16:46:33 PST 2011 - Fixed fcgi.t for lighttpd < 1.4.23 (confound) 0.9962 Sat Jan 8 21:07:30 PST 2011 - Same fix as 0.9961 but works around the issues with Strawberry unarchiver 0.9961 Fri Jan 7 21:54:04 PST 2011 - Skip directory.t on win32 since the directory "stuff.." can't be created [RT:64545] 0.9960 Sat Dec 25 11:16:08 PST 2010 - FCGI: Fixed the regression in 0.9958 where PATH_INFO gets wrong value when hosted under a non-root path (ambs) - Improved the FastCGI and Apache2 test infrastructure to test SCRIPT_NAME values 0.9959 Tue Dec 21 11:38:08 PST 2010 - Apache2: Fixed the regression bug around LocationMatch caused by fixes in 0.9958 (cho45) 0.9958 Mon Dec 20 15:18:54 PST 2010 - Plack::Handler::Apache[12] now handles Authorization: header automatically, no need for mod_rewrite workaround anymore (cho45) - Fixed Apache[12] and FCGI where multiple forward slashes were munged (cho45) - Static: Added pass_through option to pass non-existent paths to the app. Fixing the docs to match with the code (beanz) #154 0.9957 Thu Dec 16 11:27:29 PST 2010 - Fixed warnings in Plack::Request cookie parsing (typester) - removed MethodOverride middleware. Now it is a standalone distribution on CPAN (theory) 0.9956 Thu Dec 9 19:32:46 PST 2010 - FastCGI: Fixed an empty PATH_INFO with mod_fastcgi (and possibly others) - FastCGI: Improved the automatic detection of the case when invoked from web server. #141 (reported by LeoNerd) - plackup: Document that -e 'enable ...' doesn't assume app.psgi when there's no argument. #106 (clkao) - Plack::App::FCGIDispatcher: Remove the Status: header #123 (reported by Htbaa) - Apache2: Work around issues where SCRIPT_NAME gets wrong when LocationMatch is used. #136 (reported by atiking) 0.9955 Thu Dec 9 18:02:50 PST 2010 - More fixes to a possible directory traversal 0.9954 Thu Dec 9 17:45:59 PST 2010 - Fixed a directory traversal bug in Plack::App::File etc. RT:63020 0.9953 Fri Dec 3 14:50:09 PST 2010 - Include the original error message in the StackTrace text output on console. This requires Devel::StackTrace 1.23 and Devel::StackTrace::WithLexicals 0.08 (optional) - Fixed AccessLog middleware to handle multiple dashes in %{} (Jiro) 0.9952 Thu Dec 2 14:03:48 PST 2010 - Fixed the potential deadlocks in WrapCGI's read/write pipe (typester) - Improved documentations on plackup -e - Fixed a potential DoS vulnerability in HTTP::Server::PSGI (kazuho) - Allows setting names of FCGI process with proc_title option (rafl) 0.9951 Mon Oct 25 13:50:33 PDT 2010 - Added Feersum to the benchmark script (stash) - Lint: fixed the body handle check to see if the file has getline() method (tokuhirom) - StackTrace: store the stacktrace in $env->{'plack.stacktrace.text'} and $env->{'plack.stacktrace.html'} (theory) - Added ->mount method to the Plack::Builder OO interface (franckcuny) - HTTPExceptions: Don't set an invalid Content-Length when the exception is not an object (ask) - ErrorDocument: Fixed wrong Content-Length header be set (ask) 0.9950 Thu Sep 30 14:11:33 PDT 2010 - Fixed typos in middleware docs (miyagawa, theory, tokuhirom) - App::Directory: fixed URL generation escape bug (chiba) - Middleware::JSONP: support callback parameter name (franck) 0.9949 Tue Sep 14 11:59:36 PDT 2010 - Fixed FCGI handler docs - Auth::Basic: Pass $env to the callback so .htpasswd based auth can be implemented with PATH_INFO (doy) 0.9948 Thu Sep 9 16:01:53 PDT 2010 - Fixed a bug introduced in 0.9947 where $req->upload loses the temporary files when Plack::Request object is instantiated multiple times. It could happen if one of the pre-processing middleware uses Plack::Request and then again in the application or frameworks. 0.9947 Thu Sep 9 02:26:14 PDT 2010 - Plack::Loader: Fixed a typo in ENV that prevents warnings messages in development - Added flymake temporary file in Restarter (hirose31) - Plack::Request: Fixed a bug that HTTP::Body temporary files were not cleaned up (plu) - Middleware::AccessLog: Fixed a bug where %{key}i ignores the value '0' (nekoya) 0.9946 Sat Aug 28 22:32:16 PDT 2010 - Fixes UUV warnings in Apache2 handler RT:60472 - Fixed various test failures due to dependencies) 0.9943 Fri Jul 30 13:24:15 PDT 2010 - Updated Apache* handler so it could duck type on Loader (jnap) - Added --access-log to plackup (grantm) - Added support for streaming stdio in Net::FastCGI handler (chansen) 0.9942 Fri Jul 23 23:42:43 PDT 2010 - Allow passing FCGI manager object to Handler::FCGI (confound) - Call FCGI::Request::Finish() before pm_post_dispatch (confound) - Moved response_cb() to Plack::Util (confound) - re-enable WithLexicals now that PadWalker segfaults with 5.12 is fixed #98 0.9941 Thu Jul 8 18:17:30 PDT 2010 - Makes Lint not warn about ASCII-only strings with UTF8 flag because they're safe 0.9940 Fri Jul 2 23:37:51 PDT 2010 - Fixed META.yml 0.9939 Fri Jul 2 17:56:10 PDT 2010 - Improved middleware documentation (miyagawa, leedo, bobtfish) - Added a test about Transfer-Encoding with Content-Length: 0 (chiba) - Fixed NullLogger middleware (haarg) - Fixed Plack::Util inline object's can() (haarg) - Middleware::HTTPException now honors ->location method of the exception (frodwith) - Middleware::AccessLog: Fixes %D to be microsec so it's compatible to Apache #119 (cho45) - Fixed Plack::Request->uri when PATH_INFO conatins URI reserved characters #118 (leedo) 0.9938 Sun May 23 17:13:05 PDT 2010 - ErrorDocument: Added Content-Length to error responses (hachi) - Improved docs about conditional middleware loading - XSendfile: Updated (undocumented) environment key to switch frontend - Auth::Basic: Added notes about how to use it with Apache (mod_perl and CGI) [RT #57436] 0.9937 Fri May 14 23:11:27 PDT 2010 - Fixed -I broken in 0.9936 (juster) #114 0.9936 Fri May 14 15:58:02 PDT 2010 - Remove 'use lib "lib"' from plackup - Remove HTTP_CONTENT_* environment variables in FastCGI handlers to deal with buggy web servers. (Justin Davis) 0.9935 Wed May 5 15:17:06 PDT 2010 - Set an empty PATH_INFO if CGI environment doesn't set so (hachi) #109 - Fixed a possible weird combination of SCRIPT_NAME and PATH_INFO in CGI handlers - localize PATH_INFO and SCRIPT_NAME in App::File and subclasses #100 - updated COPYRIGHT notice for Debian - Middleware::StackTrace now displays text trace to psgi.errors like Rack::ShowExceptions (castaway, theorbtwo) - Middleware::StackTrace: Fixed the text stack trace format to be more readable 0.9934 Tue May 4 15:47:33 PDT 2010 - Added a test in CGIBin where binmode ":utf8" causes bad content-length #110 - Doc fix for the deprecated servers - Initialize Module::Refresh (hiratara) - Added mime_type to ErorrDocument (kakuno) 0.9933 Tue Apr 27 14:32:23 PDT 2010 - refactored the app.psgi loading error handling - Enable type checking of the app in Lint->wrap - allow plackup -e'...' - Disable FCGI::Client/Net::FastCGI test by default 0.9932 Mon Apr 19 15:23:55 JST 2010 - Enable Lint middleware by default in the development env - Lint middleware now validates $app on startup - Fixed documentations on middleware and handlers 0.9931 Fri Apr 16 23:52:27 PDT 2010 - replace kyoto.jpg test image file with smaller baybridge.jpg to strip down the tarball size from 2.5MB to 212KB. 0.9930 Tue Apr 13 20:18:06 PDT 2010 - Added Plack::Handler::Net::FastCGI (chansen) - Made Test::TCP a hard dependency since Plack::Test needs it - Added Delayed loader for Starlet and Starman (clkao) - Hide logger middleware from log4perl's caller stack (haarg) 0.9929 Wed Mar 31 00:33:10 PDT 2010 - Middleware::JSONP: Simplified code and does not support IO response body type - fcgi.t: skip tests with lighttpd < 1.4.17 per CPAN Testers #7040400 0.9928 Mon Mar 29 17:02:42 PDT 2010 - log_dispatch.t: require Log::Dispatch::Array 0.9927 Mon Mar 29 12:43:44 PDT 2010 - require newer Log::Dispatch (confound) - StackTrace: Encode exceptions in utf-8 in case they include wide characters #95 (tokuhirom) - StackTrace: Depends on a new Devel::StackTrace::AsHTML that escapes wide characters - StackTrace: Display stacktrace only if the thrown exception is a direct error #91 (frodwith) - StackTrace: Added 'force' option to force stacktrace in 500 errors - Avoid warnings when response_cb filter returns undef in ARRAY response body #92 (hiratara) - URLMap: Ignore port number if it matches with SERVER_PORT #90 (omega) - URLMap: Enable debug print with PLACK_URLMAP_DEBUG=1 #94 - JSONP: Fixed possible infinite-loop when using with IO response body (hiratara) - Fixed the compatiblity issues with FastCGI docs and tests with lighttpd 1.4.26 (tadam) - LighttpdScriptNameFix: Added 'script_name' option (tadam) 0.9926 Sun Mar 28 14:37:03 PDT 2010 - Added -v|--version option to plackup and the ability for Plack::Runner users to override 0.9925 Sat Mar 27 19:03:57 PDT 2010 - Make this a non-devel release 0.99_24 Sat Mar 27 13:31:51 PDT 2010 - Disable Devel::StackTrace::WithLexicals for now until PadWalker RT #55242 is fixed 0.99_23 Sat Mar 27 01:02:24 PDT 2010 - Dropped keep-alive code from HTTP::Server::PSGI now that Starlet clones the code - Special case --disable-* and --enable-* command line options in plackup and Plack::Runner 0.99_22 Thu Mar 25 19:48:08 PDT 2010 - INCOMPATIBLE: removed --max-workers option from the default standalone server. Now it gives you warnings and falls back to the single process mode. 0.99_21 Thu Mar 25 15:05:53 PDT 2010 - INCOMPATIBLE: removed a workaround for lighttpd SCRIPT_NAME bug in FCGI handler See for details. - HTTPException now logs standard exceptions to psgi.errors - micro optimization for Plack::Request content() method 0.9920 Thu Mar 18 23:48:06 PDT 2010 - Fixed URL path prefix matching in URLMap (hiratara) - Fixed Plack::Request->content on GET with FastCGI servers (sunnavy) - Added new middleware Middleware::Head - Fixed localization bug in Plack-Util/load.t 0.9919 Wed Mar 17 22:50:09 PDT 2010 - Properly rethrow .psgi compilation errors 0.9918 Wed Mar 17 22:35:00 PDT 2010 - Load .psgi file in an unique package rather than Plack::Util to avoid namespace pollution gh-88 0.9917 Wed Mar 17 15:33:43 PDT 2010 - Added Plack::Handler::Apache2::Registry (hiratara) - Set default PLACK_ENV in Plack::Util::load_psgi 0.9916 Fri Mar 12 12:52:39 JST 2010 - Added support for a new (renamed) web server Corona - Document enable coderef in Plack::Middleware (clkao) - Middleware::StackTrace: Send plain text errors to clients that probably do not understand HTML like curl 0.9915 Mon Mar 8 18:22:33 JST 2010 - Fixed a dumb bug in Plack::Handler::Apache2, broken in 0.9914 (hiratara) - Added a warning if you misuse mount() 0.9914 Wed Mar 3 16:02:38 PST 2010 - Fixed psgix.io and nested closure for perl 5.8 (hiratara) - Added an inheritance friendly Apache2 interface (frodwith) - HTTP::Server::PSGI: Close client connection in the first run (hirose31) - Fixed Loader/auto.t to reset env var (gugod) 0.9913 Thu Feb 25 19:14:40 PST 2010 - Revive psgix.io in HTTP::Server::PSGI (hiratara) - Fix packaging issue 0.9912 Thu Feb 25 01:28:21 PST 2010 - Fixed the possible source of memory leak in middleware + streamer + HTTP::Server::PSGI with perl 5.8.x (hiratara) 0.9911 Tue Feb 23 01:55:04 PST 2010 - Removed psgix.io extension to fix streaming choke issue on HTTP::Server::PSGI (tomyhero) 0.9910 Mon Feb 22 19:03:17 PST 2010 - This is the first non-dev release since 0.99. Read all the change logs below. - Support streaming in JSONP (hiratara) - Fixed various handler docs (markstos) - Added Starman and Twiggy to benchmark script - INCOMPATIBLE: Loader now prefers Twiggy when AnyEvent is loaded - Implemented (experimental) psgix.io and psgix.input.buffered extensions - Fixed Plack::Request POST parser to use psgix.input.buffered for better performance - Added PLACK_ENV environment support in plackup #63 - Added HTTPExceptions middleware - Added Recursive middleware 0.99_05 Wed Feb 10 12:46:05 PST 2010 - Changed the Loader command line options to -L from -l - Runner now folds --host, --port and --socket to --listen and vice verca - Added -D and --daemonize to plackup/Runner standard options - Fixed FCGI handler to work with the new --listen and --daemonize option - Fixed a bug in static.t where it chdir's before loading modules - Renamed Writer to BufferedStreaming middleware and added docs - Support streaming apps in Shotgun loader - Falls back to Standalone handler when auto-detected backend is not available (hiratara) - Support chunked-input in HTTP::Request->to_psgi - Make the Reloader work with preforked server (chiba) - Added 'Auto' backend in TempBuffer - Added Nomo backend to the benchmark script - Updated HTTP::Server::PSGI to support experimental psgix.input.buffered - Plack::Request now honors psgix.input.buffered to see psgi.input is seekable - Renamed Standalone handler to HTTP::Server::PSGI for consistency while keeping 'Standalone' as a nickname 0.99_04 Fri Feb 5 23:10:48 PST 2010 - Updated Test suite for multiple request headers to relax a bit for AE::HTTPD - Added a test for large POST body which revealed FCGI::Client bug - Added a handler for HTTP::Server::Simple::PSGI - Depend on a decent version of URI (tomyhero) - Reworked Loader API so the default loader can autodetect the backend again - run_app now doesn't use Try::Tiny but use plain eval {} 0.99_03 Wed Feb 3 16:09:14 PST 2010 - Use 0 as a default address in the server_ready hook in Plack::Runner - Document Plack::Handler naming scheme - Fixed how Plack::Server::Standalone saves args - Supported streaming interface in Cascade and URLMap - mentions awesome WSGI Paste in Plack documentation - Removed URI caching in Plack::Request since it's fast enough - Fixed packaging issue due to Module::Install::Share bug (rafl) - Support 'file' option in App::File and its subclasses - Fixed SCRIPT_NAME and PATH_INFO in App::CGIBin - Fixed App::Directory and ::File not to use Path::Class and its canonicalization. It's now 300% faster! 0.99_02 Sat Jan 30 22:10:45 PST 2010 - Fixed Plack::TempBuffer to work with 5.8 and 5.11.3 - Do not use <$input> in FCGIDispatcher - Skip fcgi_client.t unless explicitly stated (clkao) - clarify and drop some CPAN dependencies (andk) 0.99_01 Fri Jan 29 14:02:04 PST 2010 Incompatible Changes - Rename Standalone servers to HTTP::Server::PSGI - Rename Plack::Server adapters to Plack::Handler. These changes should be transparnt since we have a compatible code to work with the older names as well. - Dropped sendfile(2) AIO support from Standalone server - Plack::Request and Response are now in core, deprecating many methods. Read `perldoc Plack::Request` and its INCOMPATIBILITIES section New Features - New middleware: WrapCGI to convert a single CGI script into a PSGI applciation - Support psgix.logger and psgix.session in Plack::Request - New logger middleware: NullLogger, SimpleLogger, Log4perl and LogDispatch - Refactored Loader classes and added a new Shotgun loader (like rack's Shotgun) - Added -l option to plackup which specifies the Loader backend - New middleware: Refresh reloads modules in %INC in every N seconds - Wraps -e code with 'builder { }' by default. You can also use with *.psgi to add middleware components without editing the file! Bug Fixes and Improvements - Do not call ->canonical in HTTP::Message::PSGI to keep the URI encoded params in Plack::Test tests (rafl, t0m) - Fixed a bug in stupid corner case in HTTP::Message::PSGI where passed URI has UTF-8 encoded strings *and* URI escaped UTF-8 bytes. (chmrr) - Depend on new HTTP::Request::AsCGI that has better REQUEST_URI - Plack::Runner/plackup does not autoload AccessLog in CGI mode anymore - Added server_ready hook to PSGI servers so you can disable them in tests etc. (clkao, rafl) - Escape user-supplied values in AccessLog to avoid control sequence injection (tokuhirom, kazuho) - Support -foo (single dash) style option in Plack::Runner and plackup - Relax the runtime.t check since it still fails on low-res time environments - Now depends on Digest::MD5, HTTP::Body and Hash::MultiValue - Revert the 'require' in load_psgi to do 'do' - Delay load unnecessary modules in Plack::Runner - Fixed psgi.multiprocess value on HTTP::Server::PSGI - PSGI/1.1 support in Lint 0.9031 Mon Jan 11 11:29:04 PST 2010 - Fixed Plack::App::Directory directory listing by switching to Plack::MIME (tokuhirom) This has been broken since 0.9025 - Fixed body filtering middleware such as Plack::Middleware::Deflater (hiratara) This has been broken since 0.9026 0.9030 Sat Jan 9 13:13:17 PST 2010 - Support streaming interface in HTTP::Message::PSGI, Lint and Plack::Test (rafl) - plackup -e doesn't enable strict and warnings by default, like perl - Improved Middleware::Auth::Basic performance and error check 0.9029 Thu Jan 7 19:09:17 PST 2010 - Fixed runtime.t to relax test condition to avoid failures on Win32 (xaicron) - Fixed a bug in FCGI engine where it creates a bogus response when running under a buffered I/O with lighttpd. (fcharlier, typester) - FCGI and CGI server now autoflushes STDOUT to do non-buffering output - Fixed a Plack::MIME bug where extensions like .mp3 fails 0.9028 Tue Jan 5 18:42:07 PST 2010 - Fixed a long standing bug where errors are not printed correctly when the application dies. (tokuhirom) - Fixed FCGIClient passing bogus psgi.* environment values to the backend - Implemented psgi.streaming in all blocking servers (miyagawa, rafl) 0.9027 Sun Jan 3 16:33:23 PST 2010 - Added new middleware Runtime that adds X-Runtime header - Delay load Pod::Usage in Plack::Runner and plackup 0.9026 Fri Jan 1 10:35:26 JST 2010 - Auth::Basic now accepts an object that duck types to ->authenticate (e.g. Authen::Simple) - Reworked how response_cb body callback works, so Content-Length will be updated correctly 0.9025 Sat Dec 26 10:11:59 JST 2009 - Server::Standalone::* should now display the correct Server: value - Fixed a bug in AccessLog::Timed where %D and %T do not work - Fixed a bug in AccessLog::Timed to work with filehandles - Removed a dependency to MIME::Types and include Plack::MIME - Refactored plackup into Plack::Runner - Fixed a failing test under stupid Win32 filesystem - Fixed ConditionalGET to work with delayed response 0.9024 Sat Dec 19 12:25:52 PST 2009 - Overwhauled how -r and -R works in plackup. Looks at .psgi and lib/ under that by default. 0.9023 Thu Dec 17 13:16:38 PST 2009 - Document the use of Plack:: namespace - Use safer Unicode characters in tests to silence warnings #66 - Plack::Util::load_psgi now takes a class name as well. Added notes about the security of its use - Set default host in MockHTTP and keep them if explicitly set (nihen) 0.9022 Sun Dec 13 10:53:01 PST 2009 - Added more assertions to Middleware::Lint - Added a new test to test big HTTP header, which reveals the FCGI::Client bug (zrail, tokuhirom) - plackup -e now automatically loads Plack::Builder - Fixed fcgi tests (tokuhirom) - Fixed Test::MockHTTP to make 500 response when the app died - Fixed a memory leak in StackTrace when WithLexicals is used (chiba, Sartak) - Fixed Middleware::ConditionalGET to deal with stupid IE headers (chiba) - Fixed lots of typos (Sartak) 0.9021 Tue Dec 8 14:29:08 PST 2009 - Doc patches to Plack about CONTRIBUTING (stevan) - Remove Class::Accessor::Fast and added Plack::Util::Accessor (stevan) - Added Plack::Component the common base class for both App:: and Middleware (stevan) - Plack::Test test_psgi now accepts $app, $client in positional args - Plack::Test client callback can now omit host names like $cb->(GET "/") 0.9020 Mon Dec 7 10:38:37 GMT 2009 - Fixed a test (psgibin.t) failure in case sensitive filesystem - Fixed a warning in Plack::Util::header_set 0.9019 Sun Dec 6 05:56:30 GMT 2009 - Fixed a bug in Plack::Util::header_set when to clear multiple headers (chiba) - Added Plack::App::CGIBin that runs cgi-bin scripts as a PSGI application - Added Plack::App::PSGIBin that loads .psgi files from local filesystem 0.9018 Thu Dec 3 00:48:04 PST 2009 - Allow Plack::Middleware->new to accept plain hashes - Added Plack::App::Cascade to create a compound apps that cascade requests - Added POE backend to benchmarks/ab.pl - Implemented Plack::Server::Apache[12]->preload to preload apps in <Perl> or startup file 0.9017 Sun Nov 29 17:33:36 JST 2009 - Fixed more tests that fail on Win32 (charsbar) 0.9016 Sun Nov 29 16:39:40 JST 2009 - removed Middleware::Deflater from the dist. - Fixed Standalone so as not to use Time::HiRes::Alarm on Win32 systems (charsbar, kazuho) - Fixed App::File to set file path using forward slashes on Win32 (charsbar) #49 0.9015 Thu Nov 26 17:31:33 JST 2009 - Fixed a bug in URLMap where $env is shallow copied and some middleware don't work - Added -e and -M to plackup - plackup -r with args (directories to watch) is deprecated. Use -R instead - plackup foo.psgi now DWIMs. -a (--app) continues to work - Optimizaitons to Middleware and docs to explicitly call to_app because overloading happens every request and is inefficient. - The abilitiy to auto-select server backends for POE/AnyEvent/Coro is restored. Doesn't work with -r though. #50 - Display server package name in the Standalone/Prefork startup - Fixed a bug in Plack::Test::MockHTTP where $res doesn't return the request (teejay) - Fixed a bug in URLMap where requests to / fails in some cases (chiba) 0.9014 Fri Nov 20 21:51:47 PST 2009 - Updated docs for Standalone keep-alive options - Added Auth::Basic middleware - Fixed dependencies and MakeMaker issues in the archive 0.9013 Wed Nov 18 18:26:31 PST 2009 - Disable keep-alive in Standalone by default (kazuho, frew) - Fixed a bug in Standalone where 'timeout' property is ignored in the first request (kazuho) - Fixed a documentation bug in Middleware::Conditional (confound, scook) 0.9012 Tue Nov 17 13:38:38 PST 2009 - Added Middleware::Conditional and enable_if DSL for dynamic builder (scook) 0.9011 Thu Nov 12 03:53:28 PST 2009 - Added Apache1 support (Aaron Trevena) 0.9010 Wed Nov 11 23:18:37 PST 2009 - You can now omit Plack::Middleware:: in Builder DSL's enable() 0.9009 Sat Nov 7 20:43:17 PST 2009 - Fixed dependencies for tests 0.9008 Tue Oct 27 14:15:28 PDT 2009 - Removed optional deps from Makefile.PL and moved them to Task::Plack (mst) - Make some middleware deps as required to make it simple, for now 0.9007 Sat Oct 24 17:41:33 PDT 2009 - Fixed Server::CGI to really inline fuctions to avoid warnings - Fixed Middleware::AccessLog to let %{..}t strftime log format work (beppu) - Fixed a flush bug in gzip encoding in Middleware::Deflater - Fixed a bug in Middleware::AccessLog so POSIX strftime always works in English (fayland) - Added Middleware::ContentMD5 (Fayland) - Fixed plackup -r to actually reload the application code (robinsmidsrod) 0.9006 Fri Oct 23 01:21:13 PDT 2009 - Support streaming interface in most middlewares - Added Middleware::Deflater (not recommended to use: see POD) - Document FCGI configuration in Server::FCGI pod (dhoss) - Inline Plack::Util functions in Server::CGI to speed up (mst) 0.9005 Wed Oct 21 20:53:19 PDT 2009 - Switch to Filesys::Notify::Simple to watch directory to trim down deps - Made some dependencies optional since they're actually optional 0.9004 Tue Oct 20 22:57:48 PDT 2009 - Fixed File::ShareDir dependency (mst) - App::File and Middleware::Static now auto follows symlinks (chiba) - Implemented plackup -r as Plack::Loader::Reloadable (nothingmuch) - Removed poll_cb from Writer middleware - Added plackup common command line options: -o for --host and -p for --port 0.9003 Sun Oct 18 19:16:26 PDT 2009 - Added POE to Plack::Loader autoload - Implemented callback style streaming in selected middlewares - Bump up HTTP::Parser::XS to fix memory leaks - Added Middleware::Chunked - Added Middleware::JSONP - Added twitter-stream.psgi example to do streaming server push - Fixed Middleware::StackTrace to DWIM in framework generated 500 errors - Fixed Restarter to do what doc says 0.9002 Wed Oct 14 11:26:28 PDT 2009 - Added a workaround in Server::Apache2 when Location and SCRIPT_NAME don't match - Use Try::Tiny and parent for smaller memory footprint and better error handling 0.9001 Tue Oct 13 00:55:34 PDT 2009 - Downgrade EUMM in inc/ 0.9000 Tue Oct 13 00:14:01 PDT 2009 - original version