about summary refs log tree commit homepage
DateCommit message (Collapse)
2011-08-05Rainbows! 4.2.0 - Cramp WebSocket updates! v4.2.0
This release includes updates to support WebSockets under Cramp 0.14 and later. This will be the last release which supports Cramp 0.13. There are no changes in this release for non-Cramp users.
2011-08-05bump Cramp test dependency to 0.14
2011-08-05event_machine: APP needs to be in the main Client class
Oops, testing against new changes against cramp.git here
2011-08-05event_machine: add :em_client_class option
This can allow Cramp (and potentially other libraries) to subclass or implement duck-type compatible versions of Rainbows::EventMachine::Client.
2011-08-05cramp: bump test version to 0.13
cramp was just released a few days ago and all the tested pieces seem to work...
2011-07-30Rainbows! 4.1.0 - minor internal cleanups v4.1.0
There are only some minor cleanups in this release and a bump to kgio 2.5 to remove the dependency on io/wait. kgio 2.5 or later is now required (kgio 2.6+ will be required in the next release).
2011-07-21remove tcp_nodelay/tcp_nopush tweaking
Unicorn 4.x already defaults match those of Rainbows! to favor lower latency instead of lowered bandwidth usage.
2011-07-21remove unnecessary io/wait require
kgio 2.5 added kgio_wait_*able methods
2011-06-29Revert "http_server: cap timeout at 32-bit LONG_MAX seconds"
Unicorn (> 4.0.1) already handles this for us, not that it affects many people... This reverts commit 37c376a9253ed62d134cbb4dbc6eaecc6076c77e.
2011-06-28t0044: do not assume setsockopt() finished
Race conditions abound in the world of concurrency!
2011-06-28Fix Fiber* and WriterThread* breakage from removing io/wait
This fixes up breakage introduced in commit 905f0ff393629ddb4d70e3dc221b016128c47415 to switch to kgio for timed, synchronous waiting.
2011-06-28require kgio 2.5 for kgio_wait_readable(timeout)
Since kgio_wait_*able in kgio 2.5 takes an optional timeout argument, we no longer have to load the extra "io/wait" module. This saves us a small amount of some memory and also removes the extra ioctl(FIONREAD) syscall IO#wait enforces. Like IO#wait in Ruby 1.9.3dev, kgio_wait_readable may use ppoll() to wait on high-numbered file descriptors as efficiently as it waits on low-numbered descriptors.
2011-06-28bin/rainbows: release the OptionParser object from stack
No point in keeping it around to eat memory.
2011-06-27http_server: cap timeout at 32-bit LONG_MAX seconds
We can't wait for longer than 68 years.
2011-06-27Rainbows! 4.0.0 - MOAR concurrency for MOAR COARS v4.0.0
Rainbows! now scales to more than 1024 worker processes without special privileges. To enable this, Rainbows! now depends on Unicorn 4.x and thus raindrops[1]. client_max_header_size directive is added to limit per-client memory usage in headers. An experimental StreamResponseEpoll concurrency option now exists to buffer outgoing responses without any thread-safe dependencies. Unlike the rest of Rainbows! which works fine without nginx, this concurrency option is /only/ supported behind nginx, even more strongly so than Unicorn itself. non-nginx LAN clients are NOT supported for this. This relies on the sleepy_penguin[2] RubyGem (and Linux). There are some minor bug fixes and cleanups all around. See "git log v3.4.0.." for details. [1] http://raindrops.bogomips.org/ [2] http://bogomips.org/sleepy_penguin/
2011-06-27bump dependencies (kgio, unicorn, raindrops)
We now rely on Unicorn 4.0.0. We'll use the latest kgio and raindrops versions anyways.
2011-06-27remove unused arg in Rainbows::Response.setup
It hasn't been used in a while, but we kept it for Zbatery version compatibility.
2011-06-22epoll/client: properly close on all pipe responses
Some pipe responses can trigger the on_deferred_write_complete method without ever re-running the event loop. This appears to be the result of the occasional t0050 failures.
2011-06-22t0050: improve diagnostics for this test
This test seems to fail sometimes with Epoll and XEpoll...
2011-06-22t/test_isolate: remove unneeded comment
That's been around forever, and we think Rubinius supports that...
2011-06-22dev_fd_response: enable under Rubinius
Untested, but it should work nowadays...
2011-06-22Unicorn 4.x resync for ticker
This removes the extra per-process file descriptor and replaces it with Raindrops.
2011-06-22t/test_isolate: drop Unicorn test dependency for now
It's already a runtime dependency
2011-06-15remove IO_PURGATORY dependency
We no longer need to put all listeners away since Unicorn uses kgio.
2011-06-11configurator: add client_max_header_size directive
Lowering this will lower worst-case memory usage and mitigate some denial-of-service attacks. This should be larger than client_header_buffer_size. The default value is carried over from Mongrel and Unicorn.
2011-06-11doc: remove docs for Rainbows::Fiber::* APIs
Do not encourage their use, really.
2011-06-10stream_response_epoll: update documentation
Yes, this concurrency model is our strangest yet.
2011-06-11remove Rainbows.run method
We can get away with a single stack frame reduction. Unicorn itself has more stack reductions, but Rainbows! is further behind in this area.
2011-06-10ev_core: do not autochunk HTTP/1.0 (and 0.9) responses
Do not assume middlewares/applications are stupid and blindly add chunking to responses (we have precedence set by Rack::Chunked).
2011-06-10ev_core: use add_parse for trailers, too
HttpParser#trailers and #headers are actually the same method, so we'll just continue on.
2011-06-10gemspec: add GPLv3 to commented-out licenses section
Reduces inconsistency.
2011-06-10use HttpParser#add_parse API in Unicorn 3.7.0
It's easier-to-use in some cases.
2011-06-09tests: more fixes for StreamResponseEpoll
Oops.
2011-06-09response: sendfile_range fis for Rack::File in rack 1.3.0
Rack::File already sets Content-Range, so don't repeat work and reparse Content-Length.
2011-06-09t/t9002: use Rack::Head
We send HEAD requests and expect body-less responses. Noticed while running a newer rack version after re-isolating.
2011-06-09update various RubyGem dependencies
Gotta keep using the latest and greatest.
2011-06-09stream_response_epoll: our most "special" concurrency option yet
This doesn't use Rainbows::Base so we have no keepalive support at all. This could eventually be an option for streaming applications.
2011-06-09move reopen_worker_logs to base
We may not always use Rainbows! :Base since we don't want keepalive/immediate log reopening in some cases.
2011-06-06doc: remove --sanitize-html for pandoc
pandoc 1.8 no longer supports this, and we don't need it anyways since we only generate documentation from our repository.
2011-05-31xepoll_thread_*: update docs for Linux 3
Linux 3.0.0 is just around the corner and of course newer than 2.6.
2011-05-30test-lib: enable splice(2) for Linux 3.x
The latest Linux series is now 3.x, not 2.6.x
2011-05-21Rainbows 3.4.0 - minor updates and fixes v3.4.0
SIGQUIT (graceful shutdown) now drops idle keepalive clients for the concurrency models where maintaining an idle client is relatively inexpensive: Coolio, CoolioThreadPool, CoolioThreadSpawn, Epoll, EventMachine, XEpoll, XEpollThreadPool, XEpollThreadSpawn. Kgio.autopush now works properly for all multi-threaded concurrency models (if you're using :tcp_nopush).
2011-05-21pkg.mk: update to the latest version
* locale fix for grep
2011-05-21use and recommend sleepy_penguin 3.0.1
It's better under 1.9.3 (sleepy_penguin 3.0.1 was bogus)
2011-05-21use and recommend sleepy_penguin 3.0.0
It's better under 1.9.3
2011-05-21t0044: increase test reliability
2011-05-21try_defer: enable documentation
It should hopefully give this more visibility even though it's an internal feature.
2011-05-21xepoll_thread_pool/client: improve autopush support
We need to trigger a recv() to uncork the response. This won't affect fairness (much) since all recv()s are non-blocking and a successful header parse will put us in the back of the queue.
2011-05-20.gitignore: add tags/TAGS files
Some folks use them.
2011-05-20add tests for Kgio autopush on Linux
We can support it fully for a subset of concurrency models where we have full control over buffering and HTTP/1.1 keepalive clients.