From 1079dfa30108466d413f30526eda468cdf0ae985 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 25 Nov 2009 22:30:35 -0800 Subject: Add Summary document This will hopefully make many things clearer about the project. --- Documentation/GNUmakefile | 5 +- Documentation/comparison.css | 6 ++ Documentation/comparison.haml | 184 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 194 insertions(+), 1 deletion(-) create mode 100644 Documentation/comparison.css create mode 100644 Documentation/comparison.haml (limited to 'Documentation') diff --git a/Documentation/GNUmakefile b/Documentation/GNUmakefile index e33c87f..19de585 100644 --- a/Documentation/GNUmakefile +++ b/Documentation/GNUmakefile @@ -26,5 +26,8 @@ install-man: man %.1.html: %.1.txt $(pandoc_html) < $< > $@+ && mv $@+ $@ +comparison.html: comparison.haml + haml -t ugly < $< > $@+ && mv $@+ $@ + clean:: - $(RM) $(man1) $(html1) + $(RM) $(man1) $(html1) comparison.html diff --git a/Documentation/comparison.css b/Documentation/comparison.css new file mode 100644 index 0000000..82a6012 --- /dev/null +++ b/Documentation/comparison.css @@ -0,0 +1,6 @@ +/* help to make this look nice would be greatly appreciated */ +.comparison { + margin: 1em; + border: 1px solid; + width: 100%; +} diff --git a/Documentation/comparison.haml b/Documentation/comparison.haml new file mode 100644 index 0000000..a12f13d --- /dev/null +++ b/Documentation/comparison.haml @@ -0,0 +1,184 @@ +%h2 core features and requirements +%br +%table.comp + %tr.comp_header + %th.mod module + %th.tee rack.input streaming + %th.r18 Ruby 1.8 + %th.r19 Ruby 1.9 + %th.rbx Rubinius + %th.slow slow clients + %th.lib lib compat + %th.thr thread-safety + %th.reent reentrancy + %tr.comp_base + %td.mod Unicorn/Base + %td.tee Yes + %td.r18 Yes + %td.r19 Yes + %td.rbx Yes + %td.slow No + %td.lib Most + %td.thr No + %td.reent No + %tr.comp_row + %td.mod Revactor + %td.tee Yes + %td.r18 No + %td.r19 Yes + %td.rbx No + %td.slow Yes + %td.lib Meh + %td.thr No + %td.reent Yes + %tr.comp_row + %td.mod ThreadPool + %td.tee Yes + %td.r18 Yes + %td.r19 Yes + %td.rbx Yes + %td.slow OK + %td.lib Good + %td.thr Yes + %td.reent No + %tr.comp_row + %td.mod Rev + %td.tee No + %td.r18 Yes + %td.r19 Yes + %td.rbx No + %td.slow Yes + %td.lib Good + %td.thr No + %td.reent No + %tr.comp_row + %td.mod ThreadSpawn + %td.tee Yes + %td.r18 Yes + %td.r19 Yes + %td.rbx Yes + %td.slow OK + %td.lib Good + %td.thr Yes + %td.reent No + %tr.comp_row + %td.mod EventMachine + %td.tee No + %td.r18 Yes + %td.r19 Yes + %td.rbx No + %td.slow Yes + %td.lib Good + %td.thr No + %td.reent No + %tr.comp_row + %td.mod RevThreadSpawn + %td.tee No + %td.r18 Slow + %td.r19 Yes + %td.rbx No + %td.slow Yes + %td.lib Good + %td.thr Yes + %td.reent No + %tr.comp_row + %td.mod FiberSpawn + %td.tee Yes + %td.r18 No + %td.r19 Yes + %td.rbx Yes + %td.slow Yes + %td.lib Meh + %td.thr No + %td.reent Yes + %tr.comp_row + %td.mod FiberPool + %td.tee Yes + %td.r18 No + %td.r19 Yes + %td.rbx Yes + %td.slow Yes + %td.lib Meh + %td.thr No + %td.reent Yes + +%ul + %li waiting on Rubinius for better signal handling + %li + rack.input streaming is what makes + %a(href="http://upr.bogomips.org/") upload progress, + BOSH, and Web Sockets possible + +%h2 middlewares and frameworks +%br + +%table.comp + %tr.comp_header + %th.mod model + %th.devfd + %a(href="Rainbows/DevFdResponse.html") DevFdResponse + %th.app_pool + %a(href="Rainbows/AppPool.html") AppPool + %th.lock + %a(href="http://rack.rubyforge.org/doc/Rack/Lock.html") Rack::Lock + %th.async async + %tr.comp_row + %td.mod Unicorn/Base + %td.devfd no-op + %td.app_pool no-op + %td.lock no-op + %td.async lots of RAM :P + %tr.comp_row + %td.mod Revactor + %td.devfd no-op + %td.app_pool Yes + %td.lock No! + %td.async Revactor itself + %tr.comp_row + %td.mod ThreadPool + %td.devfd no-op + %td.app_pool Yes + %td.lock Yes + %td.async standard Ruby + %tr.comp_row + %td.mod Rev + %td.devfd Yes + %td.app_pool no-op + %td.lock no-op + %td.async DevFdResponse + %tr.comp_row + %td.mod ThreadSpawn + %td.devfd no-op + %td.app_pool Yes + %td.lock Yes + %td.async standard Ruby + %tr.comp_row + %td.mod EventMachine + %td.devfd Yes + %td.app_pool no-op + %td.lock no-op + %td.async async_sinatra + %tr.comp_row + %td.mod RevThreadSpawn + %td.devfd Yes + %td.app_pool Yes + %td.lock Dumb + %td.async standard Ruby + %tr.comp_row + %td.mod FiberSpawn + %td.devfd Yes + %td.app_pool Yes + %td.lock No! + %td.async Rainbows::Fiber{::IO,.sleep} + %tr.comp_row + %td.mod FiberPool + %td.devfd Yes + %td.app_pool Yes + %td.lock No! + %td.async Rainbows::Fiber{::IO,.sleep} + +%ul + %li "No!" means it's fundamentally incompatible + %li + Everything that's DevFdResponse-compatible can use it for passing + async responses through -- cgit v1.2.3-24-ge0c7