NEWS in rainbows-2.0.1 vs NEWS in rainbows-2.1.0

- old
+ new

@@ -1,12 +1,39 @@ -=== 2.0.1 / 2010-12-03 01:26 UTC +=== Rainbows! 2.1.0 - Cool.io, bugfixes and more! / 2010-12-29 02:18 UTC + Cool.io (new version of Rev) support is explicitly added + (it always worked before). ":Coolio" may be used in place + of ":Rev" anywhere in your Rainbows! config file. + + There is a new "keepalive_requests" config directive to limit + the number of requests a single connection may make (default: + 100, same as nginx). This may be useful for better + load-balancing characteristics. + + The old "Rev" prefixes remain supported as long as Cool.io + remains compatible with Rev (likely forever). + + Bug fixes: + + * Rainbows::ThreadTimeout middleware with multiple clients + * large, pipelined upload errors with Revactor+Coolio(Rev) + * high CPU usage for maintaining idle keepalive on *Fiber* + * needless ThreadPool wakeups + * request env prematurely cleared keepalive requests, + breaking some middlewares such as Clogger. + * "close" not called on body if wrapper and sendfile used together + + Various code cleanups, and our RDoc website is JavaScript-free. + See the ChangeLog or git for all changes. + +=== Rainbows! 2.0.1 - upload pipelining fixes / 2010-12-03 01:26 UTC + 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). -=== 2.0.0 / 2010-11-20 03:10 UTC +=== Rainbows! 2.0.0 - minority rules! / 2010-11-20 03:10 UTC 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 @@ -17,29 +44,29 @@ 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 -=== 1.0.0 / 2010-10-28 09:01 UTC +=== Rainbows! 1.0.0 - internal cleanups / 2010-10-28 09:01 UTC 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. -=== 1.0.0pre1 / 2010-10-26 21:33 UTC +=== Rainbows! 1.0.0pre1 - kinder, gentler I/O / 2010-10-26 21:33 UTC 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 -=== 0.97.0 / 2010-08-28 19:46 UTC +=== Rainbows! 0.97.0 / 2010-08-28 19:46 UTC We now depend on Unicorn 1.1.3 to avoid race conditions during log cycling. This bug mainly affected folks using Rainbows! as a multithreaded static file server. @@ -53,11 +80,11 @@ There are several bugfixes for proxying IO objects and the usual round of small code cleanups and documentation updates. See the commits in git for all the details. -=== 0.96.0 / 2010-08-03 09:04 UTC +=== Rainbows! 0.96.0 - range support / 2010-08-03 09:04 UTC For concurrency models that use sendfile or IO.copy_stream, HTTP Range requests are honored when serving static files. Due to the lack of known use cases, multipart range responses are not supported. @@ -97,18 +124,18 @@ * Range responses supported when using sendfile or IO.copy_stream. See the full git logs for a list of all changes. -=== 0.95.1 / 2010-07-11 02:53 UTC +=== Rainbows! v0.95.1 - depend on newer Unicorn / 2010-07-11 02:53 UTC Eric Wong (3): test_isolate: document why we test with Rack 1.1.0 doc: make RDoc skip private methods bump Unicorn dependency to 1.1.1 -=== 0.95.0 / 2010-07-10 08:45 UTC +=== Rainbows! 0.95.0 - sendfile() support! / 2010-07-10 08:45 UTC In addition to the 1.9-only IO.copy_stream, the new sendfile 1.0.0 gem may optionally be used with most concurrency models (even under 1.8). @@ -122,11 +149,11 @@ * optional ServerToken middleware for to display Server: header * Dependencies bumped to Rack 1.1+ and Unicorn 1.1.0+ * numerous internal cleanups, small bugfixes and speedups * more concise website oriented at users -=== 0.94.0 / 2010-06-04 08:42 UTC +=== Rainbows! 0.94.0 - one eight ate my homework! / 2010-06-04 08:42 UTC This release fixes corrupted large response bodies for Ruby 1.8 users with the WriterThreadSpawn and WriterThreadPool models introduced in 0.93.0. This bug did not affect Ruby 1.9 users nor the users of any older concurrency models. @@ -143,11 +170,11 @@ I wrote this document back when the project started but completely forgot to tell RDoc about it. Personally, this test suite is one of my favorite parts of the project. -=== 0.93.0 / 2010-05-29 06:20 UTC +=== Rainbows! 0.93.0 - MOAR!!!1 / 2010-05-29 06:20 UTC In our race to have more concurrency options than real sites using this server, we've added two new and fully supported concurrency models: WriterThreadSpawn and WriterThreadPool @@ -165,11 +192,11 @@ I floated the idea of doing something along these lines back in the early days of Unicorn, but deemed it too dangerous for some applications. But nothing is too dangerous for Rainbows! So here they are now for your experimentation. -=== 0.92.0 / 2010-05-04 21:58 UTC +=== Rainbows! 0.92.0 - inching towards the pot of gold / 2010-05-04 21:58 UTC Mostly internal cleanups and small improvements. The only backwards incompatible change was the addition of the "client_max_body_size" parameter to limit upload sizes to @@ -194,11 +221,11 @@ [1] - http://euruko2008.csrug.cz/system/assets/documents/0000/0007/tanaka-IOcopy_stream-euruko2008.pdf [2] - http://eventmachine.rubyforge.org/EventMachine/Connection.html#M000312 [3] - http://brainspl.at/articles/2008/04/18/deferred-requests-with-merb-ebb-and-thin -=== 0.91.1 / 2010-04-19 21:13 UTC +=== Rainbows! 0.91.1 - use a less-broken parser from Unicorn / 2010-04-19 21:13 UTC This release fixes a denial-of-service vector for deployments exposed directly to untrusted clients. The HTTP parser in Unicorn <= 0.97.0 would trip an assertion @@ -221,11 +248,11 @@ 0.91.0 nor Unicorn 0.97.0 This bug affects all previously released versions of Rainbows! and Zbatery. -=== 0.91.0 / 2010-03-01 10:03 UTC +=== Rainbows! 0.91.0 - Unicorn resync / 2010-03-01 10:03 UTC Unicorn 0.97.0 has a bunch of internal cleanups and small fixes and this is mainly to resync with those changes. keepalive_timeout now defaults to 5 seconds (from 2 seconds @@ -237,11 +264,11 @@ explicitly with FiberSpawn/FiberPool-only (not RevFiberSpawn) * quiet down ENOTCONN handling, there's nothing we can do about this error so we won't fill our logs with it. -=== 0.90.2 / 2010-02-13 09:11 UTC +=== Rainbows! 0.90.2 / 2010-02-13 09:11 UTC This release depends on Unicorn 0.96.1 for an updated Unicorn::HttpParser to avoid leaking memory. The HttpParser in Unicorn <= 0.96.0 did not setup the parser @@ -264,11 +291,11 @@ Rakefile: autoload Gem t/bin/*: encoding should be the first line after shebang gemspec: bump dependency on Unicorn to avoid leak Rainbows! 0.90.2 -=== 0.90.1 / 2009-12-30 10:24 UTC +=== Rainbows! 0.90.1 / 2009-12-30 10:24 UTC This release contains minor bugfixes/compatibility improvements for ThreadSpawn, ThreadPool and EventMachine users. Excessive error messages from spurious wakeups using @@ -277,21 +304,21 @@ EventMachine users may now use EM::Deferrable objects in responses, vastly improving compatibility with existing async_sinatra apps. -=== 0.90.0 / 2009-12-22 21:54 UTC +=== Rainbows! 0.90.0 / 2009-12-22 21:54 UTC This release should fix ThreadSpawn green thread blocking issues under MRI 1.8. Excessive socket closing is avoided when using Thread* models with Sunshowers (or clients disconnecting during uploads). There is a new RevFiberSpawn concurrency model which combines Rev with the traditional FiberSpawn model. -=== 0.9.0 / 2009-12-13 22:51 UTC +=== Rainbows! 0.9.0 / 2009-12-13 22:51 UTC This release introduces compatibility with Sunshowers, a library for Web Sockets, see http://rainbows.rubyforge.org/sunshowers for more information. Several small cleanups and fixes. @@ -315,17 +342,17 @@ README: add Sunshowers reference Rakefile: resync with Unicorn doc/comparison: add Web Sockets to comparison README updates -=== 0.8.0 / 2009-12-02 08:55 UTC +=== Rainbows! 0.8.0 / 2009-12-02 08:55 UTC This release fixes a memory leak in our existing Revactor concurrency model. A new RevThreadPool concurrency model has been added as well as small cleaups to exit handling in workers. -=== 0.7.0 / 2009-11-30 04:21 UTC +=== Rainbows! 0.7.0 / 2009-11-30 04:21 UTC keepalive_timeout (default: 2 seconds) is now supported to disconnect idle connections. Several new concurrency models added include: NeverBlock, FiberSpawn and FiberPool; all of which have only been lightly tested. RevThreadSpawn loses @@ -340,11 +367,11 @@ If you're using any of the Rev-based concurrency models, the latest iobuffer (0.1.3) gem will improve performance. Also, RevThreadSpawn should become usable under MRI 1.8 with the next release of Rev (0.3.2). -=== 0.6.0 / 2009-11-15 23:29 UTC +=== Rainbows! 0.6.0 - bugfixes galore / 2009-11-15 23:29 UTC Client shutdowns/errors when streaming "rack.input" into the Rack application are quieter now. Rev and EventMachine workers now shutdown correctly when the master dies. Worker processes now fail gracefully if log reopening fails. ThreadSpawn and @@ -383,11 +410,11 @@ revactor/tee_input: share error handling with superclass RevThreadSpawn is still experimental Revert "Threaded models have trouble with late loading under 1.9" Rakefile: add raa_update task -=== 0.5.0 / 2009-11-05 10:27 UTC +=== Rainbows! 0.5.0 / 2009-11-05 10:27 UTC We depend on the just-released Unicorn 0.94.0 for the fixed trailer handling. As with `unicorn', the `rainbows' executable now sets and respects ENV["RACK_ENV"]. Also small fixes and cleanups including better FreeBSD 7.2 compatibility and @@ -413,11 +440,11 @@ cleanup: remove unused t????.ru test files tests: staggered trailer upload test ensure RACK_ENV is inherited from the parent env t0100: more precise `expr` usage -=== 0.4.0 / 2009-10-27 08:44 UTC +=== Rainbows! 0.4.0 / 2009-10-27 08:44 UTC Basic single-threaded EventMachine support is now included. It supports async_synatra[1] via the "async.callback" Rack environment[2]. For EventMachine, we rely on the updated attach/watch API in EventMachine 0.12.10. @@ -484,11 +511,11 @@ [1] http://github.com/raggi/async_sinatra [2] this is not 100% Rack::Lint compatible, but we'll let it slide since there are already folks depending on the async_sinatra gem -=== 0.3.0 / 2009-10-19 18:21 UTC +=== Rainbows! 0.3.0 / 2009-10-19 18:21 UTC The major feature of this release is the new DeferredResponse middleware for the Rev-based concurrency model. It should be transparently compatible with non-Rev models, as well. As a pleasant side effect, this change also allows large files to be @@ -537,11 +564,11 @@ TUNING: update documentation notes TODO: update with new items local.mk.sample: sync with BDFL's version Rainbows! 0.3.0 -=== 0.2.0 / 2009-10-15 08:01 UTC +=== Rainbows! 0.2.0 / 2009-10-15 08:01 UTC This release adds preliminary Rev support for network concurrency under Ruby 1.8 and Ruby 1.9. There are caveats to this model and reading the RDoc for Rainbows::Rev is recommended. @@ -622,11 +649,11 @@ t4003: chmod +x local.mk.sample: use rev 0.3.1 instead README: link to AppPool and extra note about Rev model Rainbows! 0.2.0 -=== 0.1.1 / 2009-10-06 03:51 UTC +=== Rainbows! v0.1.1 / 2009-10-06 03:51 UTC Fixed Ruby 1.8 support (and all 1.9 systems without Revactor). Process-wide timeout handling for the ThreadSpawn concurrency model should now work properly. Small cleanups everywhere. @@ -646,10 +673,10 @@ local.mk.sample: fix revactor dependency Thread* models: cleanup timeout management thread_spawn: fix timeout leading to worker death less error-prone timeouts for Thread models -=== 0.1.0 / 2009-10-05 10:44 UTC +=== Rainbows! 0.1.0 / 2009-10-05 10:44 UTC Initial release This release is currently highly experimental and is still missing a lot of test coverage.