Date | Commit message (Collapse) |
|
We now use IO#trysendfile in the sendfile 1.1.0 to reduce the
cost of generating backtraces for slow clients (from EAGAIN).
Nothing new for people not serving static files (but more
on the way).
Existing "sendfile" gem users must upgrade to 1.1.0
or risk being left without sendfile support at all:
http://bogomips.org/rainbows.git/patch?id=cd8a874d
|
|
Latest and greatest :D
|
|
Ugh, and still no usable IO.copy_stream under 1.9.2 :<
|
|
IO#trysendfile does not raise exceptions for common EAGAIN
errors, making it far less expensive to use with the following
concurrency models:
* Coolio
* CoolioFiberSpawn
* Revactor
* FiberSpawn
* FiberPool
This requires the new sendfile 1.1.0 RubyGem and removes support
for the sendfile 1.0.0. All sendfile users must upgrade or be
left without sendfile(2) support. IO#sendfile behaves the same
if you're using a multi-threaded concurrency option, but we
don't detect nor use it unless IO#trysendfile exists.
|
|
New sendfile gem will give us IO#trysendfile.
We might as well use and test the latest and greatest
versions of everything else since thats what users
pull in by default.
|
|
It's a simpler interface and avoids allocating an array
which is nice.
|
|
Ruby 1.9.3dev switched to BSD but we remain under the same terms
as the old Ruby 1.8 license. Mongrel2 exists now and also uses
the BSD, so don't confuse people with that, either.
|
|
The Cramp::Controller namespace is gone.
|
|
Small bug fixes that have been sitting around, not much but
it's already been one month since our last release.
* Unicorn dependency updated to 3.4.0, so we get IPv6 support
and Kgio.autopush support for ":tcp_nopush => true" users.
* Optional :pool_size argument is fixed for NeverBlock and
CoolioThreadPool users.
* Mostly minor internal code cleanups
* Sunshowers support removed, it was out-of-date and
unmaintained. Cramp remains supported for now.
* X-Rainbows-* response headers support removed, nobody used it.
There are severalnew features in this release not documented
here. Consider any new features not mentioned in these release
notes to be subject to removal/renaming in future releases.
|
|
* Fixes Ruby 1.9.3dev deprecation warnings
* Fixes some documentation dependency issues
|
|
Of course some folks believe nothing in Rainbows! is :.
|
|
This conflicts with ports clients may automatically use
in the ephemeral range.
This reverts commit c9a7560bb684bbdadb641ebc7597303f38c37d4f.
|
|
This will help prevent us from breaking :pool_size in the
future.
|
|
Actually use the Rainbows::O constant for use
[ew: rewritten commit message subject]
Acked-by: Eric Wong <normalperson@yhbt.net>
|
|
No need for these
|
|
Don't need to document things that aren't ready, yet.
|
|
No need to allocate a proc every time when we can just
yield much more efficiently.
|
|
We were needlessly allocating objects even when using yield.
|
|
acceptor thread pools could use some work, still
|
|
There's a lot of code duplication here :<
|
|
Array#each will do..
|
|
Avoid constantly nuking the method cache and raising
repeated exceptions while our master process is shutting
us down.
|
|
Ugh, I need to think of a way to clean this up...
|
|
We want to use the singleton methods in Kgio to reduce
conditionals.
|
|
1.5 is nicer than older versions
|
|
It's too long especially since XEpollThreadPool is planned :>
|
|
It supports IPv6 and pulls in a better Kgio. Since Unicorn
defaults to ":tcp_nopush => true", we need to flip it back
to false to be compatible with the types of apps Rainbows!
is targetted as.
|
|
ed can do in-place editing portably, unlike sed.
|
|
Put all of our constants in one place for easy reference
|
|
Yes it's fugly
|
|
We can't work around it effectively in the C extension
itself. This requires the latest sleepy_penguin gem.
|
|
It's Linux-only, after all
|
|
Binding to a random port is much easier this way
|
|
This can be a starting point for developing Cool.io or
EventMachine-based reverse proxy applications on Rainbows!
Eventually Rainbows! could replace nginx for Unicorn users!
Just don't consider this code production ready, yet, at all,
it doesn't handle any sort of failover and has no automated
tests, yet.
|
|
This allows us to more aggressively handle pipelining
as well as trigger future Kgio autopush behavior.
|
|
Some users never, ever accept uploads, so we should test
for it.
|
|
We should only attempt to modify the descriptor when we
block, and not for subsequent events.
|
|
epoll is Linux-only right now. kqueue probably isn't worth
supporting directly (and even direct epoll support is debatable
given the current GVL situation)
|
|
Edge-triggered epoll concurrency model with blocking accept() in
a (hopefully) native thread. This is recommended over Epoll for
Ruby 1.9 users as it can workaround accept()-scalability issues
on multicore machines.
|
|
We're living on the EDGE and mixing epoll with threads :D
|
|
We'll be using this more in the future
|
|
super doesn't seem to capture arguments inside a block
under 1.8.7 :<
|
|
No reason to keep it around
|
|
We know @wr_queue is empty since we just initialized it
and the first thing an HTTP client does is read.
|
|
No need to setting an ivar for most requests
|
|
We'll override it, maybe...
|
|
We don't do Level-Triggered I/O around here
|
|
|
|
We'll lower our precision for keepalive timeouts a little
and and reduce our Time object allocation rate.
|
|
We don't need to allocate new string objects for short-lived
strings. We'll pay the price of a constant lookup instead.
|