about summary refs log tree commit homepage
DateCommit message (Collapse)
2009-12-13Rainbows! 0.9.0 v0.9.0
This release introduces compatibility with Sunshowers, a library for Web Sockets, see http://rainbows.rubyforge.org/sunshowers for more information. Several small cleanups and fixes. Eric Wong (20): add RevThreadPool to README rev: do not initialize a Rev::Loop in master process rainbows.1: update headers do not log IOError raised during app processing move "async.callback" constant to EvCore larger thread pool default sizes ({Rev,}ThreadPool) ev_core: no need to explicitly close TmpIOs EventMachine: allow usage as a base class NeverBlock: resync with recent our EM-related expansion RevThread*: move warning message to a saner place EventMachineDefer: preliminary (and) broken version TODO: add EM Deferrables RevThread*: remove needless nil assignment README: HTML5 Web Sockets may not be supported, yet... env["hack.io"] for Fiber*, Revactor, Thread* models EventMachineDefer is experimental README: add Sunshowers reference Rakefile: resync with Unicorn doc/comparison: add Web Sockets to comparison README updates
2009-12-13README updates
2009-12-13doc/comparison: add Web Sockets to comparison
2009-12-13Rakefile: resync with Unicorn
* cleanup NEWS.atom.xml feed * add freshmeat update task
2009-12-13README: add Sunshowers reference
2009-12-13EventMachineDefer is experimental
Not enough time or interest at the moment to get this fully working...
2009-12-11env["hack.io"] for Fiber*, Revactor, Thread* models
This exposes a client IO object directly to the underlying application.
2009-12-10README: HTML5 Web Sockets may not be supported, yet...
2009-12-09RevThread*: remove needless nil assignment
We no longer explicitly close @input
2009-12-08TODO: add EM Deferrables
EM.defer and EM Deferrables aren't the same thing, guess we'll have to figure out how to support both.
2009-12-08EventMachineDefer: preliminary (and) broken version
There's a good chunk of tests that fail with this, still. Worse, I haven't been able to figure out what's wrong since it looks like it would involve looking at C++ code...
2009-12-08RevThread*: move warning message to a saner place
Don't expect RevThreadPool to work with Rev <= 0.3.1, either.
2009-12-08NeverBlock: resync with recent our EM-related expansion
The last change to our EventMachine support code broke our (lightly-tested) NeverBlock support badly.
2009-12-06EventMachine: allow usage as a base class
We'll be adding EventMachine-based concurrency models.
2009-12-05ev_core: no need to explicitly close TmpIOs
Just let the GC deal with it
2009-12-05larger thread pool default sizes ({Rev,}ThreadPool)
This matches what EM sets for its built-in thread pool
2009-12-05move "async.callback" constant to EvCore
Rev/Packet-based models may support it in the future
2009-12-04do not log IOError raised during app processing
A client disconnect could possibly trigger IOError on close whereas EOFError does not occur.
2009-12-04rainbows.1: update headers
manpage was blatantly copied from the Unicorn one but headers were never updated.
2009-12-04rev: do not initialize a Rev::Loop in master process
It may make it harder to switch between concurrency models with SIGHUP this way...
2009-12-02add RevThreadPool to README
2009-12-02Rainbows! 0.8.0 v0.8.0
This release fixes a memory leak in our existing Revactor concurrency model. A new RevThreadPool concurrency model has been added as well as small cleaups to exit handling in workers.
2009-12-02Update TODO
2009-12-02add RevThreadPool concurrency model
This should be like RevThreadSpawn except with more predictable performance (but higher memory usage under low load).
2009-12-01more consistent code for worker timeout/exits
We now correctly exit!(2) if our master can't kill us.
2009-12-01revactor: avoid unbounded memory growth :x
This model has basically been rewritten to avoid unbounded memory growth (slow without keepalive) due to listeners not properly handling :*_closed messages. Performance is much more stable as a result, too.
2009-11-30ThreadPool: no need to exit!
Just die naturally here if threads don't die on their own.
2009-11-29Rainbows! 0.7.0 v0.7.0
keepalive_timeout (default: 2 seconds) is now supported to disconnect idle connections. Several new concurrency models added include: NeverBlock, FiberSpawn and FiberPool; all of which have only been lightly tested. RevThreadSpawn loses streaming input support to become simpler and faster for the general cases. AppPool middleware is now compatible with all Fiber-based models including Revactor and NeverBlock. A new document gives a summary of all the options we give you: http://rainbows.rubyforge.org/Summary.html If you're using any of the Rev-based concurrency models, the latest iobuffer (0.1.3) gem will improve performance. Also, RevThreadSpawn should become usable under MRI 1.8 with the next release of Rev (0.3.2).
2009-11-29bin/rainbows: do not expand paths given by shell
Shells already expand '~' before the executables see it, and relative paths inside symlinks can get set incorrectly to the actual directory name, and not the (usually desired) symlink name for things like Capistrano. Since our paths are now unexpanded, we must now check the "working_directory" directive and raise an error if the user specifies the config file in a way that makes the config file unreloadable.
2009-11-29rev/core: don't set IOBuffer.default_node_size
iobuffer 0.1.3 already sets this.
2009-11-29update gem dependency recommendations
2009-11-29event_machine: small noise reduction cleanup
2009-11-29doc: add NeverBlock to comparison and README
2009-11-29doc: nuke *.rbc files when generating docs
RDoc likes them for some reason
2009-11-29preliminary NeverBlock support with EventMachine
2009-11-29Allow options to be added to "use"
Eventually we hope to be able to accept arguments like the way Rack handlers do it: use :Foo, :bool1, :bool2, :option => value
2009-11-29refactor threaded models to use blocking accept() if possible
It's a tad faster for non-keepalive connections and should do better on large SMP machines with many workers AND threads. That means the ActorSpawn model in Rubinius is nothing more than ThreadSpawn underneath (for now).
2009-11-29doc: add ActorSpawn to comparison
2009-11-29ActorSpawn sets rack.multithreaded :(
I so wish it used Fibers/green-threads underneath instead.
2009-11-28GNUmakefile: capitalize externally settable variables
2009-11-28tests: more stringent error checking in logs
If we logged "ERROR", we should know about it.
2009-11-28tests: +x broken app test, fix config file setup
2009-11-28always set FD_CLOEXEC if available
Some people fork processes, so it avoid hanging a connection open because of that...
2009-11-28common Rainbows.accept method
2009-11-28rev/core: fix stupid syntax error :<
Broken in 145185b76dafebe5574e6a3eefd3276555c72016
2009-11-28actor_spawn: basically ThreadSpawn with Actors for now...
Rubinius Actor specs seem a bit lacking at the moment. If we find time, we'll fix them, otherwise we'll let somebody else do it.
2009-11-27preliminary ActorSpawn model for Rubinius
It seems to basically work, this is based heavily on the Revactor one...
2009-11-27doc/comparison: apparently Rubinius doesn't do Fibers
Guess I'll have to make the Revactor model work with that.
2009-11-27thread_spawn: fix up stupidly complicated loop
Not sure what drugs the person that wrote it was on at the time.
2009-11-27rev/core: set IO::Buffer.default_node_size if possible
It can noticeably improve performance if available. ref: http://rubyforge.org/pipermail/rev-talk/2009-November/000116.html