rainbows 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +1 -0
- data/.gitignore +1 -0
- data/.manifest +46 -18
- data/.wrongdoc.yml +8 -0
- data/ChangeLog +849 -374
- data/Documentation/comparison.haml +26 -21
- data/FAQ +6 -0
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +23 -65
- data/LATEST +27 -0
- data/NEWS +53 -26
- data/README +7 -7
- data/Rakefile +1 -98
- data/Summary +0 -7
- data/TODO +2 -2
- data/lib/rainbows/app_pool.rb +2 -1
- data/lib/rainbows/base.rb +1 -0
- data/lib/rainbows/configurator.rb +9 -0
- data/lib/rainbows/const.rb +1 -1
- data/lib/rainbows/coolio/client.rb +191 -0
- data/lib/rainbows/coolio/core.rb +25 -0
- data/lib/rainbows/{rev → coolio}/deferred_chunk_response.rb +3 -2
- data/lib/rainbows/{rev → coolio}/deferred_response.rb +3 -3
- data/lib/rainbows/coolio/heartbeat.rb +20 -0
- data/lib/rainbows/{rev → coolio}/master.rb +2 -3
- data/lib/rainbows/{rev → coolio}/sendfile.rb +1 -1
- data/lib/rainbows/coolio/server.rb +11 -0
- data/lib/rainbows/coolio/thread_client.rb +36 -0
- data/lib/rainbows/coolio.rb +45 -0
- data/lib/rainbows/coolio_fiber_spawn.rb +26 -0
- data/lib/rainbows/coolio_support.rb +9 -0
- data/lib/rainbows/coolio_thread_pool/client.rb +8 -0
- data/lib/rainbows/coolio_thread_pool/watcher.rb +14 -0
- data/lib/rainbows/coolio_thread_pool.rb +57 -0
- data/lib/rainbows/coolio_thread_spawn/client.rb +8 -0
- data/lib/rainbows/coolio_thread_spawn.rb +27 -0
- data/lib/rainbows/dev_fd_response.rb +6 -2
- data/lib/rainbows/ev_core/cap_input.rb +3 -2
- data/lib/rainbows/ev_core.rb +13 -3
- data/lib/rainbows/event_machine/client.rb +124 -0
- data/lib/rainbows/event_machine/response_pipe.rb +1 -2
- data/lib/rainbows/event_machine/server.rb +15 -0
- data/lib/rainbows/event_machine.rb +13 -137
- data/lib/rainbows/fiber/base.rb +6 -7
- data/lib/rainbows/fiber/body.rb +4 -2
- data/lib/rainbows/fiber/coolio/heartbeat.rb +15 -0
- data/lib/rainbows/fiber/{rev → coolio}/methods.rb +4 -5
- data/lib/rainbows/fiber/{rev → coolio}/server.rb +1 -1
- data/lib/rainbows/fiber/{rev → coolio}/sleeper.rb +2 -2
- data/lib/rainbows/fiber/coolio.rb +12 -0
- data/lib/rainbows/fiber/io/methods.rb +6 -0
- data/lib/rainbows/fiber/io.rb +8 -10
- data/lib/rainbows/fiber/queue.rb +24 -30
- data/lib/rainbows/fiber.rb +7 -4
- data/lib/rainbows/fiber_pool.rb +1 -1
- data/lib/rainbows/http_server.rb +9 -2
- data/lib/rainbows/max_body.rb +3 -1
- data/lib/rainbows/never_block/core.rb +15 -0
- data/lib/rainbows/never_block/event_machine.rb +8 -3
- data/lib/rainbows/never_block.rb +37 -70
- data/lib/rainbows/process_client.rb +3 -6
- data/lib/rainbows/rack_input.rb +17 -0
- data/lib/rainbows/response/body.rb +18 -19
- data/lib/rainbows/response.rb +1 -1
- data/lib/rainbows/rev.rb +21 -43
- data/lib/rainbows/rev_fiber_spawn.rb +4 -19
- data/lib/rainbows/rev_thread_pool.rb +21 -75
- data/lib/rainbows/rev_thread_spawn.rb +18 -36
- data/lib/rainbows/revactor/body.rb +4 -1
- data/lib/rainbows/revactor/tee_socket.rb +44 -0
- data/lib/rainbows/revactor.rb +13 -48
- data/lib/rainbows/socket_proxy.rb +24 -0
- data/lib/rainbows/sync_close.rb +37 -0
- data/lib/rainbows/thread_pool.rb +66 -70
- data/lib/rainbows/thread_spawn.rb +40 -50
- data/lib/rainbows/thread_timeout.rb +33 -27
- data/lib/rainbows/timed_read.rb +5 -1
- data/lib/rainbows/worker_yield.rb +16 -0
- data/lib/rainbows/writer_thread_pool/client.rb +19 -0
- data/lib/rainbows/writer_thread_pool.rb +60 -91
- data/lib/rainbows/writer_thread_spawn/client.rb +69 -0
- data/lib/rainbows/writer_thread_spawn.rb +37 -117
- data/lib/rainbows.rb +12 -4
- data/rainbows.gemspec +15 -19
- data/t/GNUmakefile +4 -4
- data/t/close-has-env.ru +65 -0
- data/t/simple-http_Coolio.ru +9 -0
- data/t/simple-http_CoolioFiberSpawn.ru +10 -0
- data/t/simple-http_CoolioThreadPool.ru +9 -0
- data/t/simple-http_CoolioThreadSpawn.ru +9 -0
- data/t/t0004-heartbeat-timeout.sh +2 -2
- data/t/t0007-worker-follows-master-to-death.sh +1 -1
- data/t/t0015-working_directory.sh +7 -1
- data/t/t0017-keepalive-timeout-zero.sh +1 -1
- data/t/t0019-keepalive-cpu-usage.sh +62 -0
- data/t/t0040-keepalive_requests-setting.sh +51 -0
- data/t/t0050-response-body-close-has-env.sh +109 -0
- data/t/t0102-rack-input-short.sh +6 -6
- data/t/t0106-rack-input-keepalive.sh +48 -2
- data/t/t0113-rewindable-input-false.sh +28 -0
- data/t/t0113.ru +12 -0
- data/t/t0114-rewindable-input-true.sh +28 -0
- data/t/t0114.ru +12 -0
- data/t/t9100-thread-timeout.sh +24 -2
- data/t/t9101-thread-timeout-threshold.sh +6 -13
- data/t/test-lib.sh +2 -1
- data/t/test_isolate.rb +9 -4
- data/t/times.ru +6 -0
- metadata +109 -42
- data/GIT-VERSION-FILE +0 -1
- data/lib/rainbows/fiber/rev/heartbeat.rb +0 -8
- data/lib/rainbows/fiber/rev/kato.rb +0 -22
- data/lib/rainbows/fiber/rev.rb +0 -13
- data/lib/rainbows/rev/client.rb +0 -194
- data/lib/rainbows/rev/core.rb +0 -41
- data/lib/rainbows/rev/heartbeat.rb +0 -23
- data/lib/rainbows/rev/thread.rb +0 -46
- 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
|
|
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
|
|
59
|
+
%td.mod CoolioThreadSpawn
|
|
55
60
|
%td.tee No
|
|
56
|
-
%td.r18
|
|
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
|
|
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
|
|
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
|
-
|
|
123
|
+
Cool.io should also work with Rubinius (though we haven't had time to test).
|
|
119
124
|
%li
|
|
120
|
-
|
|
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://
|
|
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
|
|
165
|
+
%td.mod Coolio
|
|
161
166
|
%td.slowio
|
|
162
|
-
%a(href="http://
|
|
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
|
|
182
|
+
%td.mod CoolioThreadSpawn
|
|
178
183
|
%td.slowio
|
|
179
184
|
thread-safe Ruby,
|
|
180
|
-
%a(href="http://
|
|
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
|
|
213
|
+
%td.mod CoolioThreadPool
|
|
209
214
|
%td.slowio
|
|
210
215
|
thread-safe Ruby,
|
|
211
|
-
%a(href="http://
|
|
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
|
|
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
|
|
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
|
|
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
|
|
346
|
+
%td.mod CoolioThreadPool
|
|
342
347
|
%td.devfd Yes
|
|
343
348
|
%td.app_pool Yes
|
|
344
349
|
%td.lock Dumb
|
|
345
|
-
%td.async
|
|
350
|
+
%td.async Coolio, standard Ruby
|
|
346
351
|
%td.ws no
|
|
347
352
|
%tr.comp_row
|
|
348
|
-
%td.mod
|
|
353
|
+
%td.mod CoolioFiberSpawn
|
|
349
354
|
%td.devfd Yes
|
|
350
355
|
%td.app_pool Yes
|
|
351
356
|
%td.lock No!
|
|
352
|
-
%td.async
|
|
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
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
|
|
45
|
+
man html:
|
|
46
|
+
$(MAKE) -C Documentation install-$@
|
|
48
47
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
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
|
-
|
|
62
|
-
$(
|
|
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
|
-
|
|
65
|
+
$(RM) -r doc
|
|
66
|
+
wrongdoc all
|
|
86
67
|
install -m644 COPYING doc/COPYING
|
|
87
|
-
install -m644 $(shell grep '^[A-Z]' .document)
|
|
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
|
-
|
|
112
|
-
publish_doc: NEWS
|
|
73
|
+
publish_doc:
|
|
113
74
|
-git set-file-times
|
|
114
|
-
$(
|
|
115
|
-
|
|
116
|
-
|
|
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
|
-
|
|
93
|
+
wrongdoc release_changes > $@+
|
|
136
94
|
$(VISUAL) $@+ && test -s $@+ && mv $@+ $@
|
|
137
95
|
$(release_notes):
|
|
138
|
-
|
|
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
|
|
170
|
-
cd pkg && tar
|
|
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
|
+
=== 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
|
-
===
|
|
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
|
-
===
|
|
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
|
-
* {
|
|
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
|
-
* {
|
|
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
|