about summary refs log tree commit homepage
DateCommit message (Collapse)
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
2009-11-27README: switch rubyforge.org git links to repo.or.cz
We've long had the repo.or.cz mirrors and RubyForge may not support git any longer.
2009-11-27More documentation tweaks for the release
2009-11-27rev_thread_spawn: more 1.8 notes
2009-11-27local.mk.sample: respecting RUBYLIB breaks "full-test"
Better just to edit my private local.mk when I'm testing with alternate versions of libraries...
2009-11-27tests: fix bugs with dash in GNUmakefile
One bad thing to defaulting to ksh93 for my tests during development, small cleanups while we're at it, too for extra checks
2009-11-27tests: no need to limit t9000 in multiple places
The test itself already exits immediately if it's running an incompatible concurrency model, so avoid having redundant logic in the GNUmakefile.
2009-11-26RevThreadSpawn: hope for 1.8 performance
Patches submitted to rev-talk, awaiting feedback and hopefully a new release.
2009-11-26tests: enable AppPool test for Revactor and Fiber*
2009-11-26Fiber::Queue documentation
While we're at it, ensure our encoding is sane
2009-11-26split Fiber::Base into its own file
While Revactor uses Fiber::Queue in AppPool, we don't want/need to expose the rest of our Fiber stuff to it since it can lead to lost Fibers if misused. This includes the Rainbows::Fiber.sleep method which only works inside Fiber{Spawn,Pool} models and the Rainbows::Fiber::IO wrapper class.
2009-11-26local.mk.sample: allow RUBYLIB + RSYNC vars in CLI
2009-11-26tests: "models" variable may be set in gmake CLI
This lets us make further tests for compatibility without dirtying our working tree.
2009-11-26comparison: more updates notes
2009-11-26README: formatting and updates
2009-11-26README: "an HTTP", not "a HTTP" (I think...)
We need a professional editor.
2009-11-26documentation publishing updates
Don't show ChangeLog for unreleased things
2009-11-26TODO: add NeverBlock
Not sure if the project is still alive, but it looks pretty cool.
2009-11-26cleanup and refactor error handling
Make sure app errors get logged correctly, and we no longer return a 500 response when a client EOFs the write end (but not the read end) of a connection.
2009-11-26Fiber*: cleanup scheduling, fix keepalive
Both FiberSpawn and FiberPool share similar main loops, the only difference being the handling of connection acceptance. So move the scheduler into it's own function for consistency. We'll also correctly implement keepalive timeout so clients get disconnected at the right time.
2009-11-25Add Summary document
This will hopefully make many things clearer about the project.
2009-11-25AppPool middleware now compatible with Fibers
This enables the safe use of Rainbows::AppPool with all concurrency models, not just threaded ones. AppPool is now effective with *all* Fiber-based concurrency models including Revactor (and of course the new Fiber{Pool,Spawn} ones).
2009-11-25Fiber*: add Rainbows::Fiber.sleep method
It works exactly like Actor.sleep and similar to Kernel.sleep (no way to sleep indefinitely), but is compatible with the IO.select-based Fiber scheduler we run. This method only works within the context of a Rainbows! application dispatch.
2009-11-25Documentation updates for new concurrency models
2009-11-25add FiberPool concurrency model
This is another Fiber-based concurrency model that can exploit a streaming "rack.input" for clients. Spawning Fibers seems pretty fast, but maybe there are apps that will benefit from this.
2009-11-25Gemcutter prep, fix RubyGems capitalization
2009-11-25add FiberSpawn concurrency model
This one seems a easy to get working and supports everything we need to support from the server perspective. Apps will need modified drivers, but it doesn't seem too hard to add more/better support for wrapping IO objects with Fiber::IO.
2009-11-24Rev*: safer client accounting
Due to the addition of keepalive_timeouts, it's safer to pay a performance penalty and use a hash here instead.