ChangeLog from git://git.bogomips.org/rainbows.git (v0.97.0..v2.0.1)

    commit b4835c6d542c6369f2523ab68fc41b0202d7c6dc
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Fri Dec 3 01:23:11 2010 +0000
    
        Rainbows! 2.0.1 - upload pipelining fixes
        
        For HTTP clients living on the edge and pipelining uploads, we
        now fully support pipelined requests (as long as the application
        consumes each request in its entirety).
    
    commit c096e735efea5050b0559748633403f0387ea3b3
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Fri Dec 3 01:12:08 2010 +0000
    
        fix pipelining of requests with bodies
        
        All synchronous models have this fixed in unicorn 3.0.1,
        so only Rev and EventMachine-based concurrency models
        require code changes.
    
    commit 64889d9136fa5466269232c26a2f235dd763d8f0
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Thu Dec 2 07:38:14 2010 +0000
    
        ev_core: refactor and split cap_input out
        
        Hopefully it makes more sense now and is easier to
        digest for new hackers.
    
    commit 945b5760d86b9dd00e65bd0625b98cf75f6a8257
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Wed Dec 1 21:29:34 2010 -0800
    
        ev_core: split out prepare_request_body
        
        We may have other uses for this in the future...
    
    commit 90789761f0cc78d3726f3a2eda1c5fe95c015ac2
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Fri Nov 19 19:09:59 2010 -0800
    
        Rainbows! 2.0.0 - minority rules!
        
        This release is targeted at the minority of web applications
        that deal heavily with uploads.
        
        Thanks to Unicorn 3.x, we now support HTTP keepalive for
        requests with bodies as long as the application consumes them.
        Unicorn 3.x also allows disabling the rewindability requirement
        of "rack.input" (in violation of the Rack 1.x spec).
        
        The global client_body_max_size may also be applied per-endpoint
        using the Rainbows::MaxBody middleware described in:
        
          http://rainbows.rubyforge.org/Rainbows/MaxBody.html
    
    commit c33878ac0f9f990aaa2054f8f00674d61bf5c848
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Sat Nov 20 03:10:09 2010 +0000
    
        tests: depend on Unicorn 3.0.0
        
        Unicorn 3.0.0 is final and released, so we will use it in our
        tests
    
    commit a5986295bfb7bd7c44c863e4670f16481097c7fc
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Fri Nov 19 18:55:06 2010 -0800
    
        revactor: fix braindamaged commit/coding style
        
        Oops, last commit was rushed
    
    commit da9dfc1dece4fbcdf2a8e8ccdb4914ce4aa3a998
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Fri Nov 19 18:39:02 2010 -0800
    
        simpler keepalive check for synchronous models
        
        Unicorn 3.x includes HttpParser#next? which will reset the
        parser for keepalive requests without extra steps.
    
    commit c6ffae22748bc22d5ef88fea2a3ca67f480ee74b
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Fri Nov 19 10:19:45 2010 +0000
    
        max_body: rewrite wrappers to be safer
        
        To avoid denial-of-service attacks, the wrappers need to
        intercept requests *before* they hit the memory allocator, so we
        need to reimplement the read(all) and gets cases to use
        smaller buffers whenever the application does not specify one.
    
    commit 3cee07d750f678af92318c14110c803be3f9b97f
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Fri Nov 19 10:19:44 2010 +0000
    
        max_body: do not enable for RevThread* models
        
        Those already use CapInput, just like the rest of the evented
        Rainbows! world.
    
    commit 00b854e37391322c05cc16115b245d855b4970be
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Fri Nov 19 10:19:43 2010 +0000
    
        upgrade to Kgio 2.x and Unicorn 3.x
        
        Kgio 2.0.0 has a superior API and less likely to conflict or
        blow up with other applications.  Unicorn 3.x requires Kgio 2.x,
        too.
    
    commit 0f00424be24806791f2b253ddac6d35102842646
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Wed Nov 17 10:06:45 2010 -0800
    
        test_isolate: depend on newer Unicorn
        
        It allows disabling rewindable input and contains
        simpler code for upload processing.
    
    commit 31cf77e7aa2f2e6065e7ace44e55c3f042b51f1b
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Tue Nov 16 16:16:42 2010 -0800
    
        reimplement client_max_body_size handlers
        
        This allows the client_max_body_size implementation to not rely
        on Unicorn::TeeInput internals, allowing it to be used with
        Unicorn::StreamInput (or any other (nearly)
        Rack::Lint-compatible input object).
    
    commit 42747db815ad668b20849afb2a9dcdd1319713ae
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Tue Nov 2 12:32:23 2010 -0700
    
        avoid Errno::EAGAIN, harder
        
        Errno::EAGAIN is still a problem under Ruby 1.9.2, so try harder
        to avoid it and use kgio methods.  Even when 1.9.3 is available,
        kgio will still be faster as exceptions are slower than normal
        return values.
    
    commit 427ef4a2953a4b2d34f7dd89566a0cb5ee6e734d
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Tue Nov 2 11:49:17 2010 -0700
    
        avoid Kgio::WaitReadable/WaitWritable constants
        
        The underlying symbolic names are easier to type and
        recommended.
    
    commit ed3a30dcfb5489447dec9c3f73e8bec9dbf7713a
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Thu Nov 4 19:52:35 2010 -0700
    
        process_client: fix attempted keepalive on HTTP 0.9
        
        The long-term goal is to make the Unicorn API more terse when
        handling keepalive.
    
    commit 9f185041fb7af4cda21ba2d547fd4d16d9b2e453
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Thu Oct 28 08:42:09 2010 +0000
    
        Rainbows! 1.0.0 - internal cleanups
        
        This release is merely a milestone in our evolving internal API.
        Use of kgio may result in performance improvements under Ruby
        1.9.2 with non-blocking I/O-intensive workloads.
        
        The only bugfix is that SIGHUP reloads restores defaults on
        unset settings.  A similar fix is included in Unicorn 2.0.0
        as well.
    
    commit 015635f877084cc05a9e6e4c1430c70279d0a04e
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Thu Oct 28 08:40:12 2010 +0000
    
        tests: avoid race conditions on reload tests
        
        We need to ensure the old worker is really dead before sending
        requests after reloading.
    
    commit b06c6b3ac214bc598d499c994884113d5b106e90
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Thu Oct 28 08:29:53 2010 +0000
    
        t0018: wait for old worker to be reaped
        
        On busy machines, old workers may not shutdown quickly
        enough and may still be processing requests.
    
    commit f84f138233be0607b0151a5a28c3f9190ba336a2
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Thu Oct 28 08:20:37 2010 +0000
    
        rev+event_machine: small cleanups with new parser API
        
        These allow for small reductions in the amount of variables
        we have to manage, more changes coming with later Unicorns.
    
    commit c4579db76b9ed5b0286fad852e798e8a890f093c
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Thu Oct 28 02:17:25 2010 +0000
    
        HUP reload restores defaults on unset settings
        
        For consistency, changed settings are reset back to
        their default values if they are removed or commented
        out from the config file.
    
    commit 83644e02068311c7ff9cdbc63efd4764d1518138
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Wed Oct 27 23:52:28 2010 +0000
    
        use Unicorn 2.0.0 final
        
        Unicorn 2.0.0 has CPU wakeup reductions.
    
    commit 2b9503566759678c9fbd7b01d1b5f487854208db
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Tue Oct 26 21:36:02 2010 +0000
    
        Rakefile: updates for prereleases
        
        We do prereleases, now.
    
    commit a47cd4a7f392a76357ed4f3e458797ae1f9c8f25
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Tue Oct 26 21:26:03 2010 +0000
    
        Rainbows! 1.0.0pre1 - kinder, gentler I/O
        
        Mostly internal changes for kgio (and Unicorn) integration.
        There should be no (supported) user-visible changes from
        Rainbows! 0.97.0.  kgio should improve performance for
        concurrency models that use non-blocking I/O internally,
        especially under Ruby 1.9.2
    
    commit 0298a6743f2cadf8c8e47a298c5b35505b74af46
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Tue Oct 26 21:20:45 2010 +0000
    
        gemspec: bump development dependency of Isolate
        
        Might as well go with the latest and greatest,
        it has saner defaults at least.
    
    commit 567e6ce5dba5ad2cca2cca8c64123e27939bff2b
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Tue Oct 26 21:13:10 2010 +0000
    
        doc: RDoc updates
        
        Once again we avoid documenting internals on the public
        website and use code comments for other developers.
    
    commit 894cb73887c106acc793f0317ee849ae215ead56
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Mon Oct 25 22:15:47 2010 +0000
    
        reduce dependency on IO#write_nonblock
        
        kgio_trywrite is superior if it is available.
    
    commit 4ee6e0dafeb1b7af28fa90ae27c1a1a04aa8e852
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Sat Oct 23 00:42:04 2010 +0000
    
        http_request: remove this (sub)class
        
        It does not appear to be needed, for now, since the
        parser and Unicorn::HttpRequest are one and the same.
    
    commit 180485d49ea858f83ef2a28a9e07224aa514edc7
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Fri Oct 22 16:21:03 2010 -0700
    
        unindent most files
        
        This simplifies and disambiguates most constant resolution
        issues as well as lowering our identation level.  Hopefully
        this makes code easier to understand.
    
    commit 41145ed4d335718ac43aec9313b7571a12fe96ee
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Fri Oct 22 15:31:47 2010 -0700
    
        local.mk.sample: remove testing under 1.9.1
        
        Ruby 1.9.2 has been out for a while and is the stable
        release nowadays.
    
    commit b595ad7333ff85452b229674c6726e40d2cf7bb9
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Fri Oct 22 18:55:46 2010 +0000
    
        README: update copyright year
        
        This project is over 1 year old!
    
    commit 4a568eeb7d17885579790d0ae004f04aa13479cb
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Fri Oct 22 02:50:09 2010 +0000
    
        dev_fd_response: do not wrap for Fiber-aware IOs
        
        Applications may use wait_readable-aware methods directly
        to work with Rainbows!
    
    commit 6d46978bdc8d2ee4263431ecdcada53389b12597
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Fri Oct 22 02:51:18 2010 +0000
    
        fiber_{pool,spawn}: unindent
        
        Reduces confusion for constant resolution/scoping rules
        and lowers LoC.
    
    commit 03806d2b44c2d3cee75258ee9e83d671e751baeb
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Fri Oct 22 02:38:40 2010 +0000
    
        fiber_pool: no need for old Fiber::IO
        
        Rainbows::Client takes care of the I/O wait/read-ability
        for us already.
    
    commit 15631717fce044fbad2f386a7b1c7daf4bdd83d2
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Thu Oct 21 16:25:39 2010 -0700
    
        code shuffling for kgio
        
        Despite the large number of changes, most of it is code
        movement here.
    
    commit d4a2b5dd2b85f4b2d3bb120ee1e1b0dde31bc25c
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Wed Oct 20 17:48:58 2010 -0700
    
        unicorn 2.x updates + kgio
        
        We get basic internal API changes from Unicorn,
        code simplifications coming next.
    
    commit a085ba3586756ac1f778d2862f75889de2449b0e
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Wed Oct 20 17:48:57 2010 -0700
    
        http_server: more descriptive error for debugging
        
        Sometimes we have stupid syntax or constant resolution
        errors in our code.
    
    commit ad821f70a2488a91f2be1ac53cb2e64f50743989
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Tue Sep 28 17:40:01 2010 -0700
    
        start using kgio library
        
        It removes the burden of byte slicing and setting file
        descriptor flags.  In some cases, we can remove unnecessary
        peeraddr calls, too.
    
    commit 11c75ec06ce72cea0c760161dc01a196500aa293
    Author: Eric Wong <normalperson@yhbt.net>
    Date:   Fri Sep 17 08:55:35 2010 +0000
    
        event_machine: remove unnecessary "return"
        
        Noise is bad.
