Changes for version 0.99_04 - 2010-02-05
- 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 {}
Changes for version 0.99_03 - 2010-02-03
- 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!
Changes for version 0.99_02 - 2010-01-30
- Fixed PerlIO::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)
Changes for version 0.99_01 - 2010-01-29
- 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
Documentation
Run PSGI application with Plack servers
Modules
Converts HTTP::Request and HTTP::Response from/to PSGI env and response
Standalone PSGI compatiblle HTTP server
Perl Superglue for Web frameworks and Web Servers (PSGI toolkit)
cgi-bin replacement for Plack servers
Cascadable compound application
Serve static files from document root with directory index
Dispatch requests to FCGI servers
Serve static files from root directory
Run .psgi files from a directory
Map multiple apps in different paths
Compiles a CGI script as PSGI application
OO and DSL to enable Plack Middlewares
Base class for PSGI endpoints
Parse HTTP headers
Pure perl fallback of HTTP::Parser::XS
Connects PSGI applications and Web servers
Apache 1.3.x handlers to run PSGI application
Apache 2.0 handlers to run PSGI application
Adapter for HTTP::Server::Simple
adapters for HTTP::Server::PSGI
(auto)load Plack Servers
Restarting loader
forking implementation of plackup
MIME type registry
Base class for easy-to-use PSGI middleware
Logs requests like Apache's log format
Logs requests with time and accurate body size
Simple basic authentication middleware
Applies chunked encoding to the response body
Conditional wrapper for Plack middleware
Middleware to add "conditional", GET
Adds Content-Length header automatically
Automatically sets the Content-MD5 header on all String bodies
Set Error Document based on HTTP status code
Wraps JSON response in JSONP if callback parameter is specified
Validate request and response
Uses Log::Log4perl to configure logger
Uses Log::Dispatch to configure logger
Overrides HTTP method with X-HTTP-Method-Override header
Send logs to /dev/null
Reorder HTTP headers for buggy clients
Refresh all modules in %INC
Sets an X-Runtime response header
Filters response content
Simple logger that prints to psgi.errors
Displays stack trace when your app dies
serve static files with Plack
Sample middleware to add X-Framework
Sets X-Sendfile (or a like) header for frontends
Portable HTTP request object from PSGI env hash
handles file upload requests
Portable HTTP Response object for PSGI response
plackup core
DEPRECATED. See Plack::Handler
DEPRECATED
DEPRECATED
DEPRECATED
DEPRECATED
DEPRECATED
DEPRECATED
DEPRECATED
temporary buffer to save bytes
Test PSGI applications with various backends
Run mocked HTTP tests through PSGI applications
Run HTTP tests through live Plack servers
Utility subroutines for Plack server and framework developers
Accessor generation utility for Plack
Provides
in lib/Plack/Test/Suite.pm
in lib/Plack/Handler/CGI.pm
in lib/Plack/Handler/CGI.pm
in lib/Plack/Handler/FCGI.pm
in lib/Plack/Handler/HTTP/Server/Simple.pm
in lib/Plack/Middleware/Writer.pm
in lib/Plack/TempBuffer/File.pm
in lib/Plack/TempBuffer/PerlIO.pm
in lib/Plack/Test/Suite.pm
in lib/Plack/Util.pm
in lib/Plack/Util.pm
Examples
- eg/dot-psgi/Dumper.psgi
- eg/dot-psgi/Hello.psgi
- eg/dot-psgi/cgi-pm.psgi
- eg/dot-psgi/cgi-script.psgi
- eg/dot-psgi/echo-stream-sync.psgi
- eg/dot-psgi/echo-stream.psgi
- eg/dot-psgi/echo.psgi
- eg/dot-psgi/error.psgi
- eg/dot-psgi/frameworks/Angelos.psgi
- eg/dot-psgi/frameworks/Ark.psgi
- eg/dot-psgi/frameworks/CGI-Application.psgi
- eg/dot-psgi/frameworks/Catalyst.psgi
- eg/dot-psgi/frameworks/HTML-Mason.psgi
- eg/dot-psgi/frameworks/HTTP-Engine.psgi
- eg/dot-psgi/frameworks/Maypole.psgi
- eg/dot-psgi/frameworks/Mojo.psgi
- eg/dot-psgi/frameworks/Schenker.psgi
- eg/dot-psgi/frameworks/Squatting.psgi
- eg/dot-psgi/image.psgi
- eg/dot-psgi/plack-req.psgi
- eg/dot-psgi/runnable.psgi
- eg/dot-psgi/slowapp.psgi
- eg/dot-psgi/static.psgi
- eg/dot-psgi/static/index.html
- eg/dot-psgi/static/test.css
- eg/dot-psgi/static/test.js
- eg/dot-psgi/twitter-stream.psgi