This release syncs with unicorn 5 and drops some old compatibility cruft from old releases. Performance should be roughly unchanged for Ruby 2.2 users while older Rubies (1.9.3 - 2.1) will see minor, probably unnoticeable performance regressions. Compatibility: * The horrible, proprietary (:P) "Status:" response header is finally gone, saving at least 16 precious bytes in every HTTP response. This should make it easier to write custom HTTP clients which are compatible across all HTTP servers. It will hopefully make migrating between different Rack servers easier for new projects. * Ruby 1.8 support removed. Ruby 1.9.3 is currently the earliest supported version. However, expect minor, likely-unnoticeable performance regressions if you use Ruby 2.1 or earlier. Going forward, Rainbows! will favor the latest version (currently 2.2) of the mainline Ruby implementation, potentially sacrificing performance on older Rubies. New features: * sd_listen_fds(3) emulation added for systemd compatibility. You may now stop using PID files and other process monitoring software when using systemd. * Newly-set TCP socket options are now applied to inherited sockets. * Dynamic changes in the application to Rack::Utils::HTTP_STATUS hash is now supported; allowing users to set custom status lines in Rack to be reflected in unicorn. This feature causes a minor performance regression, but is made up for Ruby 2.2 users with other optimizations. * The monotonic clock is used under Ruby 2.1+, making the timeout feature immune to system clock changes. As Rainbows! may be used anonymously without registration, the project is committed to supporting anonymous and pseudonymous help requests, contributions and feedback via plain-text mail to: firstname.lastname@example.org The mail submission port (587) is open to those behind firewalls and allows access via Tor and anonymous remailers. Archives are accessible via: * http://bogomips.org/rainbows-public/ * nntp://news.public-inbox.org/inbox.comp.lang.ruby.rainbows * nntp://news.gmane.org/gmane.comp.lang.ruby.rainbows.general and mirrored to various other places, so you do not even need to use a valid address when posting. 18 changes since Rainbows! 4.7.0 README: remove Zbatery references http_parser: handle keepalive_requests internally kill the moronic Status: header reflect changes in Rack::Utils::HTTP_STATUS_CODES reduce constant lookup dependencies http_parser: workaround hijack changes in unicorn 5 http_server: add master_pid attribute stream_response_epoll: remove hijack_prepare call bump to unicorn 5.0.1, use monotonic clock add .gitattributes for Ruby method detection response: avoid garbage string entirely tiny bytecode reductions for cold paths Ruby 1.9.3+-only cleanups revactor: remove fcntl dependency response: simplify regexp t0105: fix test reliability fix Rainbows.now definition for old Rubies fix broken constant lookups in unmaintained bits
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+
This release updates documentation to reflect the migration of the mailing list to a new public-inbox instance. This is necessary due to the impending RubyForge shutdown on May 15, 2014. The public-inbox address is: email@example.com (no subscription required, plain text only) ssoma 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.  policy: http://public-inbox.org/ - git://80x24.org/public-inbox an "archives first" approach to mailing lists  mechanism: http://ssoma.public-inbox.org/ - git://80x24.org/ssoma some sort of mail archiver (using git)
* 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.
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. The website is now at http://rainbows.bogomips.org/ since RubyForge is shutting down. The mailing list will be migrated soon. 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.
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.
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
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
Fiber-based concurrency options avoids negative sleep intervals. Thanks to Lin Jen-Shin for pointing this out.
For epoll/Cool.io-based concurrency models, shutdown() is now used to timeout keepalive clients to avoid race conditions. Minor documentation improvements.