about summary refs log tree commit homepage
DateCommit message (Collapse)
2011-01-21epoll: use newer sleepy_penguin
We can eliminate the State module to simplify our code since 1.3.x keeps better track of things.
2011-01-21max_body: disable for epoll
It's almost just like Coolio
2011-01-21doc: git.bogomips.org => bogomips.org
bogomips.org is slimming down and losing URL weight :)
2011-01-21epoll: use sleepy_penguin default size for epoll_wait
It was based off the nginx window of 64 events. Not that any servers are really that busy...
2011-01-20epoll: close epoll descriptor on graceful shutdown
This allows us to gracefully shutdown more quickly.
2011-01-20remove support for Sunshowers
The WebSocket protocol is still undergoing changes and unused. We won't waste time supporting it until it's finalized and doesn't break HTTP.
2011-01-20epoll: ignore ECONNRESET errors
Nothing we can do about that from clients. Perhaps kgio should just return nil for those...
2011-01-20ev_core: simplify setup steps
ev_core is always loaded after forking, so eliminate the need for extra setup steps for each concurrency model that uses it
2011-01-20merge rack_input into process_client
It turns out to be less-used than previous anticipated, so there's no point in having yet another module.
2011-01-20ev_core: localize 413 error constant
It's the only place we ever use it
2011-01-20remove unused 416 error constants/exceptions
We handle that locally in rainbows/response now
2011-01-20dev_fd_response: garbage reduction
Constant strings mean the runtime won't have to allocate new objects all the time since GC is currently the biggest performance problem of Ruby 1.9.x in my experience.
2011-01-19dev_fd_response: do not send chunks to 1.0 clients
chunked Transfer-Encoding is only valid for HTTP/1.1
2011-01-19t0035: kgio-pipe-response works everywhere
Or at least it should :)
2011-01-19t0023: use skip_models helper
we need to get in the habit of using this more
2011-01-19remove support for X-Rainbows-* headers
We guarantee the Rack env will exist for the duration of the request/response cycle, so we can just tweak "rainbows.autochunk".
2011-01-19initial edge-triggered epoll model
Coolio and EventMachine only use level-triggered epoll, but being Rainbows!, we live on the EDGE!
2011-01-19tests: content-md5 tests shut down connection
This makes content-md5 tests much faster since we no longer wait for the server to to timeout.
2011-01-17ev_core: reuse buffer to avoid GC thrashing
Single-threaded concurrency models can reuse a single buffer to avoid thrashing memory and causing unnecessary GC activity.
2011-01-14t0050: improve test reliability
normal signals can get lost easily :<
2011-01-14tests: bump rack-fiber_pool version to 0.9.1
We always try to track the latest and greatest. We've also updated the test to actually test concurrency since rack-fiber_pool reuses recent fibers now.
2011-01-11Rainbows! 3.0.0 - serving the fastest apps to slow clients faster! v3.0.0
There is one incompatible change: We no longer assume application authors are crazy and use strangely-cased headers for "Content-Length", "Transfer-Encoding", and "Range". This allows us to avoid the case-insensitivity of Rack::Utils::HeaderHash for a speed boost on the few apps that already serve thousands of requests/second per-worker. :Coolio got "async.callback" support like :EventMachine, but it currently lacks EM::Deferrables which would allow us to call "succeed"/"fail" callbacks. This means only one-shot response writes are supported. There are numerous internal code cleanups and several bugfixes for handling partial static file responses.
2011-01-11add write-on-close test from Unicorn
We need to ensure this esoteric feature keeps working for some people.
2011-01-11event_machine: buffer reads when waiting for async.callback
We cannot trigger on_read events and invoke the HTTP parser and modify @env while we're waiting for an application to run async.callback. We also need to clear (and *maybe* re-set) @deferred if we're writing from async.callback
2011-01-11event_machine/client: rename ivar for consistency with Coolio
Both use @deferred to refer to the state where there's a deferred response body in the queue.
2011-01-11event_machine/client: remove unused :body accessor
Nobody uses it anymore
2011-01-11coolio: enable async.callback for one-shot body responses
The lack of an equivlent to EM::Deferrable prevents us from doing streaming/trickling responses, but a one-shot body should work fine for Coolio and generating dynamic responses.
2011-01-07rainbows/coolio/client: set LOOP constant in module
It's more natural and easier to maintain this way since Coolio::Client is always lazy loaded.
2011-01-07coolio/client: small optimizations
* lazy load uncommon classes: StreamFile, Response{Chunk,}Pipe * remove needless rainbows/coolio/sendfile module since we're lazily loaded now along with the rest of rainbows/coolio/client and only in the worker.
2011-01-07coolio_thread_*: lazy load Rainbows::Coolio::Client
We don't want that loaded in the parent process since we want config reloadability.
2011-01-07redirect unexpected test output to /dev/null
We check the return code anyways, and spewing random binary data to the terminal with verbosity on is not a good idea.
2011-01-07event_machine: fold write_response back into client
No point in having too many modules to search around (for both hackers and the runtime).
2011-01-07event_machine: cleanup async logic
Since we support keepalive now, setting @state can be harmful and the comment is out-of-date.
2011-01-07ev_core: small organization cleanup
We want to put all constants in one place.
2011-01-07more consistent use/avoidance of HeaderHash
Rack::Utils::HeaderHash is still expensive, so avoid forcing it on users since we can assume app/library authors use normally-cased HTTP headers.
2011-01-07favor Hash#include? for some existence checks
Hash#[] is slightly slower on the miss case due to calling Hash#default (but faster for the hit case, probably because it is inlined in 1.9).
2011-01-07test_isolate: bump versions and simplify
We can't possibly keep track of all sub-dependencies, so only declare primary dependencies until we find a known problem with a sub-dependency.
2011-01-07test_isolate: prevent concurrent execution
I realize this lock overly covers different versions of Ruby, but it's simple and we don't need to invoke isolate too often (we hope).
2011-01-07tests: bump async_sinatra dependency to 0.4.0
It's out and it works, so why not.
2011-01-07bump dependency on Rack to 1.2.1
We need to split out Cramp tests to Isolate to a different path, which sucks, but oh well. Cramp hasn't had a release in a while...
2011-01-07response: do not skip Status header set by app
Rack::Lint already stops apps from using it. If a developer insists on it, then users who inspect their HTTP headers can point and laugh at them for not using Rack::Lint!
2011-01-07response: fix skipping of Status: header from app
We already set a Status: header by default for compatibility with some existing, broken libraries out there.
2011-01-07ev_core: garbage reduction with const strings
Reading headers is common and we don't want to create new String objects (even if they're tiny or copy-on-write) for the GC to munch on.
2011-01-06event_machine: refactor async.callback for keepalive
async.callback will be useful with Coolio (and more!) soon, so ensure it works as well as the rest of Rainbows!
2011-01-06event_machine: factor out async.callback handling
This will allow Coolio to use it, too.
2011-01-06minor cleanups following state cleanups
We noticed a few more things that could be cleaned up after the last commit.
2011-01-06eliminate G constant and just use the Rainbows! module
Code organization is hard :<
2011-01-06rainbows.rb: unindent
2011-01-06eliminate timed_read module
No need to split it out when there's only a single class using it.
2011-01-06simplify keepalive_timeout accounting
Easier just to use an instance variable