rainbows 2.0.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. data/.document +1 -0
  2. data/.gitignore +1 -0
  3. data/.manifest +46 -18
  4. data/.wrongdoc.yml +8 -0
  5. data/ChangeLog +849 -374
  6. data/Documentation/comparison.haml +26 -21
  7. data/FAQ +6 -0
  8. data/GIT-VERSION-GEN +1 -1
  9. data/GNUmakefile +23 -65
  10. data/LATEST +27 -0
  11. data/NEWS +53 -26
  12. data/README +7 -7
  13. data/Rakefile +1 -98
  14. data/Summary +0 -7
  15. data/TODO +2 -2
  16. data/lib/rainbows/app_pool.rb +2 -1
  17. data/lib/rainbows/base.rb +1 -0
  18. data/lib/rainbows/configurator.rb +9 -0
  19. data/lib/rainbows/const.rb +1 -1
  20. data/lib/rainbows/coolio/client.rb +191 -0
  21. data/lib/rainbows/coolio/core.rb +25 -0
  22. data/lib/rainbows/{rev → coolio}/deferred_chunk_response.rb +3 -2
  23. data/lib/rainbows/{rev → coolio}/deferred_response.rb +3 -3
  24. data/lib/rainbows/coolio/heartbeat.rb +20 -0
  25. data/lib/rainbows/{rev → coolio}/master.rb +2 -3
  26. data/lib/rainbows/{rev → coolio}/sendfile.rb +1 -1
  27. data/lib/rainbows/coolio/server.rb +11 -0
  28. data/lib/rainbows/coolio/thread_client.rb +36 -0
  29. data/lib/rainbows/coolio.rb +45 -0
  30. data/lib/rainbows/coolio_fiber_spawn.rb +26 -0
  31. data/lib/rainbows/coolio_support.rb +9 -0
  32. data/lib/rainbows/coolio_thread_pool/client.rb +8 -0
  33. data/lib/rainbows/coolio_thread_pool/watcher.rb +14 -0
  34. data/lib/rainbows/coolio_thread_pool.rb +57 -0
  35. data/lib/rainbows/coolio_thread_spawn/client.rb +8 -0
  36. data/lib/rainbows/coolio_thread_spawn.rb +27 -0
  37. data/lib/rainbows/dev_fd_response.rb +6 -2
  38. data/lib/rainbows/ev_core/cap_input.rb +3 -2
  39. data/lib/rainbows/ev_core.rb +13 -3
  40. data/lib/rainbows/event_machine/client.rb +124 -0
  41. data/lib/rainbows/event_machine/response_pipe.rb +1 -2
  42. data/lib/rainbows/event_machine/server.rb +15 -0
  43. data/lib/rainbows/event_machine.rb +13 -137
  44. data/lib/rainbows/fiber/base.rb +6 -7
  45. data/lib/rainbows/fiber/body.rb +4 -2
  46. data/lib/rainbows/fiber/coolio/heartbeat.rb +15 -0
  47. data/lib/rainbows/fiber/{rev → coolio}/methods.rb +4 -5
  48. data/lib/rainbows/fiber/{rev → coolio}/server.rb +1 -1
  49. data/lib/rainbows/fiber/{rev → coolio}/sleeper.rb +2 -2
  50. data/lib/rainbows/fiber/coolio.rb +12 -0
  51. data/lib/rainbows/fiber/io/methods.rb +6 -0
  52. data/lib/rainbows/fiber/io.rb +8 -10
  53. data/lib/rainbows/fiber/queue.rb +24 -30
  54. data/lib/rainbows/fiber.rb +7 -4
  55. data/lib/rainbows/fiber_pool.rb +1 -1
  56. data/lib/rainbows/http_server.rb +9 -2
  57. data/lib/rainbows/max_body.rb +3 -1
  58. data/lib/rainbows/never_block/core.rb +15 -0
  59. data/lib/rainbows/never_block/event_machine.rb +8 -3
  60. data/lib/rainbows/never_block.rb +37 -70
  61. data/lib/rainbows/process_client.rb +3 -6
  62. data/lib/rainbows/rack_input.rb +17 -0
  63. data/lib/rainbows/response/body.rb +18 -19
  64. data/lib/rainbows/response.rb +1 -1
  65. data/lib/rainbows/rev.rb +21 -43
  66. data/lib/rainbows/rev_fiber_spawn.rb +4 -19
  67. data/lib/rainbows/rev_thread_pool.rb +21 -75
  68. data/lib/rainbows/rev_thread_spawn.rb +18 -36
  69. data/lib/rainbows/revactor/body.rb +4 -1
  70. data/lib/rainbows/revactor/tee_socket.rb +44 -0
  71. data/lib/rainbows/revactor.rb +13 -48
  72. data/lib/rainbows/socket_proxy.rb +24 -0
  73. data/lib/rainbows/sync_close.rb +37 -0
  74. data/lib/rainbows/thread_pool.rb +66 -70
  75. data/lib/rainbows/thread_spawn.rb +40 -50
  76. data/lib/rainbows/thread_timeout.rb +33 -27
  77. data/lib/rainbows/timed_read.rb +5 -1
  78. data/lib/rainbows/worker_yield.rb +16 -0
  79. data/lib/rainbows/writer_thread_pool/client.rb +19 -0
  80. data/lib/rainbows/writer_thread_pool.rb +60 -91
  81. data/lib/rainbows/writer_thread_spawn/client.rb +69 -0
  82. data/lib/rainbows/writer_thread_spawn.rb +37 -117
  83. data/lib/rainbows.rb +12 -4
  84. data/rainbows.gemspec +15 -19
  85. data/t/GNUmakefile +4 -4
  86. data/t/close-has-env.ru +65 -0
  87. data/t/simple-http_Coolio.ru +9 -0
  88. data/t/simple-http_CoolioFiberSpawn.ru +10 -0
  89. data/t/simple-http_CoolioThreadPool.ru +9 -0
  90. data/t/simple-http_CoolioThreadSpawn.ru +9 -0
  91. data/t/t0004-heartbeat-timeout.sh +2 -2
  92. data/t/t0007-worker-follows-master-to-death.sh +1 -1
  93. data/t/t0015-working_directory.sh +7 -1
  94. data/t/t0017-keepalive-timeout-zero.sh +1 -1
  95. data/t/t0019-keepalive-cpu-usage.sh +62 -0
  96. data/t/t0040-keepalive_requests-setting.sh +51 -0
  97. data/t/t0050-response-body-close-has-env.sh +109 -0
  98. data/t/t0102-rack-input-short.sh +6 -6
  99. data/t/t0106-rack-input-keepalive.sh +48 -2
  100. data/t/t0113-rewindable-input-false.sh +28 -0
  101. data/t/t0113.ru +12 -0
  102. data/t/t0114-rewindable-input-true.sh +28 -0
  103. data/t/t0114.ru +12 -0
  104. data/t/t9100-thread-timeout.sh +24 -2
  105. data/t/t9101-thread-timeout-threshold.sh +6 -13
  106. data/t/test-lib.sh +2 -1
  107. data/t/test_isolate.rb +9 -4
  108. data/t/times.ru +6 -0
  109. metadata +109 -42
  110. data/GIT-VERSION-FILE +0 -1
  111. data/lib/rainbows/fiber/rev/heartbeat.rb +0 -8
  112. data/lib/rainbows/fiber/rev/kato.rb +0 -22
  113. data/lib/rainbows/fiber/rev.rb +0 -13
  114. data/lib/rainbows/rev/client.rb +0 -194
  115. data/lib/rainbows/rev/core.rb +0 -41
  116. data/lib/rainbows/rev/heartbeat.rb +0 -23
  117. data/lib/rainbows/rev/thread.rb +0 -46
  118. data/man/man1/rainbows.1 +0 -193
