# Rainbows! 0.96.0 - range support

**URL:** <https://www.ruby-forum.com/t/rainbows-0-96-0-range-support/192631>\
**Category:** Ruby\
**Created:** [August 3, 2010, 11:11am UTC](https://www.ruby-forum.com/t/rainbows-0-96-0-range-support/192631 "2010-08-03T11:11:36Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![ericw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/97f17d/32.png) [@ericw](https://www.ruby-forum.com/u/ericw)\
**Post date:** [August 3, 2010, 11:11am UTC](https://www.ruby-forum.com/t/rainbows-0-96-0-range-support/192631/1 "2010-08-03T11:11:36Z")

</div>

Rainbows! is an HTTP server for sleepy Rack applications. It is based  
on  
Unicorn, but designed to handle applications that expect long  
request/response times and/or slow clients.

- [http://rainbows.rubyforge.org/](http://rainbows.rubyforge.org/)
- removed\_email\_address@domain.invalid
- git://git.bogomips.org/rainbows.git

Changes:

For concurrency models that use sendfile or IO.copy\_stream, HTTP  
Range requests are honored when serving static files. Due to  
the lack of known use cases, multipart range responses are not  
supported.

When serving static files with sendfile and proxying  
pipe/socket bodies, responses bodies are always properly closed  
and we have more test cases for dealing with prematurely  
disconnecting clients.

Concurrency model specific changes:

EventMachine, NeverBlock -

- keepalive is now supported when proxying pipes/sockets
- pipelining works properly when using EM::FileStreamer
- these remain the only concurrency models _without_  
Range support (EM::FileStreamer doesn’t support ranges)

Rev, RevThreadSpawn, RevThreadPool -

- keepalive is now supported when proxying pipes/sockets
- pipelining works properly when using sendfile

RevThreadPool -

- no longer supported under 1.8, it pegs the CPU at 100%.  
Use RevThreadSpawn (or any other concurrency model) if  
you’re on 1.8, or better yet, switch to 1.9.

Revactor -

- proxying pipes/sockets with DevFdResponse is much faster  
thanks to a new Actor-aware IO wrapper (used transparently  
with DevFdResponse)
- sendfile support added, along with Range responses

FiberSpawn, FiberPool, RevFiberSpawn -

- Range responses supported when using sendfile

ThreadPool, ThreadSpawn, WriterThreadPool, WriterThreadSpawn -

- Range responses supported when using sendfile or  
IO.copy\_stream.

See the full git logs for a list of all changes.
