Revision history for Perl extension Feersum
1.507
New:
- multiple server instances (new_instance) and multiple listeners
per instance, IPv6 among them
- TLS 1.3 via picotls+openssl: per-listener certificates, SNI vhosts
- HTTP/2 via nghttp2: multiplexing, streaming, extended CONNECT
(RFC 8441), rapid-reset (CVE-2023-44487) and ping-flood
(CVE-2019-9512) protection
- PROXY protocol v1/v2, including TLVs
- reverse_proxy mode: take client_address and url_scheme from
X-Forwarded-For/-Proto behind a trusted upstream; off by default
- SO_REUSEPORT, sendfile, UNIX-socket listeners
- timeouts and limits: header_timeout, read_timeout, write_timeout,
linger_timeout, max_connections, max_body_len, max_uri_len,
max_read_buf, max_accept_per_loop, max_h2_concurrent_streams,
max_h2_conn_body, wbuf_low_water, max_connection_reqs
- introspection: active_conns, total_requests, access_log,
pause_accept/resume_accept, set_psgix_io
- psgix.h2.trailers, psgix.h2.extended_connect, psgix.h2.protocol,
psgix.proxy_tlvs
- psgi.input gains getline, getlines and <$fh>
- Feersum::Runner: hot_restart, pre_fork, preload_app, daemonize,
pid_file, user/group, after_fork, access_log, graceful_timeout,
startup_timeout, max_requests_per_worker
- bin/feersum native mode with full Runner option parity
Incompatible with 1.505:
- requires Perl 5.14 (was 5.8.7)
- the Feersum object is no longer a hashref; use the public API
- psgix.input.buffered is no longer advertised (psgi.input is
forward-only; Plack buffers the body when it is unset)
- a UTF8-flagged response string whose characters all fit in a byte
is sent as those bytes, like every other PSGI server
- a 1xx final status is refused (101 excepted); a status above 599
answers 500
- CR, LF, NUL or other control characters in response headers or the
status line are refused (CWE-113)
- psgi.input is always present, per PSGI 1.1
See the UPGRADING section in the docs for behaviour changes that
bite with no code change (tighter default limits among them).
1.505 Wed Apr 09 16:20:00 2025 -0200
- pipeline fix
- minor: manifest fix and test tweaks
1.504 Sat Jan 18 19:14:15 2025 -0200
- http/1.1 pipelining support
1.503 Tue Sep 17 12:14:15 2024 -0200
- start listening on re-forked child
- try fix test for some older perls on freebsd
1.502 Wed Sep 03 19:10:55 2024 -0200
- don't generate Content-Length header for 204 responses
- acknowledge PERL_USE_UNSAFE_INC=0
1.501 Sat Aug 31 09:10:55 2024 -0200
- http/1.1 keepalive support for chunked(streaming) responses
- max_connection_reqs to control requests per keepalive connection
- tweak some tests for better cpantesters matrix
1.500 Tue Aug 20 18:10:55 2024 -0200
Features:
- native interface: access specific parts of request
- http/1.1 keepalive support
- http/1.1 date header
- defer accept, accept4
Backward incompatibly:
- remove adobe flash policy support
1.410 Sat Dec 5 14:32:22 2020 +0800
Features
- Add unix domain socket support (vividsnow++)
# for example:
plackup -E production -l /tmp/app.sock -s Feersum --pre-fork N app.psgi
feersum --native --listen /tmp/app.sock --pre-fork N ./app.feersum
1.407 Sun Jun 9 16:17:30 2019 +0800
Bugfixes
- Fix interim test failures (snakpak++)
1.406 Fri Sep 21 08:15:32 2018 -0400
Bugfixes
- Fix tests by depending on HTTP::Entity::Parser 0.20+ (ltriant++)
1.405 Sun Jun 18 00:55:56 2017 +0800
Features
- Handle server_ready option in plack handler (haarg++)
Bugfixes
- Handle POST with empty content (hoytech++)
1.404 Tue Nov 1 22:52:42 2016 +0800
Features
- Unix socket support (hoytech++)
1.403 Wed Aug 12 19:19:57 2015 +0800
Features
- Add OPTIONS method support (mgreter++)
1.402 Fri Jul 31 12:02:30 2015 +0800
Bugfixes
- memeory leak if request method is POST (fangyousong++)
1.401 Wed Nov 6 21:53:25 2013 +0800
Bugfixes
- Fix tests for newer Plack::Test (@gfx++)
- Suppress compilation warnings under clang. (@gfx++)
1.400 Wed Sep 7 20:00:00 2011 -0700
Features
- Add flash socket policy support (au++)
Bugfixes
- mortal scalar leak (thanks bfg)
- 400s on incremental request parsing (GH#12 thanks danmcc)
Docs
- policy support and other tunables
- add some missed API
- mark the --pre-fork option as Experimental
Tests
- a bunch of author tests
- reduce the amount of parallelism in tests (makes them faster)
1.202 Thu Jun 30 00:45:00 2011 -0700
Fix double-plan test failures when Test::LeakTrace missing (au++)
1.201 Wed Jun 29 11:00:00 2011 -0700
Fix sockaddr memory leak (thanks bfg)
1.200 Fri Apr 15 12:00:00 2011 -0700
Fix major defect: corrupted large static files (thanks leedo)
1.101 Wed Apr 13 12:00:00 2011 -0700
Fix 62-plack-runner.t again (thanks cpantesters)
1.100 Mon Apr 11 12:40:00 2011 -0700
Fix major defect: truncated writes (fbb3664)
Finish Solaris compatibility (thanks konobi)
Fix t/11-runner.t failing when JSON::XS missing
1.002 Sat Apr 9 16:15:00 2011 -0700
Try to fix persistent failing of 62-plack-runner.t
Update picohttpparser from upstream
Fix printf warnings on Lucid
1.001 Mon Jan 31 10:00:00 2011 -0800
Address RT#65239 by making Plack a true dep. if present.
Test::TCP is now a hard build dependency.
Use Test::Fatal instead of Test::Exception.
1.000 Mon Nov 22 12:00:00 2010 -0800
Socialtext now runs Feersum in production, hence 1.000
Add write_array() to Writer handle (undoc'd Feersum extension)
Be explicit about the EU::MM requirement (thanks au)
Formally support PSGI 1.1 (thanks miyagawa)
0.986 Mon Oct 26 09:16:00 2010 -0700
Fix compilation for EV 4.00 (thanks au)
0.985 Mon Oct 25 16:18:00 2010 -0700
Require EV 4.00.
Make two example scripts emit a constant Content-Length for ab.
Code reworking and optimization.
0.984 Fri Oct 15 10:45:00 2010 -0700
Fix a misspelling of SvREFCNT_dec
0.983 Thu Oct 14 17:45:00 2010 -0700
Add a response_guard() method and psgix.output.guard
0.982 Tue Oct 12 10:55:00 2010 -0700
Initial pre-forking support via Feersum::Runner & Plack::Runner
Fix: resource leak induced by header-read errors
Fix: compilation on BSD & Solaris re: SOL_TCP
0.981 Wed Oct 9 04:30:00 2010 -0700
Support Web::Hippie (and psgix.io)
Add missing JSON::XS test-dep.
Fix: write() prototype was incorrect.
Fix: writer not flushing on DESTROY.
Fix: IO::Handle in PSGI streaming response.
Fix: `use overload` PSGI callbacks in perl 5.8.x
0.971 Wed Oct 6 16:21:00 2010 -0700
Fix the feersum script.
0.97 Wed Oct 6 15:00:00 2010 -0700
Full Plack::Test::Suite compliance!
Handle 304 responses properly.
Don't manually steal TEMP vars.
0.961 Wed Oct 6 08:40:00 2010 -0700
Fix building under threaded perls.
Work around a bug (?) in 5.12.1 when declaring -DDEBUGGING.
0.96 Fri Oct 1 15:30:00 2010 -0700
Support Tatsumaki running under Feersum.
Content-Type is now in the CONTENT_TYPE env.
0.95 Fri Oct 1 13:45:00 2010 -0700
Specify Plack >= 0.995 version for testing & recommending
Experiment with close() rather than shutdown() for ending connections.
Actually install bin/feersum as a script
Fix coredumps/hangs due to improper refcounting.
Fix examples, Add a chat app example.
0.94 Thu Sep 30 22:45:00 2010 -0700
Major documentation rewrite.
Deprecated the "delayed response" part of the Feersum API in favor of the "streamed response" API.
Allow for tied variables in the response.
Move the IO::Handle response reading code into XS.
0.93 Tue Sep 29 01:30:00 2010 -0700
First CPAN release.
Redo PSGI streaming responses (mostly for code clarity).
Fixes for Perl 5.8.x
0.92 Tue Sep 28 22:18:01 2010 -0700
Support "Connection:close" style streaming for 1.0 clients.
Support IO::Handle-like responses for PSGI handlers.
Add REMOTE_ADDR and REMOTE_PORT to env.
0.91 Sun Sep 19 15:33:39 2010 -0700
Support running Feersum under plackup.
Remove AnyEvent::HTTP dependency.
Make $r->env() calls faster.
0.90 Mon Sep 6 16:35:00 2010
Initial PSGI 1.03 support (except for IO::Handle-like responses)
0.02 Fri Apr 23 10:55:54 2010
Renamed a good chunk of the functions & classes.
Made psgi.input and stream-writer objects separate from the main connection class.
0.01 Fri Apr 23 10:55:54 2010
Started project.