@@ -1,3 +1,8 @@
1
+ %h1 Rainbows! at a glance
2
+ %p
3
+ Confused by all the options we give you? So are we! Here's some tables
4
+ to help keep your head straight. Remember, engineering is all about
5
+ trade-offs.
1
6
  %h2 core features and compatibility
2
7
  %br
3
8
  %table.comp
@@ -30,7 +35,7 @@
30
35
  %td.rbx Yes
31
36
  %td.slow OK
32
37
  %tr.comp_row
33
- %td.mod Rev
38
+ %td.mod Coolio
34
39
  %td.tee No
35
40
  %td.r18 Yes
36
41
  %td.r19 Yes
@@ -51,9 +56,9 @@
51
56
  %td.rbx No
52
57
  %td.slow Yes
53
58
  %tr.comp_row
54
- %td.mod RevThreadSpawn
59
+ %td.mod CoolioThreadSpawn
55
60
  %td.tee No
56
- %td.r18 Yes
61
+ %td.r18 No
57
62
  %td.r19 Yes
58
63
  %td.rbx No
59
64
  %td.slow Yes
@@ -86,14 +91,14 @@
86
91
  %td.rbx No
87
92
  %td.slow Yes
88
93
  %tr.comp_row
89
- %td.mod RevThreadPool
94
+ %td.mod CoolioThreadPool
90
95
  %td.tee No
91
96
  %td.r18 Yes
92
97
  %td.r19 No
93
98
  %td.rbx No
94
99
  %td.slow Yes
95
100
  %tr.comp_row
96
- %td.mod RevFiberSpawn
101
+ %td.mod CoolioFiberSpawn
97
102
  %td.tee Yes
98
103
  %td.r18 No
99
104
  %td.r19 Yes
@@ -115,9 +120,9 @@
115
120
  %td.slow no
116
121
  %ul
117
122
  %li
