about summary refs log tree commit homepage
DateCommit message (Collapse)
2015-10-19Rainbows! 4.7.0 - updates for ruby 2.3.0dev v4.7.0
This release includes fixes for upcoming changes in Ruby 2.3.0 (due December 2015). Use of Rainbows! for new projects is not recommended, try other servers instead. * update dependencies for Ruby 2.2.0dev * switch docs + website to olddoc * gemspec: fix bad reference to rdoc_options * README: reference yahns * build: fix quoting issue with double parens * response: avoid unnecessary args to IO.copy_stream * t/close-has-env.ru: ensure close is idempotent * sync_close: This fix breakage from Ruby-trunk r50118 * t/t0044-autopush.sh: remove test * t/test_isolate.rb: updates for various gem versions * response: convert source arg to path before IO.copy_stream * speed up QUIT for users of the unicorn worker_loop * gemspec: use SPDX-compatible license for GPL-2.0+
2015-10-19gemspec: use SPDX-compatible license for GPL-2.0+
Current versions of RubyGems still complains about the '+' is valid according to: http://spdx.org/licenses
2015-10-15speed up QUIT for users of the unicorn worker_loop
WriterThreadPool, WriterThreadSpawn, Base, and potentially other rarely-used concurrency options experienced slow shutdowns due to the destruction of a listener socket failing to wake up a thread in IO.select. Send ourselves a signal to interrupt the IO.select call in the main thread to force the wakeup.
2015-10-14response: convert source arg to path before IO.copy_stream
This will allow us use the sendfile syscall under Linux on Ruby which favor #read/#readpartial methods for non-IO objects. This also allows us to revert changes made in commit db790ff3531acdfa23ab290998bba29360a6782b ("sync_close: This fix breakage from Ruby-trunk r50118")
2015-09-14t/test_isolate.rb: updates for various gem versions
2015-09-14t/t0044-autopush.sh: remove test
kgio no longer does anything with autopush, so this test is broken. Autopush was overkill and badly done (MSG_MORE is better on Linux, FreeBSD should copy it :P).
2015-09-14sync_close: This fix breakage from Ruby-trunk r50118
By providing read+readpartial methods IO.copy_stream behaves slightly differently when operating on non-IO-subclassed objects nowadays. Ref: > * io.c (copy_stream_body): use the arguments without conversion if > having read, readpartial, and write methods, than conversion by > to_path method. [ruby-core:68676] [Bug #11015]
2015-09-14t/close-has-env.ru: ensure close is idempotent
Ruby 2.3.0 will have idempotent IO#close, so closing an IO twice will be idempotent and not raise an IOError exception. Ensure we do not rely on the IOError exception to catch our own errors.
2015-09-14response: avoid unnecessary args to IO.copy_stream
Not all responses are seekable, so do not attempt to pass seek arguments to them since Ruby may attempt to seek (and fail!).
2015-09-14build: fix quoting issue with double parens
Apparently GNU make parses that strangely and mangles it for the shell...
2015-02-12README: reference yahns
Because nobody has time to read about all the options Rainbows! provides. yahns is basically XEpollThreadPool, with minor improvements which weren't easily supportable with other concurrency options.
2015-01-13gemspec: fix bad reference to rdoc_options
olddoc does not need or use this
2015-01-10switch docs + website to olddoc
wrongdoc was difficult to maintain because of the tidy-ffi dependency and the HTML5 changes in Darkfish could not be handled well by Tidy. olddoc is superior as it generates leaner HTML which loads faster, requires less scrolling and less processing power to render. Aesthetic comparisons are subjective of course but completely unimportant compared to speed and accessibility. The presence of images and CSS on the old (Darkfish-based) site probably set unreasonable expectations as to my ability and willingness to view such things. No more, the new website is entirely simple HTML which renders well with even the wimpiest browser (hell, olddoc even tries to generate readable raw HTML).
2014-10-08update dependencies for Ruby 2.2.0dev
This will allow me to test for unintentional breakage in 2.2.0. Part of the reason for putting this project on maintenance mode is because many of the libraries we depend on have not kept up with the latest changes to Ruby. So we will disable many tests for 2.2+ to ensure the core parts remain working.
2014-05-12Rainbows! 4.6.2 - see you on the other side v4.6.2
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)
2014-05-12documentation updates for Rubyforge death
We're migrating to a new public-inbox[1] + mailing list rainbows-public@bogomips.org [1] http://public-inbox.org/
2014-05-06add script for redirecting to new site
2014-05-02add slrnpull.conf example for gmane archives
In case anybody else wants to verify/check the archive or use this for other projects, we'll document what we did here.
2014-02-02rainbows 4.6.1 - EventMachine fixes v4.6.1
* 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.
2014-01-29set executable bit rainbows executable
Folks don't usually run from the source directory, but RubyGems complains otherwise.
2014-01-29update EventMachine tests
EM 1.0.3 got released and seems to work under Ruby 2.1, so re-enable EM and NeverBlock tests again.
2014-01-29disable cramp tests for now
Cramp seems broken for now, we'll deal with it at another time and I'm not sure if it ever took off...
2014-01-29event_machine: update for unicorn 4.8.x
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.
2014-01-17Rainbows! 4.6.0 - fix unicorn 4.8.0 compatibility v4.6.0
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.
2014-01-17switch homepage to http://rainbows.bogomips.org/
RubyForge is going away, so we must migrate the homepage. The mailing list will be migrated, soon.
2014-01-17unicorn 4.8 compatibility + test version bumps
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.
2014-01-17error: silence ETIMEDOUT and EHOSTUNREACH errors
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.
2013-10-26license: allow all future versions of the GNU GPL
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.
2013-09-30Rakefile: kill raa_update task
RAA is dead.
2013-09-13Match against newer curl.
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>
2013-09-04SIGNALS: document SIGHUP/preload_app incompatibility
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!)
2013-04-24test_isolate: update raindrops to 0.11.0
raindrops 0.11.0 was released several days ago and contains minor improvements + fixes.
2013-03-01epoll+xepoll: clarify intent of these concurrency options
Via private communication, I learned of a user using XEpoll when he should not have been.
2013-02-27Rainbows! 4.5.0 - hijacking support v4.5.0
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.
2013-02-26manpage: update middleware-related documentation
-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
2013-02-26epoll/*: remove user-space array as active queue
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.
2013-02-26xepoll_thread_*/client: EPOLLONESHOT implies EPOLLET
No need to specify both flags for epoll (confirmed by reading fs/eventpoll.c in the Linux kernel).
2013-02-26doc: add HACKING document
Thanks to Alex Wolfe for noticing.
2013-02-26tests: update checks for Ruby 2.0.0
EventMachine/NeverBlock currently do not build on Ruby 2.0.0
2013-02-26bump unicorn dependency to 4.6.2+ for Ruby 2.0.0
This ensures we're compatible with the latest stable Ruby version.
2013-02-26gemspec: set licenses= attribute
Old versions of RubyGems which could not handle this attribute are likely no longer in use.
2013-02-16GIT-VERSION-GEN: rewrite to manage RAINBOWS_VERSION const
This DRYs up versioning and makes packages easier to distribute.
2013-02-11hijacking support for Rack 1.5.x users
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.
2013-02-04tests: "wc -l" portability for *BSDs
On FreeBSD 9.0, "wc -l" emits leading whitespace, so filter it through tr -d '[:space:]' to eliminate it.
2013-02-01tests: bump version dependencies for Isolate
Most of these test dependencies may be safely bumped.
2013-02-01tests: "wc -c" portability for *BSDs
On FreeBSD 9.0, "wc -c" emits leading whitespace, so filter it through tr -d '[:space:]' to eliminate it.
2013-02-01tests: replace non-portable "date +%s" with ruby equivalent
"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
2013-02-01tests: remove utee and use tee(1) instead
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).
2013-01-29Add -N or --no-default-middleware option.
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>
2013-01-24epoll: ensure closing of pipelined clients if required
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.