Files | Admin

Notes:

Release Name: 0.90.1

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.  For Rack applications not
heavily bound by slow external network dependencies, consider Unicorn
instead as it simpler and easier to debug.

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

Changes:

This release contains minor bugfixes/compatibility improvements
for ThreadSpawn, ThreadPool and EventMachine users.

Excessive error messages from spurious wakeups using
ThreadSpawn/ThreadPool under most platforms are silenced.  Only
Ruby 1.9 users under Linux were unaffected by this bug.

EventMachine users may now use EM::Deferrable objects in
responses, vastly improving compatibility with existing
async_sinatra apps.



Changes: Documentation/rainbows.1.txt | 14 ++--- GIT-VERSION-GEN | 2 +- TODO | 5 +- lib/rainbows.rb | 12 ++++ lib/rainbows/const.rb | 2 +- lib/rainbows/ev_core.rb | 2 + lib/rainbows/event_machine.rb | 17 ++++- lib/rainbows/thread_pool.rb | 3 +- lib/rainbows/thread_spawn.rb | 5 +- rainbows.gemspec | 3 +- t/async_examples/README | 3 + t/async_examples/async_app.ru | 126 +++++++++++++++++++++++++++++++++++++ t/async_examples/async_tailer.ru | 105 ++++++++++++++++++++++++++++++ t/t0012-spurious-wakeups-quiet.sh | 41 ++++++++++++ t/t0400-em-async-app.sh | 57 +++++++++++++++++ t/t0401-em-async-tailer.sh | 74 ++++++++++++++++++++++ 16 files changed, 449 insertions(+), 22 deletions(-) commit d541fd3ee9aa4ddbc3b4f8a14bbea43de19a31d9 Author: Eric Wong Date: Wed Dec 30 02:17:17 2009 -0800 Rainbows! 0.90.1 This release contains minor bugfixes/compatibility improvements for ThreadSpawn, ThreadPool and EventMachine users. Excessive error messages from spurious wakeups using ThreadSpawn/ThreadPool under most platforms are silenced. Only Ruby 1.9 users under Linux were unaffected by this bug. EventMachine users may now use EM::Deferrable objects in responses, vastly improving compatibility with existing async_sinatra apps. commit c5a3c62647d8b45f83dba6306a80c8d3035cf3b3 Author: Eric Wong Date: Wed Dec 30 01:54:50 2009 -0800 update TODO EM::Deferrables done, NeverBlock updates... commit 96fbc5e91017c4912169629abc7dbb56cda9082c Author: Eric Wong Date: Wed Dec 30 01:27:15 2009 -0800 EventMachine: support deferrables in responses Some async apps rely on more than just "async.callback" and make full use of Deferrables provided by the EM::Deferrable module. Thanks to James Tucker for bringing this to our attention. commit 44a80df0c4c0d47fd2ac503396cb9accfe770f0a Author: Eric Wong Date: Tue Dec 29 21:18:02 2009 -0800 gemspec: clamp down unicorn dependency to < 0.97.0 We may be making some changes to Unicorn 0.97.0 and allow us to share more code. commit 31ee6b4daa1da9cd02e75b27924b2729345e999d Author: Eric Wong Date: Tue Dec 29 12:59:01 2009 -0800 quiet spurious wakeups for accept() in Thread* models Under all MRI 1.8, a blocking Socket#accept Ruby method (needs to[1]) translate to a non-blocking accept(2) system call that may wake up threads/processes unnecessarily. Unfortunately, we failed to trap and ignore EAGAIN in those cases. This issue did not affect Ruby 1.9 running under modern Linux kernels where a _blocking_ accept(2) system call is not (easily, at least) susceptible to spurious wakeups. Non-Linux systems running Ruby 1.9 may be affected. [1] - using a blocking accept(2) on a shared socket with green threads is dangerous, as noted in commit ee7fe220ccbc991e1e7cbe982caf48e3303274c7 (and commit 451ca6997b4f298b436605b7f0af75f369320425) commit d5375f5c24abfae0173007f47bc9e83139d556b5 Author: Eric Wong Date: Thu Dec 24 17:56:47 2009 -0800 doc: update manpage since Unicorn got new features working_directory and Worker#user got added over time, so recommending Dir.chdir and Process::UID.change_privilege is bad. commit 831e0b2f89c3ae93b71631fcc5fcf7109697de88 Author: Eric Wong Date: Tue Dec 22 16:24:21 2009 -0800 gemspec: loosen Unicorn dependency Unicorn 0.96.x should be released once Rack 1.1 is out.