about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2009-11-25 22:30:35 -0800
committerEric Wong <normalperson@yhbt.net>2009-11-25 22:32:42 -0800
commit1079dfa30108466d413f30526eda468cdf0ae985 (patch)
tree194cdd7a688e3d4db283bad239f4aacf089e445f
parentdd2b2274ef0cd8a121cf7655ade939a1f63bc971 (diff)
downloadrainbows-1079dfa30108466d413f30526eda468cdf0ae985.tar.gz
This will hopefully make many things clearer about the project.
-rw-r--r--.document1
-rw-r--r--Documentation/GNUmakefile5
-rw-r--r--Documentation/comparison.css6
-rw-r--r--Documentation/comparison.haml184
-rw-r--r--GNUmakefile5
-rw-r--r--Summary7
6 files changed, 207 insertions, 1 deletions
diff --git a/.document b/.document
index 047f707..42b3eea 100644
--- a/.document
+++ b/.document
@@ -10,3 +10,4 @@ SIGNALS
 TODO
 TUNING
 vs_Unicorn
+Summary
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
diff --git a/GNUmakefile b/GNUmakefile
index 5092ba8..d2c0c1c 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -96,6 +96,11 @@ doc: .document NEWS ChangeLog
           doc/NEWS.html doc/README.html
         $(rake) -s news_atom > doc/NEWS.atom.xml
         cd doc && ln README.html tmp && mv tmp index.html
+        $(MAKE) -C Documentation comparison.html
+        $(RUBY) -i -p -e \
+          '$$_.gsub!(/INCLUDE/){File.read("Documentation/comparison.html")}' \
+          doc/Summary.html
+        cat Documentation/comparison.css >> doc/rdoc.css
         $(RM) $(man1_bins)
 
 ifneq ($(VERSION),)
diff --git a/Summary b/Summary
new file mode 100644
index 0000000..12d5447
--- /dev/null
+++ b/Summary
@@ -0,0 +1,7 @@
+= \Rainbows! at a glance
+
+Confused by all the options we give you?  So are we!  Here's some tables
+to help keep your head straight.  Remember, engineering is all about
+trade-offs.
+
+INCLUDE