118
- RevThread* + 1.8 requires Rev >= 0.3.2 for reasonable performance
123
+ Cool.io should also work with Rubinius (though we haven't had time to test).
119
124
  %li
120
- waiting on Rubinius for better signal handling
125
+ CoolioThread* and CoolioThread* requires Ruby 1.9 reasonable performance
121
126
  %li
122
127
  rack.input streaming is what makes
123
128
  %a(href="http://upr.bogomips.org/") upload progress,
@@ -144,7 +149,7 @@
144
149
  %tr.comp_row
145
150
  %td.mod Revactor
146
151
  %td.slowio
147
- %a(href="http://rev.rubyforge.org/")Rev,
152
+ %a(href="http://coolio.github.com/")Coolio,
148
153
  %a(href="http://revactor.org/")Revactor,
149
154
  %b
150
155
  not
@@ -157,9 +162,9 @@
157
162
  %td.thr Yes
158
163
  %td.reent No
159
164
  %tr.comp_row
160
- %td.mod Rev
165
+ %td.mod Coolio
161
166
  %td.slowio
162
- %a(href="http://rev.rubyforge.org/") Rev
167
+ %a(href="http://coolio.github.com/") Coolio
163
168
  %td.thr No
164
169
  %td.reent No
165
170
  %tr.comp_row
@@ -174,10 +179,10 @@
174
179
  %td.thr No
175
180
  %td.reent No
176
181
  %tr.comp_row
177
- %td.mod RevThreadSpawn
182
+ %td.mod CoolioThreadSpawn
178
183
  %td.slowio
179
184
  thread-safe Ruby,
180
- %a(href="http://rev.rubyforge.org/") Rev
185
+ %a(href="http://coolio.github.com/") Coolio
181
186
  %td.thr Yes
182
187
  %td.reent No
183
188
  %tr.comp_row
@@ -205,14 +210,14 @@
205
210
  %td.thr No
206
211
  %td.reent Yes
207
212
  %tr.comp_row
208
- %td.mod RevThreadPool
213
+ %td.mod CoolioThreadPool
209
214
  %td.slowio
210
215
  thread-safe Ruby,
211
- %a(href="http://rev.rubyforge.org/") Rev
216
+ %a(href="http://coolio.github.com/") Coolio
212
217
  %td.thr Yes
213
218
  %td.reent No
214
219
  %tr.comp_row
215
- %td.mod RevFiberSpawn
220
+ %td.mod CoolioFiberSpawn
216
221
  %td.slowio
217
222
  %a(href="Rainbows/Fiber/IO.html") Rainbows::Fiber::IO
218
223
  %td.thr No
@@ -282,7 +287,7 @@
282
287
  %td.async standard Ruby
283
288
  %td.ws Sunshowers
284
289
  %tr.comp_row
285
- %td.mod Rev
290
+ %td.mod Coolio
286
291
  %td.devfd Yes
287
292
  %td.app_pool no-op
288
293
  %td.lock no-op
@@ -303,7 +308,7 @@
303
308
  %td.async async_sinatra, Cramp, rack-fiber_pool
304
309
  %td.ws no
305
310
  %tr.comp_row
306
- %td.mod RevThreadSpawn
311
+ %td.mod CoolioThreadSpawn
307
312
  %td.devfd Yes
308
313
  %td.app_pool Yes
309
314
  %td.lock Dumb
@@ -338,18 +343,18 @@
338
343
  %td.async NeverBlock, async_sinatra
339
344
  %td.ws no
340
345
  %tr.comp_row
341
- %td.mod RevThreadPool
346
+ %td.mod CoolioThreadPool
342
347
  %td.devfd Yes
343
348
  %td.app_pool Yes
344
349
  %td.lock Dumb
345
- %td.async Rev, standard Ruby
350
+ %td.async Coolio, standard Ruby
346
351
  %td.ws no
347
352
  %tr.comp_row
348
- %td.mod RevFiberSpawn
353
+ %td.mod CoolioFiberSpawn
349
354
  %td.devfd Yes
350
355
  %td.app_pool Yes
351
356
  %td.lock No!
352
- %td.async Rev, Rainbows::Fiber::IO, Rainbows.sleep
357
+ %td.async Coolio, Rainbows::Fiber::IO, Rainbows.sleep
353
358
  %tr.comp_row
354
359
  %td.mod WriterThreadPool
355
360
  %td.devfd Yes
data/FAQ CHANGED
@@ -98,3 +98,9 @@ For older versions of Rails, the following config.ru will work:
98
98
 
99
99
  One thing to watch out for is that RAILS_ENV will not be set in the
100
100
  environment for you, thus we set it to match RACK_ENV.
101
+
102
+ === I'm using threads and Rails is misbehaving!
103
+
104
+ If you use any of the threaded concurrency models, you will need to use
105
+ {config.threadsafe!}[http://m.onkey.org/thread-safety-for-your-rails]
106
+ in your config/environments/$RAILS_ENV.rb
data/GIT-VERSION-GEN CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/bin/sh
2
2
 
3
3
  GVF=GIT-VERSION-FILE
4
- DEF_VER=v2.0.1.GIT
4
+ DEF_VER=v2.1.0.GIT
5
5
 
6
6
  LF='
7
7
  '
data/GNUmakefile CHANGED
@@ -4,7 +4,6 @@ MRI = ruby
4
4
  RUBY = ruby
5
5
  RAKE = rake
6
6
  RSYNC = rsync
7
- GIT_URL = git://git.bogomips.org/rainbows.git
8
7
 
9
8
  GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
10
9
  @./GIT-VERSION-GEN
@@ -43,80 +42,39 @@ clean:
43
42
  -$(MAKE) -C Documentation clean
44
43
  $(RM) $(setup_rb_files) $(t_log)
45
44
 
46
- man:
47
- $(MAKE) -C Documentation install-man
45
+ man html:
46
+ $(MAKE) -C Documentation install-$@
48
47
 
49
- pkg_extra := GIT-VERSION-FILE NEWS ChangeLog
50
- manifest: $(pkg_extra) man
51
- $(RM) .manifest
48
+ ChangeLog: GIT-VERSION-FILE .wrongdoc.yml
49
+ wrongdoc prepare
50
+
51
+ manifest: ChangeLog GIT-VERSION-FILE
52
+ $(RM) -f .manifest
52
53
  $(MAKE) .manifest
53
54
 
54
55
  .manifest:
55
- (git ls-files && \
56
- for i in $@ $(pkg_extra) $(man1_paths); \
57
- do echo $$i; done) | LC_ALL=C sort > $@+
56
+ (git ls-files && for i in $@ $(pkg_extra) ; do echo $$i; done) | \
57
+ LC_ALL=C sort > $@+
58
58
  cmp $@+ $@ || mv $@+ $@
59
59
  $(RM) $@+
60
60
 
61
- NEWS: GIT-VERSION-FILE
62
- $(RAKE) -s news_rdoc > $@+
63
- mv $@+ $@
64
-
65
- SINCE = 0.97.0
66
- ChangeLog: LOG_VERSION = \
67
- $(shell git rev-parse -q "$(GIT_VERSION)" >/dev/null 2>&1 && \
68
- echo $(GIT_VERSION) || git describe)
69
- ChangeLog: log_range = v$(SINCE)..$(LOG_VERSION)
70
- ChangeLog: GIT-VERSION-FILE
71
- @echo "ChangeLog from $(GIT_URL) ($(log_range))" > $@+
72
- @echo >> $@+
73
- git log $(log_range) | sed -e 's/^/ /' >> $@+
74
- mv $@+ $@
75
-
76
- news_atom := http://rainbows.rubyforge.org/NEWS.atom.xml
77
- cgit_atom := http://git.bogomips.org/cgit/rainbows.git/atom/?h=master
78
- atom = <link rel="alternate" title="Atom feed" href="$(1)" \
79
- type="application/atom+xml"/>
80
-
81
- # using rdoc 2.5.x+
82
- doc: .document NEWS ChangeLog
61
+ doc: .document man html .wrongdoc.yml
62
+ $(MAKE) -C Documentation comparison.html
83
63
  for i in $(man1_rdoc); do echo > $$i; done
84
64
  find bin lib -type f -name '*.rbc' -exec rm -f '{}' ';'
85
- rdoc -t "$(shell sed -ne '1s/^= //p' README)"
65
+ $(RM) -r doc
66
+ wrongdoc all
86
67
  install -m644 COPYING doc/COPYING
87
- install -m644 $(shell grep '^[A-Z]' .document) doc/
88
- $(MAKE) -C Documentation install-html install-man
68
+ install -m644 $(shell grep '^[A-Z]' .document) doc/
89
69
  install -m644 $(man1_paths) doc/
90
- cd doc && for i in $(base_bins); do \
91
- $(RM) 1.html $${i}.1.html; \
92
- sed -e '/"documentation">/r man1/'$$i'.1.html' \
93
- < $${i}_1.html > tmp && mv tmp $${i}_1.html; \
94
- ln $${i}_1.html $${i}.1.html; \
95
- done
96
- $(MRI) -i -p -e \
97
- '$$_.gsub!("</title>",%q{\&$(call atom,$(cgit_atom))})' \
98
- doc/ChangeLog.html
99
- $(MRI) -i -p -e \
100
- '$$_.gsub!("</title>",%q{\&$(call atom,$(news_atom))})' \
101
- doc/NEWS.html doc/README.html
102
- $(RAKE) -s news_atom > doc/NEWS.atom.xml
103
- cd doc && ln README.html tmp && mv tmp index.html
104
- $(MAKE) -C Documentation comparison.html
105
- $(MRI) -i -p -e \
106
- '$$_.gsub!(/INCLUDE/){File.read("Documentation/comparison.html")}' \
107
- doc/Summary.html
108
70
  cat Documentation/comparison.css >> doc/rdoc.css
109
71
  $(RM) $(man1_rdoc)
110
72
 
111
- # publishes docs to http://rainbows.rubyforge.org
112
- publish_doc: NEWS
73
+ publish_doc:
113
74
  -git set-file-times
114
- $(RM) -r doc ChangeLog NEWS
115
- $(MAKE) doc LOG_VERSION=$(shell git tag -l | tail -1)
116
- awk 'BEGIN{RS="=== ";ORS=""}NR==2{sub(/\n$$/,"");print RS""$$0 }' \
117
- < NEWS > doc/LATEST
118
- -find doc/images doc/js -type f | \
119
- TZ=UTC xargs touch -d '1970-01-01 00:00:01' doc/rdoc.css
75
+ $(MAKE) doc
76
+ -find doc/images -type f | \
77
+ TZ=UTC xargs touch -d '1970-01-01 00:00:02' doc/rdoc.css
120
78
  chmod 644 $$(find doc -type f)
121
79
  $(RSYNC) -av doc/ rubyforge.org:/var/www/gforge-projects/rainbows/
122
80
  git ls-files | xargs touch
@@ -132,10 +90,10 @@ release_changes := release_changes-$(VERSION)
132
90
  release-notes: $(release_notes)
133
91
  release-changes: $(release_changes)
134
92
  $(release_changes):
135
- $(RAKE) -s release_changes > $@+
93
+ wrongdoc release_changes > $@+
136
94
  $(VISUAL) $@+ && test -s $@+ && mv $@+ $@
137
95
  $(release_notes):
138
- GIT_URL=$(GIT_URL) $(RAKE) -s release_notes > $@+
96
+ wrongdoc release_notes > $@+
139
97
  $(VISUAL) $@+ && test -s $@+ && mv $@+ $@
140
98
 
141
99
  # ensures we're actually on the tagged $(VERSION), only used for release
@@ -166,8 +124,8 @@ $(pkgtgz): manifest fix-perms
166
124
  @test -n "$(distdir)"
167
125
  $(RM) -r $(distdir)
168
126
  mkdir -p $(distdir)
169
- tar c `cat .manifest` | (cd $(distdir) && tar x)
170
- cd pkg && tar c $(basename $(@F)) | gzip -9 > $(@F)+
127
+ tar cf - $$(cat .manifest) | (cd $(distdir) && tar xf -)
128
+ cd pkg && tar cf - $(basename $(@F)) | gzip -9 > $(@F)+
171
129
  mv $@+ $@
172
130
 
173
131
  package: $(pkgtgz) $(pkggem)
@@ -193,4 +151,4 @@ all:: test
193
151
  test:
194
152
  $(MAKE) -C t
195
153
 
196
- .PHONY: .FORCE-GIT-VERSION-FILE doc manifest man test
154
+ .PHONY: .FORCE-GIT-VERSION-FILE doc manifest man test html
data/LATEST ADDED
@@ -0,0 +1,27 @@
1
+ === Rainbows! 2.1.0 - Cool.io, bugfixes and more! /
2
+
3
+ Cool.io (new version of Rev) support is explicitly added
4
+ (it always worked before). ":Coolio" may be used in place
5
+ of ":Rev" anywhere in your Rainbows! config file.
6
+
7
+ There is a new "keepalive_requests" config directive to limit
8
+ the number of requests a single connection may make (default:
9
+ 100, same as nginx). This may be useful for better
10
+ load-balancing characteristics.
11
+
12
+ The old "Rev" prefixes remain supported as long as Cool.io
13
+ remains compatible with Rev (likely forever).
14
+
15
+ Bug fixes:
16
+
17
+ * Rainbows::ThreadTimeout middleware with multiple clients
18
+ * large, pipelined upload errors with Revactor+Coolio(Rev)
19
+ * high CPU usage for maintaining idle keepalive on *Fiber*
20
+ * needless ThreadPool wakeups
21
+ * request env prematurely cleared keepalive requests,
22
+ breaking some middlewares such as Clogger.
23
+ * "close" not called on body if wrapper and sendfile used together
24
+
25
+ Various code cleanups, and our RDoc website is JavaScript-free.
26
+ See the ChangeLog or git for all changes.
27
+
data/NEWS CHANGED
@@ -1,10 +1,37 @@
1
- === 2.0.1 / 2010-12-03 01:26 UTC
1
+ === Rainbows! 2.1.0 - Cool.io, bugfixes and more! / 2010-12-29 02:18 UTC
2
+
3
+ Cool.io (new version of Rev) support is explicitly added
4
+ (it always worked before). ":Coolio" may be used in place
5
+ of ":Rev" anywhere in your Rainbows! config file.
6
+
7
+ There is a new "keepalive_requests" config directive to limit
8
+ the number of requests a single connection may make (default:
9
+ 100, same as nginx). This may be useful for better
10
+ load-balancing characteristics.
11
+
12
+ The old "Rev" prefixes remain supported as long as Cool.io
13
+ remains compatible with Rev (likely forever).
14
+
15
+ Bug fixes:
16
+
17
+ * Rainbows::ThreadTimeout middleware with multiple clients
18
+ * large, pipelined upload errors with Revactor+Coolio(Rev)
19
+ * high CPU usage for maintaining idle keepalive on *Fiber*
20
+ * needless ThreadPool wakeups
21
+ * request env prematurely cleared keepalive requests,
22
+ breaking some middlewares such as Clogger.
23
+ * "close" not called on body if wrapper and sendfile used together
24
+
25
+ Various code cleanups, and our RDoc website is JavaScript-free.
26
+ See the ChangeLog or git for all changes.
27
+
28
+ === Rainbows! 2.0.1 - upload pipelining fixes / 2010-12-03 01:26 UTC
2
29
 
3
30
  For HTTP clients living on the edge and pipelining uploads, we
4
31
  now fully support pipelined requests (as long as the application
5
32
  consumes each request in its entirety).
6
33
 
7
- === 2.0.0 / 2010-11-20 03:10 UTC
34
+ === Rainbows! 2.0.0 - minority rules! / 2010-11-20 03:10 UTC
8
35
 
9
36
  This release is targeted at the minority of web applications
10
37
  that deal heavily with uploads.
@@ -19,7 +46,7 @@
19
46
 
20
47
  http://rainbows.rubyforge.org/Rainbows/MaxBody.html
21
48
 
22
- === 1.0.0 / 2010-10-28 09:01 UTC
49
+ === Rainbows! 1.0.0 - internal cleanups / 2010-10-28 09:01 UTC
23
50
 
24
51
  This release is merely a milestone in our evolving internal API.
25
52
  Use of kgio may result in performance improvements under Ruby
@@ -29,7 +56,7 @@
29
56
  unset settings. A similar fix is included in Unicorn 2.0.0
30
57
  as well.
31
58
 
32
- === 1.0.0pre1 / 2010-10-26 21:33 UTC
59
+ === Rainbows! 1.0.0pre1 - kinder, gentler I/O / 2010-10-26 21:33 UTC
33
60
 
34
61
  Mostly internal changes for kgio (and Unicorn) integration.
35
62
  There should be no (supported) user-visible changes from
@@ -37,7 +64,7 @@
37
64
  concurrency models that use non-blocking I/O internally,
38
65
  especially under Ruby 1.9.2
39
66
 
40
- === 0.97.0 / 2010-08-28 19:46 UTC
67
+ === Rainbows! 0.97.0 / 2010-08-28 19:46 UTC
41
68
 
42
69
  We now depend on Unicorn 1.1.3 to avoid race conditions during
43
70
  log cycling. This bug mainly affected folks using Rainbows! as
@@ -55,7 +82,7 @@
55
82
 
56
83
  See the commits in git for all the details.
57
84
 
58
- === 0.96.0 / 2010-08-03 09:04 UTC
85
+ === Rainbows! 0.96.0 - range support / 2010-08-03 09:04 UTC
59
86
 
60
87
  For concurrency models that use sendfile or IO.copy_stream, HTTP
61
88
  Range requests are honored when serving static files. Due to
@@ -99,14 +126,14 @@
99
126
 
100
127
  See the full git logs for a list of all changes.
101
128
 
102
- === 0.95.1 / 2010-07-11 02:53 UTC
129
+ === Rainbows! v0.95.1 - depend on newer Unicorn / 2010-07-11 02:53 UTC
103
130
 
104
131
  Eric Wong (3):
105
132
  test_isolate: document why we test with Rack 1.1.0
106
133
  doc: make RDoc skip private methods
107
134
  bump Unicorn dependency to 1.1.1
108
135
 
109
- === 0.95.0 / 2010-07-10 08:45 UTC
136
+ === Rainbows! 0.95.0 - sendfile() support! / 2010-07-10 08:45 UTC
110
137
 
111
138
  In addition to the 1.9-only IO.copy_stream, the new sendfile
112
139
  1.0.0 gem may optionally be used with most concurrency models
@@ -124,7 +151,7 @@
124
151
  * numerous internal cleanups, small bugfixes and speedups
125
152
  * more concise website oriented at users
126
153
 
127
- === 0.94.0 / 2010-06-04 08:42 UTC
154
+ === Rainbows! 0.94.0 - one eight ate my homework! / 2010-06-04 08:42 UTC
128
155
 
129
156
  This release fixes corrupted large response bodies for Ruby 1.8
130
157
  users with the WriterThreadSpawn and WriterThreadPool models
@@ -145,7 +172,7 @@
145
172
  completely forgot to tell RDoc about it. Personally, this
146
173
  test suite is one of my favorite parts of the project.
147
174
 
148
- === 0.93.0 / 2010-05-29 06:20 UTC
175
+ === Rainbows! 0.93.0 - MOAR!!!1 / 2010-05-29 06:20 UTC
149
176
 
150
177
  In our race to have more concurrency options than real sites
151
178
  using this server, we've added two new and fully supported
@@ -167,7 +194,7 @@
167
194
  applications. But nothing is too dangerous for Rainbows! So
168
195
  here they are now for your experimentation.
169
196
 
170
- === 0.92.0 / 2010-05-04 21:58 UTC
197
+ === Rainbows! 0.92.0 - inching towards the pot of gold / 2010-05-04 21:58 UTC
171
198
 
172
199
  Mostly internal cleanups and small improvements.
173
200
 
@@ -196,7 +223,7 @@
196
223
  [2] - http://eventmachine.rubyforge.org/EventMachine/Connection.html#M000312
197
224
  [3] - http://brainspl.at/articles/2008/04/18/deferred-requests-with-merb-ebb-and-thin
198
225
 
199
- === 0.91.1 / 2010-04-19 21:13 UTC
226
+ === Rainbows! 0.91.1 - use a less-broken parser from Unicorn / 2010-04-19 21:13 UTC
200
227
 
201
228
  This release fixes a denial-of-service vector for deployments
202
229
  exposed directly to untrusted clients.
@@ -223,7 +250,7 @@
223
250
  This bug affects all previously released versions of Rainbows!
224
251
  and Zbatery.
225
252
 
226
- === 0.91.0 / 2010-03-01 10:03 UTC
253
+ === Rainbows! 0.91.0 - Unicorn resync / 2010-03-01 10:03 UTC
227
254
 
228
255
  Unicorn 0.97.0 has a bunch of internal cleanups and small fixes
229
256
  and this is mainly to resync with those changes.
@@ -239,7 +266,7 @@
239
266
  * quiet down ENOTCONN handling, there's nothing we can do about
240
267
  this error so we won't fill our logs with it.
241
268
 
242
- === 0.90.2 / 2010-02-13 09:11 UTC
269
+ === Rainbows! 0.90.2 / 2010-02-13 09:11 UTC
243
270
 
244
271
  This release depends on Unicorn 0.96.1 for an updated
245
272
  Unicorn::HttpParser to avoid leaking memory.
@@ -266,7 +293,7 @@
266
293
  gemspec: bump dependency on Unicorn to avoid leak
267
294
  Rainbows! 0.90.2
268
295
 
269
- === 0.90.1 / 2009-12-30 10:24 UTC
296
+ === Rainbows! 0.90.1 / 2009-12-30 10:24 UTC
270
297
 
271
298
  This release contains minor bugfixes/compatibility improvements
272
299
  for ThreadSpawn, ThreadPool and EventMachine users.
@@ -279,7 +306,7 @@
279
306
  responses, vastly improving compatibility with existing
280
307
  async_sinatra apps.
281
308
 
282
- === 0.90.0 / 2009-12-22 21:54 UTC
309
+ === Rainbows! 0.90.0 / 2009-12-22 21:54 UTC
283
310
 
284
311
  This release should fix ThreadSpawn green thread blocking issues
285
312
  under MRI 1.8. Excessive socket closing is avoided when using
@@ -289,7 +316,7 @@
289
316
  There is a new RevFiberSpawn concurrency model which combines
290
317
  Rev with the traditional FiberSpawn model.
291
318
 
292
- === 0.9.0 / 2009-12-13 22:51 UTC
319
+ === Rainbows! 0.9.0 / 2009-12-13 22:51 UTC
293
320
 
294
321
  This release introduces compatibility with Sunshowers, a library
295
322
  for Web Sockets, see http://rainbows.rubyforge.org/sunshowers
@@ -317,13 +344,13 @@
317
344
  doc/comparison: add Web Sockets to comparison
318
345
  README updates
319
346
 
320
- === 0.8.0 / 2009-12-02 08:55 UTC
347
+ === Rainbows! 0.8.0 / 2009-12-02 08:55 UTC
321
348
 
322
349
  This release fixes a memory leak in our existing Revactor
323
350
  concurrency model. A new RevThreadPool concurrency model has
324
351
  been added as well as small cleaups to exit handling in workers.
325
352
 
326
- === 0.7.0 / 2009-11-30 04:21 UTC
353
+ === Rainbows! 0.7.0 / 2009-11-30 04:21 UTC
327
354
 
328
355
  keepalive_timeout (default: 2 seconds) is now supported to
329
356
  disconnect idle connections. Several new concurrency models
@@ -342,7 +369,7 @@
342
369
  RevThreadSpawn should become usable under MRI 1.8 with the next
343
370
  release of Rev (0.3.2).
344
371
 
345
- === 0.6.0 / 2009-11-15 23:29 UTC
372
+ === Rainbows! 0.6.0 - bugfixes galore / 2009-11-15 23:29 UTC
346
373
 
347
374
  Client shutdowns/errors when streaming "rack.input" into the
348
375
  Rack application are quieter now. Rev and EventMachine workers
@@ -385,7 +412,7 @@
385
412
  Revert "Threaded models have trouble with late loading under 1.9"
386
413
  Rakefile: add raa_update task
387
414
 
388
- === 0.5.0 / 2009-11-05 10:27 UTC
415
+ === Rainbows! 0.5.0 / 2009-11-05 10:27 UTC
389
416
 
390
417
  We depend on the just-released Unicorn 0.94.0 for the fixed
391
418
  trailer handling. As with `unicorn', the `rainbows' executable
@@ -415,7 +442,7 @@
415
442
  ensure RACK_ENV is inherited from the parent env
416
443
  t0100: more precise `expr` usage
417
444
 
418
- === 0.4.0 / 2009-10-27 08:44 UTC
445
+ === Rainbows! 0.4.0 / 2009-10-27 08:44 UTC
419
446
 
420
447
  Basic single-threaded EventMachine support is now included. It
421
448
  supports async_synatra[1] via the "async.callback" Rack
@@ -486,7 +513,7 @@
486
513
  slide since there are already folks depending on
487
514
  the async_sinatra gem
488
515
 
489
- === 0.3.0 / 2009-10-19 18:21 UTC
516
+ === Rainbows! 0.3.0 / 2009-10-19 18:21 UTC
490
517
 
491
518
  The major feature of this release is the new DeferredResponse
492
519
  middleware for the Rev-based concurrency model. It should be
@@ -539,7 +566,7 @@
539
566
  local.mk.sample: sync with BDFL's version
540
567
  Rainbows! 0.3.0
541
568
 
542
- === 0.2.0 / 2009-10-15 08:01 UTC
569
+ === Rainbows! 0.2.0 / 2009-10-15 08:01 UTC
543
570
 
544
571
  This release adds preliminary Rev support for network
545
572
  concurrency under Ruby 1.8 and Ruby 1.9. There are caveats to
@@ -624,7 +651,7 @@
624
651
  README: link to AppPool and extra note about Rev model
625
652
  Rainbows! 0.2.0
626
653
 
627
- === 0.1.1 / 2009-10-06 03:51 UTC
654
+ === Rainbows! v0.1.1 / 2009-10-06 03:51 UTC
628
655
 
629
656
  Fixed Ruby 1.8 support (and all 1.9 systems without Revactor).
630
657
  Process-wide timeout handling for the ThreadSpawn concurrency
@@ -648,7 +675,7 @@
648
675
  thread_spawn: fix timeout leading to worker death
649
676
  less error-prone timeouts for Thread models
650
677
 
651
- === 0.1.0 / 2009-10-05 10:44 UTC
678
+ === Rainbows! 0.1.0 / 2009-10-05 10:44 UTC
652
679
 
653
680
  Initial release
654
681
 
data/README CHANGED
@@ -21,19 +21,19 @@ suck; differently.
21
21
 
22
22
  For network concurrency, models we currently support are:
23
23
 
24
- * {RevFiberSpawn}[link:Rainbows/RevFiberSpawn.html]
25
- * {Revactor}[link:Rainbows/Revactor.html]
26
- * {ThreadPool}[link:Rainbows/ThreadPool.html]
27
- * {Rev}[link:Rainbows/Rev.html]
28
- * {ThreadSpawn}[link:Rainbows/ThreadSpawn.html]
24
+ * {Coolio}[link:Rainbows/Coolio.html]
29
25
  * {EventMachine}[link:Rainbows/EventMachine.html]
30
- * {RevThreadSpawn}[link:Rainbows/RevThreadSpawn.html]
31
26
  * {FiberSpawn}[link:Rainbows/FiberSpawn.html]
32
27
  * {FiberPool}[link:Rainbows/FiberPool.html]
33
28
  * {NeverBlock}[link:Rainbows/NeverBlock.html]
34
- * {RevThreadPool}[link:Rainbows/RevThreadPool.html]
29
+ * {Revactor}[link:Rainbows/Revactor.html]
30
+ * {ThreadPool}[link:Rainbows/ThreadPool.html]
31
+ * {ThreadSpawn}[link:Rainbows/ThreadSpawn.html]
35
32
  * {WriterThreadPool}[link:Rainbows/WriterThreadPool.html]
36
33
  * {WriterThreadSpawn}[link:Rainbows/WriterThreadSpawn.html]
34
+ * {CoolioFiberSpawn}[link:Rainbows/CoolioFiberSpawn.html]
35
+ * {CoolioThreadPool}[link:Rainbows/CoolioThreadPool.html]
36
+ * {CoolioThreadSpawn}[link:Rainbows/CoolioThreadSpawn.html]
37
37
 
38
38
  We have {many more on the way}[link:TODO.html] for handling network
39
39
  concurrency. Additionally, we also use multiple processes (managed by