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.
|