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.
