Date | Commit message (Collapse) |
|
This requires updating to unicorn 5.1+ to relax the rack
requirement. Unlike unicorn, Rainbows! is considerably
larger and cannot function without rack installed.
There were no code changes required to pass the test suite;
but some other optional gems needed to be updated for testing.
Support for async_sinatra is no longer tested as that is tied
to rack 1.x; but the remaining EventMachine-dependent parts
remain tested.
Thanks to Julia López Aladro for reminding us on the mailing list:
https://bogomips.org/rainbows-public/CAPhSs6OAU+motd+MF=WOSek9==StLjEQJsNwAO3-aRWCZzhs=g@mail.gmail.com/
|
|
I forgot to add any NNTP servers to our .olddoc.yml :x
nntp://news.public-inbox.org/inbox.comp.lang.ruby.rainbows
nntp://news.gmane.org/gmane.comp.lang.ruby.rainbows.general
Not advertising additional HTTP-based URLs just yet. They could
contain images/frames/JS/CSS and add unnecessary clutter to the
footer. NNTP puts the client in control of UI.
|
|
The timeout (mis)feature in unicorn uses the monotonic clock
if available. We must follow suit to avoid having our timeout
functionality completely broken.
|
|
Current versions of RubyGems still complains about the '+'
is valid according to: http://spdx.org/licenses
|
|
olddoc does not need or use this
|
|
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).
|
|
We're migrating to a new public-inbox[1] + mailing list
rainbows-public@bogomips.org
[1] http://public-inbox.org/
|
|
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 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.
|
|
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 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.
|
|
We want the stricter parser the error log filtering in
unicorn 4.1.0
|
|
Hopefully this points more folks to email us.
|
|
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.
|
|
We now rely on Unicorn 4.0.0. We'll use the latest
kgio and raindrops versions anyways.
|
|
Reduces inconsistency.
|
|
Gotta keep using the latest and greatest.
|
|
kgio 2.4.0 has some 1.9.3dev fixes which affect us
|
|
Might as well use the latest and greatest.
|
|
Latest and greatest :D
|
|
No need for these
|
|
We want to use the singleton methods in Kgio to reduce
conditionals.
|
|
1.5 is nicer than older versions
|
|
This means we can remove Time.now.httpdate in the next commit
|
|
|
|
|
|
Cool.io (new version of Rev) support is explicitly added
(it always worked before). ":Coolio" may be used in place
of ":Rev" anywhere in your Rainbows! config file.
There is a new "keepalive_requests" config directive to limit
the number of requests a single connection may make (default:
100, same as nginx). This may be useful for better
load-balancing characteristics.
The old "Rev" prefixes remain supported as long as Cool.io
remains compatible with Rev (likely forever).
Bug fixes:
* Rainbows::ThreadTimeout middleware with multiple clients
* large, pipelined upload errors with Revactor+Coolio(Rev)
* high CPU usage for maintaining idle keepalive on *Fiber*
* needless ThreadPool wakeups
* request env prematurely cleared keepalive requests,
breaking some middlewares such as Clogger.
* "close" not called on body if wrapper and sendfile used together
Various code cleanups, and our RDoc website is JavaScript-free.
See the ChangeLog or git for all changes.
|
|
Cool.io is the new name for Rev. We'll continue to support Rev
until Cool.io breaks backwards compatibility. Rev may not be
supported if Cool.io is.
|
|
Unicorn 3.2.1 gives us an improved HttpParser#next? that
preserves state until the next HttpParser#parse call.
|
|
It is a common base so we can share documentation tasks
more easily with Unicorn and it ensures our RDoc no longer
has JavaScript in it!
|
|
We'll be taking advantage of configurable
client_buffer_body_size soon.
|
|
Kgio 2.0.0 has a superior API and less likely to conflict or
blow up with other applications. Unicorn 3.x requires Kgio 2.x,
too.
|
|
Unicorn 2.0.0 has CPU wakeup reductions.
|
|
Might as well go with the latest and greatest,
it has saner defaults at least.
|
|
We get basic internal API changes from Unicorn,
code simplifications coming next.
|
|
It removes the burden of byte slicing and setting file
descriptor flags. In some cases, we can remove unnecessary
peeraddr calls, too.
|
|
Unicorn 1.1.3 fixes potential race conditions during
SIGUSR1 log reopening.
|
|
This avoids costant resolution problems on client EOF
during input processing.
|
|
|
|
|
|
|
|
HeaderHash objects can only be used as headers without
violating Rack::Lint in Rack 1.1.0 or later.
|
|
This will allow us to be working_directory-aware as
far as config.ru goes.
|
|
|
|
It's useful given all the Gems we support but don't have hard
installation dependencies on.
|
|
no major internal changes until 2.0.0+
|
|
We expect no API changes in Unicorn for a while
|
|
|
|
This release fixes a denial-of-service vector for deployments
exposed directly to untrusted clients.
The HTTP parser in Unicorn <= 0.97.0 would trip an assertion
(killing the associated worker process) on invalid
Content-Length headers instead of raising an exception. Since
Rainbows! and Zbatery supports multiple clients per worker
process, all clients connected to the worker process that hit
the assertion would be aborted.
Deployments behind nginx are _not_ affected by this bug, as
nginx will reject clients that send invalid Content-Length
headers.
The status of deployments behind other HTTP-aware proxies is
unknown. Deployments behind a non-HTTP-aware proxy (or no proxy
at all) are certainly affected by this DoS.
Users are strongly encouraged to upgrade as soon as possible,
there are no other changes besides this bug fix from Rainbows!
0.91.0 nor Unicorn 0.97.0
This bug affects all previously released versions of Rainbows!
and Zbatery.
|