Changes for version 0.16 - 2026-08-17

  • New `proxy` keyword: reverse-proxy trust. Behind nginx, an ELB or a CDN, REMOTE_ADDR is the proxys on every request - and because rate_limit's counters live in Hyperman's shared arena they are exact across the whole worker pool, so every client landed in ONE bucket and a limit => 100 rule throttled the entire site at 100/min. block_ip, keyed the same way, it would ban the load balancer. `proxy` resolves the real client at the top of the dispatcher and OVERWRITES REMOTE_ADDR, so rate_limit, block_ip, the access log and $c->req->address are all correct with no change to any of them; the connecting address stays as $c->env->{'punk.peer_addr'}.
  • New $c->req->address: REMOTE_ADDR, which is the socket peer directly exposed and the resolved client behind `proxy`.

Documentation

the Punk command line

Modules

a MVC web framework
the per-application registry and boot compiler
the authentication battery
password hashing
cross-origin resource sharing
single-use CSRF tokens
the punk command line: registry, dispatcher and commands
YAML configuration with secrets kept out of the file
the per-request object
base class for Punk controllers
the development error page
an async result that runs on the loop, or blocks
scaffold a new Punk application
security response headers
a level-based logger
the storage-agnostic model tier
the default DBI backend for Punk models
a non-blocking backend for Punk models
a directory of markdown as a documentation site
the api mount: spec-first operations
base class for Punk plugins
rate limiting and IP blocking over Hyperman's shared arena
a lazy wrapper over the PSGI environment
a response builder
the compiled-at-boot route tables (XS)
the handle an under returns
a Server-Sent Events stream
the bounded body of a ranged send_file response
signed cookie sessions
serving files from a directory
an in-process test client for Punk applications
a pure-Perl RFC 6455 codec for testing WebSocket servers
the client side of one WebSocket connection
the outbound HTTP agent on the context
an uploaded file from a multipart form
collecting request validation
the Template::Stencil view engine
the pluggable view engine registry (XS)
a WebSocket connection
pub/sub groups of WebSocket connections

Provides

in bench/apps/cat-lib/BenchCat.pm
in bench/apps/cat-lib/BenchCat/Controller/Root.pm