Date | Commit message (Collapse) |
|
This release updates documentation to reflect the migration of the
mailing list to a new public-inbox[1] instance. This is necessary
due to the impending RubyForge shutdown on May 15, 2014.
The public-inbox address is: rainbows-public@bogomips.org
(no subscription required, plain text only)
ssoma[2] git archives: git://bogomips.org/rainbows-public
browser-friendly archives: http://bogomips.org/rainbows-public/
As evidenced by our git history, Rainbows! development has stagnated
over the years. Rainbows! was designed to be an unopinionated
exploration into various concurrency options offered in the Ruby
ecosystem.
In recent years, I have come to favor the one-shot-based,
worst-of-all-worlds design of yahns: http://yahns.yhbt.net/README
Without the exploration from Rainbows!, yahns may not exist today.
Disclaimer: Rainbows! has always been intolerant of buggy/broken code in
libraries and apps. yahns is even less tolerant of buggy/broken code,
as the SIGKILL-based timeout mechanism inherited unicorn is completely
gone. On the other hand, yahns has reasonable defaults so you do not
have to read documentation to configure it.
[1] policy: http://public-inbox.org/ - git://80x24.org/public-inbox
an "archives first" approach to mailing lists
[2] mechanism: http://ssoma.public-inbox.org/ - git://80x24.org/ssoma
some sort of mail archiver (using git)
|
|
We're migrating to a new public-inbox[1] + mailing list
rainbows-public@bogomips.org
[1] http://public-inbox.org/
|
|
|
|
In case anybody else wants to verify/check the archive or
use this for other projects, we'll document what we did here.
|
|
* event_machine: update for unicorn 4.8.x
* disable cramp tests for now
* update EventMachine tests
* set executable bit rainbows executable
Nothing relevant for non-EM users.
|
|
Folks don't usually run from the source directory, but
RubyGems complains otherwise.
|
|
EM 1.0.3 got released and seems to work under Ruby 2.1,
so re-enable EM and NeverBlock tests again.
|
|
Cramp seems broken for now, we'll deal with it at another time
and I'm not sure if it ever took off...
|
|
unicorn 4.8.x shutdown handling is different and no longer removes
items from the event loop. So we must do that ourselves to enable
graceful shutdown. Otherwise, we'll time out on shutdowns and
the master will forcibly kill us.
|
|
The unicorn 4.8.0 internal changes unfortunately broke some
unoffically supported behavior we depended on. This release fixes
that, but as a result, we lose compatibility of older unicorn
versions. (Oops!, oh well... :x)
There's also minor bugfixes and documentation updates.
In order to ease transitions to future versions of the GPL, we are
now "GPLv2 or later" instead of explicitly GPLv2 + GPLv3(-only).
The old Ruby 1.8 license remains an option. If the FSF turns out
a horrible GPLv4, users are free to continue using GPLv2 or GPLv3.
|
|
RubyForge is going away, so we must migrate the homepage.
The mailing list will be migrated, soon.
|
|
Internal reworking of unicorn 4.8.0 completely broke us(!).
This commit fixes things, but it means we no longer support
unicorn <= 4.7. Sorry about that.
|
|
There's nothing we can do about these errors due to
network failures and bad clients, either, so do not spew
a backtrace for them.
|
|
There is currently no GPLv4, so this change has no effect at the
moment.
In case the GPLv4 arrives and I am not alive to approve/review it,
the lesser of evils is have give blanket approval of all future GPL
versions (as published by the FSF). The worse evil is to be stuck
with a license which cannot guarantee the Free-ness of this project
in the future.
This unfortunately means the FSF can theoretically come out with
license terms I do not agree with, but the GPLv2 and GPLv3 will
always be an option to all users.
|
|
RAA is dead.
|
|
My curl 7.32.0 would actually print 400 Bad Request
Hope this would make it match against newer or older curl.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
|
|
This was documented in the unicorn docs, but not Rainbows!
(The major difference between unicorn and Rainbows! signal
handling is the deferred handling of SIGUSR1 in unicorn vs
the immediate handling in Rainbows!)
|
|
raindrops 0.11.0 was released several days ago and contains
minor improvements + fixes.
|
|
Via private communication, I learned of a user using XEpoll
when he should not have been.
|
|
This release adds hijacking support for Rack 1.5.x users.
See Rack documentation for more information about hijacking.
Lin Jen-Shin also provided the -N/--no-default-middleware option.
Minor packaging cleanups and new HACKING document.
There are also some corner-case bugfixes for *Epoll* users
(sleepy_penguin, these bugs do not affect EM or Cool.io users)
and test suite portability improvements.
|
|
-N/--no-default-middleware needs a corresponding manpage entry.
Additionally, the Rack::Chunked/ContentLength middleware comment
is out-of-date as of unicorn v4.1.0
|
|
This prevents pathological starvation cases where the user-space
ready-list can be repopulated infinitely. With EPOLLONESHOT,
epoll itself may be used for this task (at a slightly higher
cost) by enabling read/write checks, as the epoll ready-list
preserves event ordering when used with EPOLLONESHOT.
|
|
No need to specify both flags for epoll (confirmed by reading
fs/eventpoll.c in the Linux kernel).
|
|
Thanks to Alex Wolfe for noticing.
|
|
EventMachine/NeverBlock currently do not build on Ruby 2.0.0
|
|
This ensures we're compatible with the latest stable
Ruby version.
|
|
Old versions of RubyGems which could not handle this attribute
are likely no longer in use.
|
|
This DRYs up versioning and makes packages easier to distribute.
|
|
This requires Rack 1.5.x and unicorn 4.6.0 for hijacking
support. Older versions of Rack continue to work fine,
but we must use unicorn 4.6.0 features to support this.
|
|
On FreeBSD 9.0, "wc -l" emits leading whitespace, so
filter it through tr -d '[:space:]' to eliminate it.
|
|
Most of these test dependencies may be safely bumped.
|
|
On FreeBSD 9.0, "wc -c" emits leading whitespace, so
filter it through tr -d '[:space:]' to eliminate it.
|
|
"date +%s" is not in POSIX (it is in GNU, and at least FreeBSD
9.0, possibly earlier). The Ruby equivalent should be
sufficiently portable between different Ruby versions.
This change was automated via:
perl -i -p -e 's/date \+%s/unix_time/' t/*.sh
|
|
POSIX already stipulates tee(1) must be unbuffered. I think my
decision to use utee was due to my being misled by a bug in
older curl where -N did not work as advertised (but --no-buffer
did).
|
|
This would prevent Unicorn (Rainbows) from adding default middleware,
as if RACK_ENV were always none. (not development nor deployment)
This is implemented in Unicorn, so we only need to update
the option parser here.
Discussion thread on Unicorn mailing list:
http://rubyforge.org/pipermail/mongrel-unicorn/2013-January/001675.html
Signed-off-by: Eric Wong <normalperson@yhbt.net>
|
|
on_read normally relies on the close checking in on_readable,
but on_deferred_write_complete may be called from on_writable
instead (bypassing the close check of on_readable).
This affects both Epoll and XEpoll users, but only if they
were sending responses via body#to_path and triggering
on_deferred_write_complete.
While we're at it, favor non-recursive want_more instead of
calling on_readable recursively in ev_write_responses to
prevent stack growth.
|
|
This release fixes two EventMachine bugfixes from Lin Jen-Shin
and Mark J. Titorenko. There are also some minor cleanups.
Lin Jen-Shin (1):
event_machine: avoid close on deferred response
Mark J. Titorenko (1):
event_machine: join reactor_thread if it is already running
Eric Wong (2):
event_machine: cleanup confusing assignment
t/GNUmakefile: cleanup test dependencies
|
|
The missing random_blob dependency was causing the following
to fail on a fresh clone:
make -C t ThreadPool.t0005-large-file-response.sh
|
|
...rather than falling through worker_loop
Prior to the application of this patch, if an EventMachine
reactor_thread has already been started elsewhere before the
worker_loop is entered, the worker_loop exits as a second call
to EM.run does not block the current thread.
This patch causes the worker_loop thread to join the
reactor_thread if it is running.
[ew: commit message formatting]
Signed-off-by: Eric Wong <normalperson@yhbt.net>
|
|
|
|
close_connection_after_writing only if not deferred, as in
cool.io
Deferred responses may buffer more data down the line, so
keep the connection alive if we have a deferred response
body.
[ew: clear @deferred when we really want to quit,
updated commit message]
Acked-by: Eric Wong <normalperson@yhbt.net>
|
|
One bugfix allows stream(:keep_open) in Sinatra to work
properly.
Thanks to W. Andrew Loe III for the informative bug report
and reproducible test case.
ref: http://mid.gmane.org/CA+-9oNd1EFqsniPkkPTwu5opTCinbM7-2KHoXov7+y3LE4s4Tg@mail.gmail.com
|
|
Always ensuring we work with the latest versions.
|
|
Calling body.close in the normal write_response() code path
is incorrect, and only worked out of sheer luck with
Cramp and async_sinata.
This change allows stream(:keep_open) in Sinatra to work
properly.
Thanks to W. Andrew Loe III for the informative bug report
and reproducible test case.
ref: http://mid.gmane.org/CA+-9oNd1EFqsniPkkPTwu5opTCinbM7-2KHoXov7+y3LE4s4Tg@mail.gmail.com
|
|
Fiber-based concurrency options avoids negative sleep
intervals. Thanks to Lin Jen-Shin for pointing this out.
|
|
Also clarify the code while we're at it.
Thanks to Lin Jen-Shin for pointing this out.
ref: http://mid.gmane.org/CAA2_N1unOXb7Z4Jr8oKoSLu266O9Ko4o=oWzAcMA1w3=9X74KA@mail.gmail.com
|
|
freecode.com now requires HTTPS, too.
|
|
For epoll/Cool.io-based concurrency models, shutdown() is now
used to timeout keepalive clients to avoid race conditions.
Minor documentation improvements.
|
|
Again, for the one thousandth time, timing out threads is very
tricky business :<
|
|
As usual, test with the latest released version to avoid
surprises.
|