diff --git a/Changes b/Changes index 362d01e6f..02fb10995 100644 --- a/Changes +++ b/Changes @@ -2,6 +2,18 @@ Go to http://github.com/plack/Plack/issues for the roadmap and known issues. {{$NEXT}} +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 diff --git a/META.json b/META.json index 717d88241..5269c936d 100644 --- a/META.json +++ b/META.json @@ -4,7 +4,7 @@ "Tatsuhiko Miyagawa" ], "dynamic_config" : 0, - "generated_by" : "Dist::Milla version v1.0.3, Dist::Zilla version 4.300035, CPAN::Meta::Converter version 2.132140", + "generated_by" : "Dist::Milla version v1.0.4, Dist::Zilla version 5.006, CPAN::Meta::Converter version 2.132830", "license" : [ "perl_5" ], @@ -95,7 +95,7 @@ "web" : "https://github.com/plack/Plack" } }, - "version" : "1.0029", + "version" : "1.0030", "x_authority" : "cpan:MIYAGAWA", "x_contributors" : [ "Aaron Trevena ", @@ -105,6 +105,7 @@ "Andy Wardley ", "Aristotle Pagaltzis ", "Ask Bj\u00f8rn Hansen ", + "Ben Morrow ", "Bernhard Graf ", "Chia-liang Kao ", "Christian Walde ", @@ -145,6 +146,7 @@ "Michael G. Schwern ", "Nick Wellnhofer ", "Nobuo Danjou ", + "Olaf Alders ", "Oliver Gorwits ", "Oliver Paukstadt ", "Olivier Mengu\u00e9 ", diff --git a/Makefile.PL b/Makefile.PL index 5d4062017..129216937 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -45,37 +45,38 @@ my %WriteMakefileArgs = ( "Test::More" => "0.88", "Test::Requires" => 0 }, - "VERSION" => "1.0029", + "VERSION" => "1.0030", "test" => { "TESTS" => "t/*.t t/HTTP-Message-PSGI/*.t t/HTTP-Server-PSGI/*.t t/Plack-Builder/*.t t/Plack-HTTPParser-PP/*.t t/Plack-Handler/*.t t/Plack-Loader/*.t t/Plack-MIME/*.t t/Plack-Middleware/*.t t/Plack-Middleware/cascade/*.t t/Plack-Middleware/recursive/*.t t/Plack-Middleware/stacktrace/*.t t/Plack-Request/*.t t/Plack-Response/*.t t/Plack-Runner/*.t t/Plack-TempBuffer/*.t t/Plack-Test/*.t t/Plack-Util/*.t" } ); -unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) { - my $tr = delete $WriteMakefileArgs{TEST_REQUIRES}; - my $br = $WriteMakefileArgs{BUILD_REQUIRES}; - for my $mod ( keys %$tr ) { - if ( exists $br->{$mod} ) { - $br->{$mod} = $tr->{$mod} if $tr->{$mod} > $br->{$mod}; - } - else { - $br->{$mod} = $tr->{$mod}; - } - } -} +my %FallbackPrereqs = ( + "Apache::LogFormat::Compiler" => "0.12", + "Devel::StackTrace" => "1.23", + "Devel::StackTrace::AsHTML" => "0.11", + "File::ShareDir" => "1.00", + "Filesys::Notify::Simple" => 0, + "HTTP::Body" => "1.06", + "HTTP::Message" => "5.814", + "HTTP::Tiny" => "0.034", + "Hash::MultiValue" => "0.05", + "Pod::Usage" => "1.36", + "Stream::Buffered" => "0.02", + "Test::More" => "0.88", + "Test::Requires" => 0, + "Test::TCP" => "2.00", + "Try::Tiny" => 0, + "URI" => "1.59", + "parent" => 0 +); -unless ( eval { ExtUtils::MakeMaker->VERSION(6.56) } ) { - my $br = delete $WriteMakefileArgs{BUILD_REQUIRES}; - my $pp = $WriteMakefileArgs{PREREQ_PM}; - for my $mod ( keys %$br ) { - if ( exists $pp->{$mod} ) { - $pp->{$mod} = $br->{$mod} if $br->{$mod} > $pp->{$mod}; - } - else { - $pp->{$mod} = $br->{$mod}; - } - } + +unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) { + delete $WriteMakefileArgs{TEST_REQUIRES}; + delete $WriteMakefileArgs{BUILD_REQUIRES}; + $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs; } delete $WriteMakefileArgs{CONFIGURE_REQUIRES} diff --git a/README.md b/README.md index df73cecb9..53b284a88 100644 --- a/README.md +++ b/README.md @@ -9,34 +9,34 @@ middleware components, a reference server and utilities for Web application frameworks. Plack is like Ruby's Rack or Python's Paste for WSGI. -See [PSGI](http://search.cpan.org/perldoc?PSGI) for the PSGI specification and [PSGI::FAQ](http://search.cpan.org/perldoc?PSGI::FAQ) to know what +See [PSGI](https://metacpan.org/pod/PSGI) for the PSGI specification and [PSGI::FAQ](https://metacpan.org/pod/PSGI::FAQ) to know what PSGI and Plack are and why we need them. # MODULES AND UTILITIES ## Plack::Handler -[Plack::Handler](http://search.cpan.org/perldoc?Plack::Handler) and its subclasses contains adapters for web +[Plack::Handler](https://metacpan.org/pod/Plack::Handler) and its subclasses contains adapters for web servers. We have adapters for the built-in standalone web server -[HTTP::Server::PSGI](http://search.cpan.org/perldoc?HTTP::Server::PSGI), [CGI](http://search.cpan.org/perldoc?Plack::Handler::CGI), -[FCGI](http://search.cpan.org/perldoc?Plack::Handler::FCGI), [Apache1](http://search.cpan.org/perldoc?Plack::Handler::Apache1), -[Apache2](http://search.cpan.org/perldoc?Plack::Handler::Apache2) and -[HTTP::Server::Simple](http://search.cpan.org/perldoc?Plack::Handler::HTTP::Server::Simple) included +[HTTP::Server::PSGI](https://metacpan.org/pod/HTTP::Server::PSGI), [CGI](https://metacpan.org/pod/Plack::Handler::CGI), +[FCGI](https://metacpan.org/pod/Plack::Handler::FCGI), [Apache1](https://metacpan.org/pod/Plack::Handler::Apache1), +[Apache2](https://metacpan.org/pod/Plack::Handler::Apache2) and +[HTTP::Server::Simple](https://metacpan.org/pod/Plack::Handler::HTTP::Server::Simple) included in the core Plack distribution. There are also many HTTP server implementations on CPAN that have Plack handlers. -See [Plack::Handler](http://search.cpan.org/perldoc?Plack::Handler) when writing your own adapters. +See [Plack::Handler](https://metacpan.org/pod/Plack::Handler) when writing your own adapters. ## Plack::Loader -[Plack::Loader](http://search.cpan.org/perldoc?Plack::Loader) is a loader to load one [Plack::Handler](http://search.cpan.org/perldoc?Plack::Handler) adapter +[Plack::Loader](https://metacpan.org/pod/Plack::Loader) is a loader to load one [Plack::Handler](https://metacpan.org/pod/Plack::Handler) adapter and run a PSGI application code reference with it. ## Plack::Util -[Plack::Util](http://search.cpan.org/perldoc?Plack::Util) contains a lot of utility functions for server +[Plack::Util](https://metacpan.org/pod/Plack::Util) contains a lot of utility functions for server implementors as well as middleware authors. ## .psgi files @@ -68,14 +68,14 @@ files. ## plackup, Plack::Runner -[plackup](http://search.cpan.org/perldoc?plackup) is a command line launcher to run PSGI applications from -command line using [Plack::Loader](http://search.cpan.org/perldoc?Plack::Loader) to load PSGI backends. It can be +[plackup](https://metacpan.org/pod/plackup) is a command line launcher to run PSGI applications from +command line using [Plack::Loader](https://metacpan.org/pod/Plack::Loader) to load PSGI backends. It can be used to run standalone servers and FastCGI daemon processes. Other server backends like Apache2 needs a separate configuration but `.psgi` application file can still be the same. If you want to write your own frontend that replaces, or adds -functionalities to [plackup](http://search.cpan.org/perldoc?plackup), take a look at the [Plack::Runner](http://search.cpan.org/perldoc?Plack::Runner) module. +functionalities to [plackup](https://metacpan.org/pod/plackup), take a look at the [Plack::Runner](https://metacpan.org/pod/Plack::Runner) module. ## Plack::Middleware @@ -84,39 +84,39 @@ application and plays both side of application and servers. From the servers the wrapped code reference still looks like and behaves exactly the same as PSGI applications. -[Plack::Middleware](http://search.cpan.org/perldoc?Plack::Middleware) gives you an easy way to wrap PSGI applications -with a clean API, and compatibility with [Plack::Builder](http://search.cpan.org/perldoc?Plack::Builder) DSL. +[Plack::Middleware](https://metacpan.org/pod/Plack::Middleware) gives you an easy way to wrap PSGI applications +with a clean API, and compatibility with [Plack::Builder](https://metacpan.org/pod/Plack::Builder) DSL. ## Plack::Builder -[Plack::Builder](http://search.cpan.org/perldoc?Plack::Builder) gives you a DSL that you can enable Middleware in +[Plack::Builder](https://metacpan.org/pod/Plack::Builder) gives you a DSL that you can enable Middleware in `.psgi` files to wrap existent PSGI applications. ## Plack::Request, Plack::Response -[Plack::Request](http://search.cpan.org/perldoc?Plack::Request) gives you a nice wrapper API around PSGI `$env` +[Plack::Request](https://metacpan.org/pod/Plack::Request) gives you a nice wrapper API around PSGI `$env` hash to get headers, cookies and query parameters much like -[Apache::Request](http://search.cpan.org/perldoc?Apache::Request) in mod\_perl. +[Apache::Request](https://metacpan.org/pod/Apache::Request) in mod\_perl. -[Plack::Response](http://search.cpan.org/perldoc?Plack::Response) does the same to construct the response array +[Plack::Response](https://metacpan.org/pod/Plack::Response) does the same to construct the response array reference. ## Plack::Test -[Plack::Test](http://search.cpan.org/perldoc?Plack::Test) is a unified interface to test your PSGI application -using standard [HTTP::Request](http://search.cpan.org/perldoc?HTTP::Request) and [HTTP::Response](http://search.cpan.org/perldoc?HTTP::Response) pair with simple +[Plack::Test](https://metacpan.org/pod/Plack::Test) is a unified interface to test your PSGI application +using standard [HTTP::Request](https://metacpan.org/pod/HTTP::Request) and [HTTP::Response](https://metacpan.org/pod/HTTP::Response) pair with simple callbacks. ## Plack::Test::Suite -[Plack::Test::Suite](http://search.cpan.org/perldoc?Plack::Test::Suite) is a test suite to test a new PSGI server backend. +[Plack::Test::Suite](https://metacpan.org/pod/Plack::Test::Suite) is a test suite to test a new PSGI server backend. # CONTRIBUTING ## Patches and Bug Fixes Small patches and bug fixes can be either submitted via nopaste on IRC -[irc://irc.perl.org/\#plack](irc://irc.perl.org/\#plack) or [the github issue tracker](http://github.com/plack/Plack/issues). Forking on +[irc://irc.perl.org/#plack](irc://irc.perl.org/#plack) or [the github issue tracker](http://github.com/plack/Plack/issues). Forking on [github](http://github.com/plack/Plack) is another good way if you intend to make larger fixes. @@ -133,14 +133,14 @@ Middleware authors are free to use the Plack::Middleware:: namespace for their middleware components. Middleware must be written in the pipeline style such that they can chained together with other middleware components. The Plack::Middleware:: modules in the core distribution are good examples -of such modules. It is recommended that you inherit from [Plack::Middleware](http://search.cpan.org/perldoc?Plack::Middleware) +of such modules. It is recommended that you inherit from [Plack::Middleware](https://metacpan.org/pod/Plack::Middleware) for these types of modules. Not all middleware components are wrappers, but instead are more like endpoints in a middleware chain. These types of components should use the Plack::App:: namespace. Again, look in the core modules to see excellent -examples of these ([Plack::App::File](http://search.cpan.org/perldoc?Plack::App::File), [Plack::App::Directory](http://search.cpan.org/perldoc?Plack::App::Directory), etc.). -It is recommended that you inherit from [Plack::Component](http://search.cpan.org/perldoc?Plack::Component) for these +examples of these ([Plack::App::File](https://metacpan.org/pod/Plack::App::File), [Plack::App::Directory](https://metacpan.org/pod/Plack::App::Directory), etc.). +It is recommended that you inherit from [Plack::Component](https://metacpan.org/pod/Plack::Component) for these types of modules. __DO NOT USE__ Plack:: namespace to build a new web application or a @@ -206,7 +206,7 @@ Aaron Trevena # SEE ALSO -The [PSGI](http://search.cpan.org/perldoc?PSGI) specification upon which Plack is based. +The [PSGI](https://metacpan.org/pod/PSGI) specification upon which Plack is based. [http://plackperl.org/](http://plackperl.org/) diff --git a/lib/Plack.pm b/lib/Plack.pm index 7a1ce9900..32c7ffa3e 100644 --- a/lib/Plack.pm +++ b/lib/Plack.pm @@ -3,7 +3,7 @@ package Plack; use strict; use warnings; use 5.008_001; -our $VERSION = '1.0029'; +our $VERSION = '1.0030'; 1; __END__ diff --git a/lib/Plack/Request.pm b/lib/Plack/Request.pm index 275e44020..c8040492a 100644 --- a/lib/Plack/Request.pm +++ b/lib/Plack/Request.pm @@ -2,7 +2,7 @@ package Plack::Request; use strict; use warnings; use 5.008_001; -our $VERSION = '1.0029'; +our $VERSION = '1.0030'; use HTTP::Headers; use Carp (); diff --git a/lib/Plack/Response.pm b/lib/Plack/Response.pm index aba8364d7..ee8e9e997 100644 --- a/lib/Plack/Response.pm +++ b/lib/Plack/Response.pm @@ -1,7 +1,7 @@ package Plack::Response; use strict; use warnings; -our $VERSION = '1.0029'; +our $VERSION = '1.0030'; use Plack::Util::Accessor qw(body status); use Carp ();