Files | Admin

Notes:

Release Name: 1.0.0

Notes:
Rainbows! is an HTTP server for sleepy Rack applications.  It is based on
Unicorn, but designed to handle applications that expect long
request/response times and/or slow clients.

* http://rainbows.rubyforge.org/
* rainbows-talk@rubyforge.org
* git://git.bogomips.org/rainbows.git

Changes:

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.



Changes: GIT-VERSION-GEN | 2 +- GNUmakefile | 2 +- README | 2 +- Rakefile | 10 +- bin/rainbows | 35 ++-- lib/rainbows.rb | 22 +-- lib/rainbows/acceptor.rb | 26 --- lib/rainbows/actor_spawn.rb | 42 ++-- lib/rainbows/app_pool.rb | 182 ++++++++--------- lib/rainbows/base.rb | 65 +------ lib/rainbows/byte_slice.rb | 17 -- lib/rainbows/client.rb | 9 + lib/rainbows/configurator.rb | 76 ++++---- lib/rainbows/const.rb | 36 ++-- lib/rainbows/dev_fd_response.rb | 3 +- lib/rainbows/error.rb | 76 ++++---- lib/rainbows/ev_core.rb | 213 ++++++++++---------- lib/rainbows/event_machine.rb | 383 +++++++++++++++++------------------ lib/rainbows/fiber.rb | 28 ++- lib/rainbows/fiber/base.rb | 157 +++++++-------- lib/rainbows/fiber/io.rb | 209 ++++++++++++-------- lib/rainbows/fiber/io/compat.rb | 13 ++ lib/rainbows/fiber/io/methods.rb | 49 +++++ lib/rainbows/fiber/io/pipe.rb | 7 + lib/rainbows/fiber/io/socket.rb | 7 + lib/rainbows/fiber/rev.rb | 170 +--------------- lib/rainbows/fiber/rev/heartbeat.rb | 8 + lib/rainbows/fiber/rev/kato.rb | 22 ++ lib/rainbows/fiber/rev/methods.rb | 55 +++++ lib/rainbows/fiber/rev/server.rb | 32 +++ lib/rainbows/fiber/rev/sleeper.rb | 15 ++ lib/rainbows/fiber_pool.rb | 68 +++---- lib/rainbows/fiber_spawn.rb | 49 ++--- lib/rainbows/http_server.rb | 168 ++++++++------- lib/rainbows/max_body.rb | 54 +++--- lib/rainbows/never_block.rb | 7 +- lib/rainbows/process_client.rb | 61 ++++++ lib/rainbows/queue_pool.rb | 41 ++-- lib/rainbows/read_timeout.rb | 28 +++ lib/rainbows/rev/client.rb | 23 +- lib/rainbows/rev/core.rb | 5 +- lib/rainbows/rev/thread.rb | 3 +- lib/rainbows/rev_fiber_spawn.rb | 45 ++--- lib/rainbows/revactor.rb | 33 ++-- lib/rainbows/thread_pool.rb | 6 +- lib/rainbows/thread_spawn.rb | 3 +- lib/rainbows/writer_thread_pool.rb | 18 ++- lib/rainbows/writer_thread_spawn.rb | 18 ++- local.mk.sample | 14 +- rainbows.gemspec | 6 +- t/kgio-pipe-response.ru | 10 + t/t0013-reload-bad-config.sh | 8 +- t/t0014-config-conflict.sh | 8 +- t/t0018-reload-restore-settings.sh | 53 +++++ t/t0035-kgio-pipe-response.sh | 70 +++++++ t/test-lib.sh | 25 +++ t/test_isolate.rb | 3 +- 57 files changed, 1505 insertions(+), 1295 deletions(-) commit 9f185041fb7af4cda21ba2d547fd4d16d9b2e453 Author: Eric Wong 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 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 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 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 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 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 Date: Tue Oct 26 21:36:02 2010 +0000 Rakefile: updates for prereleases We do prereleases, now. commit a47cd4a7f392a76357ed4f3e458797ae1f9c8f25 Author: Eric Wong 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Date: Fri Sep 17 08:55:35 2010 +0000 event_machine: remove unnecessary "return" Noise is bad.