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
        - timeouts and limits: header_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
        - 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, 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 or LF in the status line, and a control character in a response
          header (a tab is allowed in a value), are refused (CWE-113)
        - psgi.input is always present, per PSGI 1.1
        - a graceful stop, worker retirement and hot-restart handover exit
          via POSIX::_exit: END blocks do not run and buffered STDOUT is
          lost (set $| = 1 or log to STDERR)

        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.
