unicorn 5.1.0.pre1 → 6.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.
- checksums.yaml +5 -5
- data/.manifest +11 -5
- data/.olddoc.yml +15 -8
- data/Application_Timeouts +4 -4
- data/CONTRIBUTORS +6 -2
- data/Documentation/.gitignore +1 -3
- data/Documentation/unicorn.1 +222 -0
- data/Documentation/unicorn_rails.1 +207 -0
- data/FAQ +1 -1
- data/GIT-VERSION-FILE +1 -1
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +118 -58
- data/HACKING +2 -10
- data/ISSUES +40 -35
- data/KNOWN_ISSUES +2 -2
- data/LATEST +17 -11
- data/LICENSE +2 -2
- data/Links +13 -11
- data/NEWS +522 -0
- data/README +28 -20
- data/SIGNALS +1 -1
- data/Sandbox +8 -7
- data/TODO +0 -2
- data/TUNING +19 -1
- data/archive/slrnpull.conf +1 -1
- data/bin/unicorn +3 -1
- data/bin/unicorn_rails +2 -2
- data/examples/big_app_gc.rb +1 -1
- data/examples/init.sh +36 -8
- data/examples/logrotate.conf +17 -2
- data/examples/nginx.conf +4 -3
- data/examples/unicorn.conf.minimal.rb +2 -2
- data/examples/unicorn.conf.rb +2 -2
- data/examples/unicorn@.service +14 -0
- data/ext/unicorn_http/c_util.h +5 -13
- data/ext/unicorn_http/common_field_optimization.h +22 -5
- data/ext/unicorn_http/epollexclusive.h +124 -0
- data/ext/unicorn_http/ext_help.h +0 -44
- data/ext/unicorn_http/extconf.rb +32 -6
- data/ext/unicorn_http/global_variables.h +2 -2
- data/ext/unicorn_http/httpdate.c +2 -1
- data/ext/unicorn_http/unicorn_http.c +830 -486
- data/ext/unicorn_http/unicorn_http.rl +63 -18
- data/ext/unicorn_http/unicorn_http_common.rl +1 -1
- data/lib/unicorn/configurator.rb +91 -12
- data/lib/unicorn/http_request.rb +101 -11
- data/lib/unicorn/http_response.rb +3 -2
- data/lib/unicorn/http_server.rb +139 -70
- data/lib/unicorn/launcher.rb +1 -1
- data/lib/unicorn/oob_gc.rb +6 -6
- data/lib/unicorn/select_waiter.rb +6 -0
- data/lib/unicorn/socket_helper.rb +23 -7
- data/lib/unicorn/stream_input.rb +5 -4
- data/lib/unicorn/tee_input.rb +8 -10
- data/lib/unicorn/tmpio.rb +8 -2
- data/lib/unicorn/util.rb +3 -3
- data/lib/unicorn/version.rb +1 -1
- data/lib/unicorn/worker.rb +33 -8
- data/lib/unicorn.rb +25 -10
- data/man/man1/unicorn.1 +120 -116
- data/man/man1/unicorn_rails.1 +106 -106
- data/t/GNUmakefile +3 -72
- data/t/README +4 -4
- data/t/t0011-active-unix-socket.sh +1 -1
- data/t/t0012-reload-empty-config.sh +2 -1
- data/t/t0301-no-default-middleware-ignored-in-config.sh +25 -0
- data/t/t0301.ru +13 -0
- data/t/test-lib.sh +4 -3
- data/test/benchmark/README +14 -4
- data/test/benchmark/ddstream.ru +50 -0
- data/test/benchmark/readinput.ru +40 -0
- data/test/benchmark/uconnect.perl +66 -0
- data/test/exec/test_exec.rb +26 -24
- data/test/test_helper.rb +38 -30
- data/test/unit/test_ccc.rb +91 -0
- data/test/unit/test_droplet.rb +1 -1
- data/test/unit/test_http_parser.rb +34 -18
- data/test/unit/test_http_parser_ng.rb +81 -0
- data/test/unit/test_request.rb +10 -10
- data/test/unit/test_server.rb +86 -12
- data/test/unit/test_signals.rb +8 -8
- data/test/unit/test_socket_helper.rb +13 -9
- data/test/unit/test_upload.rb +9 -14
- data/test/unit/test_util.rb +31 -5
- data/test/unit/test_waiter.rb +34 -0
- data/unicorn.gemspec +16 -17
- metadata +22 -29
- data/Documentation/GNUmakefile +0 -30
- data/Documentation/unicorn.1.txt +0 -187
- data/Documentation/unicorn_rails.1.txt +0 -175
- data/t/hijack.ru +0 -43
- data/t/t0200-rack-hijack.sh +0 -30
data/NEWS
CHANGED
@@ -1,3 +1,525 @@
|
|
1
|
+
=== unicorn 6.0.0 - no more recycling Rack env / 2021-03-17 06:38 UTC
|
2
|
+
|
3
|
+
This release allocates a new Rack `env' hash for every request.
|
4
|
+
This is done for safety with internally-(thread|event)-using Rack
|
5
|
+
apps which expect to use `env' after the normal Rack response is
|
6
|
+
complete, but without relying on rack.hijack[1]. Thanks to
|
7
|
+
Dirkjan Bussink <d.bussink@gmail.com> for the patch:
|
8
|
+
|
9
|
+
https://yhbt.net/unicorn-public/66A68DD8-83EF-4C7A-80E8-3F1F7AB31670@github.com/
|
10
|
+
|
11
|
+
The major version is bumped since:
|
12
|
+
|
13
|
+
1) there are performance regressions for some simple Rack apps
|
14
|
+
|
15
|
+
2) unsupported 3rd-party monkey patches which previously
|
16
|
+
relied on this behavior may be broken (our version of
|
17
|
+
OobGC was).
|
18
|
+
|
19
|
+
The test suite is also more reliable on multi-core systems
|
20
|
+
and Ruby 3.x.
|
21
|
+
|
22
|
+
[1] thread from 2017 around rack.hijack safety:
|
23
|
+
https://yhbt.net/unicorn-public/CAAtdryPG3nLuyo0jxfYW1YHu1Q+ZpkLkd4KdWC8vA46B5haZxw@mail.gmail.com/
|
24
|
+
|
25
|
+
=== unicorn 5.8.0 - rack.after_reply support / 2020-12-24 20:39 UTC
|
26
|
+
|
27
|
+
This release supports env['rack.after_reply'] which allows
|
28
|
+
rack middleware to pass lambdas to be executed after the client
|
29
|
+
connection is closed, matching functionality in Puma.
|
30
|
+
|
31
|
+
Thanks to Blake Williams for this patch:
|
32
|
+
https://yhbt.net/unicorn-public/9873E53C-04D3-4759-9678-CA17DBAEF7B7@blakewilliams.me/
|
33
|
+
|
34
|
+
The top-level of our website is now simpler and no longer
|
35
|
+
redundant with the contents of https://yhbt.net/unicorn/README.html
|
36
|
+
(which contains the old content)
|
37
|
+
|
38
|
+
=== unicorn 5.7.0 / 2020-09-08 08:41 UTC
|
39
|
+
|
40
|
+
Relaxed Ruby version requirements for Ruby 3.0.0dev.
|
41
|
+
Thanks to Jean Boussier for testing
|
42
|
+
|
43
|
+
=== unicorn 5.6.0 - early_hints support / 2020-07-26 01:52 UTC
|
44
|
+
|
45
|
+
This release adds support for the early_hints configurator
|
46
|
+
directive for the 'rack.early_hints' API used by Rails 5.2+.
|
47
|
+
|
48
|
+
Thanks to Jean Boussier for the patch.
|
49
|
+
|
50
|
+
Link: https://yhbt.net/unicorn-public/242F0859-0F83-4F14-A0FF-5BE392BB01E6@shopify.com/
|
51
|
+
|
52
|
+
=== unicorn 5.5.5 / 2020-04-27 02:48 UTC
|
53
|
+
|
54
|
+
This release fixes a bug for users of multiple listeners setups
|
55
|
+
where a busy listen socket could starve other listeners.
|
56
|
+
|
57
|
+
Thanks to Stan Hu for reporting and testing.
|
58
|
+
|
59
|
+
No need to upgrade if you're using a single listen socket.
|
60
|
+
|
61
|
+
Link: https://yhbt.net/unicorn-public/CAMBWrQ=Yh42MPtzJCEO7XryVknDNetRMuA87irWfqVuLdJmiBQ@mail.gmail.com/
|
62
|
+
|
63
|
+
=== unicorn 5.5.4 / 2020-03-24 22:10 UTC
|
64
|
+
|
65
|
+
One change to improve RFC 7230 conformance in the HTTP parser:
|
66
|
+
|
67
|
+
https://yhbt.net/unicorn-public/20200319022823.32472-1-bofh@yhbt.net/
|
68
|
+
|
69
|
+
=== unicorn 5.5.3 / 2020-01-31 20:39 UTC
|
70
|
+
|
71
|
+
Documentation updates to switch bogomips.org to yhbt.net since
|
72
|
+
the .org TLD won't be affordable in the near future.
|
73
|
+
|
74
|
+
There's also a few minor test cleanups.
|
75
|
+
|
76
|
+
=== unicorn 5.5.2 / 2019-12-20 02:08 UTC
|
77
|
+
|
78
|
+
Thanks to Terry Scheingeld, we now workaround a Ruby bug
|
79
|
+
and can now run with taint checks enabled:
|
80
|
+
<https://bugs.ruby-lang.org/issues/14485>
|
81
|
+
<https://bogomips.org/unicorn-public/CABg1sXrvGv9G6CDQxePDUqTe6N-5UpLXm7eG3YQO=dda-Cgg7A@mail.gmail.com/>
|
82
|
+
|
83
|
+
There's also a few documentation updates and building packages
|
84
|
+
from source is easier since pandoc is no longer a dependency
|
85
|
+
(and I can no longer afford the bandwidth or space to install
|
86
|
+
it).
|
87
|
+
|
88
|
+
Eric Wong (7):
|
89
|
+
test/benchmark/ddstream: demo for slowly reading clients
|
90
|
+
test/benchmark/readinput: demo for slowly uploading clients
|
91
|
+
test/benchmark/uconnect: test for accept loop speed
|
92
|
+
examples/unicorn@.service: note the NonBlocking flag
|
93
|
+
Merge remote-tracking branch 'origin/ts/tmpio'
|
94
|
+
test_util: get rid of some unused variables in tests
|
95
|
+
doc: replace pandoc-"Markdown" with real manpages
|
96
|
+
|
97
|
+
Terry Scheingeld (1):
|
98
|
+
tmpio: workaround File#path being tainted on unlink
|
99
|
+
|
100
|
+
=== unicorn 5.5.1 / 2019-05-06 06:40 UTC
|
101
|
+
|
102
|
+
This release fixes and works around issues from v5.5.0 (2019-03-04)
|
103
|
+
|
104
|
+
Stephen Demjanenko worked around a pipe resource accounting bug
|
105
|
+
present in old Linux kernels. Linux 3.x users from 3.16.57 and
|
106
|
+
on are unaffected. Linux 4.x users from 4.9 and on are
|
107
|
+
unaffected.
|
108
|
+
|
109
|
+
https://bogomips.org/unicorn-public/1556922018-24096-1-git-send-email-sdemjanenko@gmail.com/
|
110
|
+
|
111
|
+
Stan Pitucha reported a bug with the old `unicorn_rails' wrapper
|
112
|
+
(intended for Rails 2.x users) which was promptly fixed by
|
113
|
+
Jeremy Evans:
|
114
|
+
|
115
|
+
https://bogomips.org/unicorn-public/CAJ2_uEPifcv_ux4sX=t0C4zHTHGhqVfcLcSB2kTU3Rb_6pQ3nw@mail.gmail.com/
|
116
|
+
|
117
|
+
There's also some doc updates to warn users off `unicorn_rails';
|
118
|
+
the homepage is now energy-efficient for OLEDs and CRTs;
|
119
|
+
and I'm no longer advertising mailing list subscriptions
|
120
|
+
(because I hate centralization and mail archives are the priority)
|
121
|
+
|
122
|
+
Eric Wong (3):
|
123
|
+
doc: unicorn_rails: clarify that it is intended for rails <= 2.x
|
124
|
+
doc: stop advertising mailing list subscription
|
125
|
+
doc: switch homepage to dark216
|
126
|
+
|
127
|
+
Jeremy Evans (1):
|
128
|
+
unicorn_rails: fix regression with Rails >= 3.x in app build
|
129
|
+
|
130
|
+
Stephen Demjanenko (1):
|
131
|
+
Rescue failed pipe resizes due to permissions
|
132
|
+
|
133
|
+
=== unicorn 5.5.0 / 2019-03-04 00:41 UTC
|
134
|
+
|
135
|
+
Mostly identical to 5.5.0.pre1, which I didn't hear any feedback
|
136
|
+
from:
|
137
|
+
|
138
|
+
https://bogomips.org/unicorn-public/20181220222842.GA27382@dcvr/
|
139
|
+
|
140
|
+
> Jeremy Evans contributed the "default_middleware" configuration option:
|
141
|
+
>
|
142
|
+
> https://bogomips.org/unicorn-public/20180913192055.GD48926@jeremyevans.local/
|
143
|
+
>
|
144
|
+
> Jeremy also contributed the ability to use separate groups for the process
|
145
|
+
> and log files:
|
146
|
+
>
|
147
|
+
> https://bogomips.org/unicorn-public/20180913192449.GE48926@jeremyevans.local/
|
148
|
+
>
|
149
|
+
> There's also a couple of uninteresting minor optimizations and
|
150
|
+
> documentation additions.
|
151
|
+
|
152
|
+
Otherwise, there's one extra change to use
|
153
|
+
rb_gc_register_mark_object which is finally a documented part of
|
154
|
+
the Ruby C-API, but has existed since the 1.9 days.
|
155
|
+
|
156
|
+
=== unicorn 5.5.0.pre1 / 2018-12-20 20:11 UTC
|
157
|
+
|
158
|
+
Jeremy Evans contributed the "default_middleware" configuration option:
|
159
|
+
|
160
|
+
https://bogomips.org/unicorn-public/20180913192055.GD48926@jeremyevans.local/
|
161
|
+
|
162
|
+
Jeremy also contributed the ability to use separate groups for the process
|
163
|
+
and log files:
|
164
|
+
|
165
|
+
https://bogomips.org/unicorn-public/20180913192449.GE48926@jeremyevans.local/
|
166
|
+
|
167
|
+
There's also a couple of uninteresting minor optimizations and
|
168
|
+
documentation additions.
|
169
|
+
|
170
|
+
Eric Wong (10):
|
171
|
+
remove random seed reset atfork
|
172
|
+
use IO#wait instead of kgio_wait_readable
|
173
|
+
Merge branch '5.4-stable'
|
174
|
+
shrink pipes under Linux
|
175
|
+
socket_helper: add hint for FreeBSD users for accf_http(9)
|
176
|
+
tests: ensure -N/--no-default-middleware not supported in config.ru
|
177
|
+
doc: update more URLs to use HTTPS and avoid redirects
|
178
|
+
deduplicate strings VM-wide in Ruby 2.5+
|
179
|
+
doc/ISSUES: add links to git clone-able mail archives of our dependencies
|
180
|
+
README: minor updates and additional disclaimer
|
181
|
+
|
182
|
+
Jeremy Evans (2):
|
183
|
+
Make Worker#user support different process primary group and log file group
|
184
|
+
Support default_middleware configuration option
|
185
|
+
|
186
|
+
=== unicorn 5.4.1 / 2018-07-23 17:13 UTC
|
187
|
+
|
188
|
+
This release quiets some warnings for Ruby 2.6 preview releases
|
189
|
+
and enables tests to pass under Ruby 1.9.3. Otherwise, nothing
|
190
|
+
interesting for Ruby 2.0..2.5 users. *YAWN*
|
191
|
+
|
192
|
+
Eric Wong (1):
|
193
|
+
quiet some mismatched indentation warnings
|
194
|
+
|
195
|
+
Fumiaki MATSUSHIMA (1):
|
196
|
+
Use IO#wait instead to fix test for Ruby 1.9
|
197
|
+
|
198
|
+
=== unicorn 5.4.0 / 2017-12-23 23:33 UTC
|
199
|
+
|
200
|
+
Rack hijack support improves as the app code can capture and use
|
201
|
+
the Rack `env' privately without copying it (to avoid clobbering
|
202
|
+
by another client). Thanks to Sam Saffron for reporting and
|
203
|
+
testing this new feature:
|
204
|
+
https://bogomips.org/unicorn-public/CAAtdryPG3nLuyo0jxfYW1YHu1Q+ZpkLkd4KdWC8vA46B5haZxw@mail.gmail.com/T/
|
205
|
+
|
206
|
+
We also now support $DEBUG being set by the Rack app (instead of
|
207
|
+
relying on the "-d" CLI switch). Thanks to James P Robinson Jr
|
208
|
+
for reporting this bug:
|
209
|
+
https://bogomips.org/unicorn-public/D6324CB4.7BC3E%25james.robinson3@cigna.com/T/
|
210
|
+
(Coincidentally, this fix will be irrelevant for Ruby 2.5
|
211
|
+
which requires 'pp' by default)
|
212
|
+
|
213
|
+
There's a few minor test cleanups and documentation updates, too.
|
214
|
+
|
215
|
+
All commits since v5.3.1 (2017-10-03):
|
216
|
+
|
217
|
+
reduce method calls with String#start_with?
|
218
|
+
require 'pp' if $DEBUG is set by Rack app
|
219
|
+
avoid reusing env on hijack
|
220
|
+
tests: cleanup some unused variable warnings
|
221
|
+
ISSUES: add a note about Debian BTS interopability
|
222
|
+
|
223
|
+
Roughly all mailing discussions since the last release:
|
224
|
+
|
225
|
+
https://bogomips.org/unicorn-public/?q=d:20171004..20171223
|
226
|
+
|
227
|
+
=== unicorn 5.3.1 / 2017-10-03 19:03 UTC
|
228
|
+
|
229
|
+
This release fixes an occasional GC problem introduced in v5.3.0
|
230
|
+
to reduce global variable overhead (commit 979ebcf91705709b)
|
231
|
+
|
232
|
+
Thanks to Xuanzhong Wei for the patch which lead to this release:
|
233
|
+
|
234
|
+
https://bogomips.org/unicorn-public/20171003182054.76392-1-azrlew@gmail.com/T/#u
|
235
|
+
https://bogomips.org/unicorn-public/20171003145718.30404-1-azrlew@gmail.com/T/#u
|
236
|
+
|
237
|
+
Xuanzhong Wei (1):
|
238
|
+
fix GC issue on rb_global_variable array
|
239
|
+
|
240
|
+
=== unicorn 5.3.0 / 2017-04-01 08:03 UTC
|
241
|
+
|
242
|
+
A couple of portability fixes from Dylan Thacker-Smith and
|
243
|
+
Jeremy Evans since 5.3.0.pre1 over a week ago, but this looks
|
244
|
+
ready for a stable release, today.
|
245
|
+
|
246
|
+
When I started this over 8 years ago, I wondered if this would
|
247
|
+
just end up being an April Fools' joke. Guess not. I guess I
|
248
|
+
somehow tricked people into using a terribly marketed web server
|
249
|
+
that cannot talk directly to untrusted clients :x Anyways,
|
250
|
+
unicorn won't be able to handle slow clients 8 years from now,
|
251
|
+
either, or 80 years from now. And I vow never to learn to use
|
252
|
+
new-fangled things like epoll, kqueue, or threads :P
|
253
|
+
|
254
|
+
Anyways, this is a largish release with several new features,
|
255
|
+
and no backwards incompatibilities.
|
256
|
+
|
257
|
+
Simon Eskildsen contributed heavily using TCP_INFO under Linux
|
258
|
+
to implement the (now 5 year old) check_client_connection feature:
|
259
|
+
|
260
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-check_client_connection
|
261
|
+
https://bogomips.org/unicorn-public/?q=s:check_client_connection&d:..20170401&x=t
|
262
|
+
|
263
|
+
This also led to FreeBSD and OpenBSD portability improvements in
|
264
|
+
one of our dependencies, raindrops:
|
265
|
+
|
266
|
+
https://bogomips.org/raindrops-public/20170323024829.GA5190@dcvr/T/#u
|
267
|
+
|
268
|
+
Jeremy Evans contributed several new features. First he
|
269
|
+
implemented after_worker_exit to aid debugging:
|
270
|
+
|
271
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_exit
|
272
|
+
https://bogomips.org/unicorn-public/?q=s:after_worker_exit&d:..20170401&x=t#t
|
273
|
+
|
274
|
+
And then security-related features to isolate workers. Workers
|
275
|
+
may now chroot to drop access to the master filesystem, and the
|
276
|
+
new after_worker_ready configuration hook now exists to aid with
|
277
|
+
chroot support in workers:
|
278
|
+
|
279
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_ready
|
280
|
+
https://bogomips.org/unicorn/Unicorn/Worker.html#method-i-user
|
281
|
+
https://bogomips.org/unicorn-public/?q=s:after_worker_ready&d:..20170401&x=t#t
|
282
|
+
https://bogomips.org/unicorn-public/?q=s:chroot&d:..20170401&x=t#t
|
283
|
+
|
284
|
+
Additionally, workers may run in a completely different VM space
|
285
|
+
(nullifying preload_app and any CoW savings) with the new
|
286
|
+
worker_exec option:
|
287
|
+
|
288
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-worker_exec
|
289
|
+
https://bogomips.org/unicorn-public/?q=s:worker_exec&d:..20170401&x=t#t
|
290
|
+
|
291
|
+
There are also several improvements to FreeBSD and OpenBSD
|
292
|
+
support with the addition of these features.
|
293
|
+
|
294
|
+
shortlog of changes since v5.2.0 (2016-10-31):
|
295
|
+
|
296
|
+
Dylan Thacker-Smith (1):
|
297
|
+
Check for Socket::TCP_INFO constant before trying to get TCP_INFO
|
298
|
+
|
299
|
+
Eric Wong (30):
|
300
|
+
drop rb_str_set_len compatibility replacement
|
301
|
+
TUNING: document THP caveat for Linux users
|
302
|
+
tee_input: simplify condition for IO#write
|
303
|
+
remove response_start_sent
|
304
|
+
http_request: freeze constant strings passed IO#write
|
305
|
+
Revert "remove response_start_sent"
|
306
|
+
t/t0012-reload-empty-config.sh: access ivars directly if needed
|
307
|
+
t0011-active-unix-socket.sh: fix race condition in test
|
308
|
+
new test for check_client_connection
|
309
|
+
revert signature change to HttpServer#process_client
|
310
|
+
support "struct tcp_info" on non-Linux and Ruby 2.2+
|
311
|
+
unicorn_http: reduce rb_global_variable calls
|
312
|
+
oob_gc: rely on opt_aref_with optimization on Ruby 2.2+
|
313
|
+
http_request: reduce insn size for check_client_connection
|
314
|
+
freebsd: avoid EINVAL when setting accept filter
|
315
|
+
test-lib: expr(1) portability fix
|
316
|
+
tests: keep disabled tests defined
|
317
|
+
test_exec: SO_KEEPALIVE value only needs to be true
|
318
|
+
doc: fix links to raindrops project
|
319
|
+
http_request: support proposed Raindrops::TCP states on non-Linux
|
320
|
+
ISSUES: expand on mail archive info + subscription disclaimer
|
321
|
+
test_ccc: use a pipe to synchronize test
|
322
|
+
doc: remove private email support address
|
323
|
+
input: update documentation and hide internals.
|
324
|
+
http_server: initialize @pid ivar
|
325
|
+
gemspec: remove olddoc from build dependency
|
326
|
+
doc: add version annotations for new features
|
327
|
+
unicorn 5.3.0.pre1
|
328
|
+
doc: note after_worker_exit is also 5.3.0+
|
329
|
+
test_exec: SO_KEEPALIVE value only needs to be true (take #2)
|
330
|
+
|
331
|
+
Jeremy Evans (7):
|
332
|
+
Add after_worker_exit configuration option
|
333
|
+
Fix code example in after_worker_exit documentation
|
334
|
+
Add support for chroot to Worker#user
|
335
|
+
Add after_worker_ready configuration option
|
336
|
+
Add worker_exec configuration option
|
337
|
+
Don't pass a block for fork when forking workers
|
338
|
+
Check for SocketError on first ccc attempt
|
339
|
+
|
340
|
+
Simon Eskildsen (1):
|
341
|
+
check_client_connection: use tcp state on linux
|
342
|
+
|
343
|
+
=== unicorn 5.3.0.pre1 / 2017-03-24 00:25 UTC
|
344
|
+
|
345
|
+
A largish release with several new features.
|
346
|
+
|
347
|
+
Simon Eskildsen contributed heavily using TCP_INFO under Linux
|
348
|
+
to implement the (now 5 year old) check_client_connection feature:
|
349
|
+
|
350
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-check_client_connection
|
351
|
+
https://bogomips.org/unicorn-public/?q=s:check_client_connection&d:..20170324&x=t
|
352
|
+
|
353
|
+
This also led to FreeBSD and OpenBSD portability improvements in
|
354
|
+
one of our dependencies, raindrops:
|
355
|
+
|
356
|
+
https://bogomips.org/raindrops-public/20170323024829.GA5190@dcvr/T/#u
|
357
|
+
|
358
|
+
Jeremy Evans contributed several new features. First he
|
359
|
+
implemented after_worker_exit to aid debugging:
|
360
|
+
|
361
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_exit
|
362
|
+
https://bogomips.org/unicorn-public/?q=s:after_worker_exit&d:..20170324&x=t#t
|
363
|
+
|
364
|
+
And then security-related features to isolate workers. Workers
|
365
|
+
may now chroot to drop access to the master filesystem, and the
|
366
|
+
new after_worker_ready configuration hook now exists to aid with
|
367
|
+
chroot support in workers:
|
368
|
+
|
369
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_ready
|
370
|
+
https://bogomips.org/unicorn/Unicorn/Worker.html#method-i-user
|
371
|
+
https://bogomips.org/unicorn-public/?q=s:after_worker_ready&d:..20170324&x=t#t
|
372
|
+
https://bogomips.org/unicorn-public/?q=s:chroot&d:..20170324&x=t#t
|
373
|
+
|
374
|
+
Additionally, workers may run in a completely different VM space
|
375
|
+
(nullifying preload_app and any CoW savings) with the new
|
376
|
+
worker_exec option:
|
377
|
+
|
378
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-worker_exec
|
379
|
+
https://bogomips.org/unicorn-public/?q=s:worker_exec&d:..20170324&x=t#t
|
380
|
+
|
381
|
+
There are also several improvements to FreeBSD and OpenBSD
|
382
|
+
support with the addition of these features.
|
383
|
+
|
384
|
+
34 changes since 5.2.0 (2016-10-31):
|
385
|
+
|
386
|
+
Eric Wong (27):
|
387
|
+
drop rb_str_set_len compatibility replacement
|
388
|
+
TUNING: document THP caveat for Linux users
|
389
|
+
tee_input: simplify condition for IO#write
|
390
|
+
remove response_start_sent
|
391
|
+
http_request: freeze constant strings passed IO#write
|
392
|
+
Revert "remove response_start_sent"
|
393
|
+
t/t0012-reload-empty-config.sh: access ivars directly if needed
|
394
|
+
t0011-active-unix-socket.sh: fix race condition in test
|
395
|
+
new test for check_client_connection
|
396
|
+
revert signature change to HttpServer#process_client
|
397
|
+
support "struct tcp_info" on non-Linux and Ruby 2.2+
|
398
|
+
unicorn_http: reduce rb_global_variable calls
|
399
|
+
oob_gc: rely on opt_aref_with optimization on Ruby 2.2+
|
400
|
+
http_request: reduce insn size for check_client_connection
|
401
|
+
freebsd: avoid EINVAL when setting accept filter
|
402
|
+
test-lib: expr(1) portability fix
|
403
|
+
tests: keep disabled tests defined
|
404
|
+
test_exec: SO_KEEPALIVE value only needs to be true
|
405
|
+
doc: fix links to raindrops project
|
406
|
+
http_request: support proposed Raindrops::TCP states on non-Linux
|
407
|
+
ISSUES: expand on mail archive info + subscription disclaimer
|
408
|
+
test_ccc: use a pipe to synchronize test
|
409
|
+
doc: remove private email support address
|
410
|
+
input: update documentation and hide internals.
|
411
|
+
http_server: initialize @pid ivar
|
412
|
+
gemspec: remove olddoc from build dependency
|
413
|
+
doc: add version annotations for new features
|
414
|
+
|
415
|
+
Jeremy Evans (6):
|
416
|
+
Add after_worker_exit configuration option
|
417
|
+
Fix code example in after_worker_exit documentation
|
418
|
+
Add support for chroot to Worker#user
|
419
|
+
Add after_worker_ready configuration option
|
420
|
+
Add worker_exec configuration option
|
421
|
+
Don't pass a block for fork when forking workers
|
422
|
+
|
423
|
+
Simon Eskildsen (1):
|
424
|
+
check_client_connection: use tcp state on linux
|
425
|
+
|
426
|
+
=== unicorn 5.2.0 / 2016-10-31 20:00 UTC
|
427
|
+
|
428
|
+
Most notably, this release allows us to support requests with
|
429
|
+
lines delimited by LF-only, as opposed to the standard CRLF
|
430
|
+
pair and allowed by RFC 2616 sec 19.3.
|
431
|
+
|
432
|
+
Thanks to Mishael A Sibiryakov for the explanation and change:
|
433
|
+
|
434
|
+
https://bogomips.org/unicorn-public/1476954332.1736.156.camel@junki.org/
|
435
|
+
|
436
|
+
Thanks to Let's Encrypt, the website also moves to HTTPS
|
437
|
+
<https://bogomips.org/unicorn/> to improve reader privacy. The
|
438
|
+
"unicorn.bogomips.org" subdomain will be retired soon to reduce
|
439
|
+
subjectAltName bloat and speed up certificate renewals.
|
440
|
+
|
441
|
+
There's also the usual round of documentation and example
|
442
|
+
updates, too.
|
443
|
+
|
444
|
+
Eric Wong (7):
|
445
|
+
examples/init.sh: update to reduce upgrade raciness
|
446
|
+
doc: systemd should only kill master in example
|
447
|
+
examples/logrotate.conf: update example for systemd
|
448
|
+
doc: update gmane URLs to point to our own archives
|
449
|
+
relocate website to https://bogomips.org/unicorn/
|
450
|
+
TODO: remove Rack 2.x item
|
451
|
+
build: "install-gem" target avoids network
|
452
|
+
|
453
|
+
Mishael A Sibiryakov (1):
|
454
|
+
Add some tolerance (RFC2616 sec. 19.3)
|
455
|
+
|
456
|
+
=== unicorn 5.1.0 - rack is optional, again / 2016-04-01 00:35 UTC
|
457
|
+
|
458
|
+
Note: no code changes since 5.1.0.pre1 from January.^WNo, wait,
|
459
|
+
last minute performance improvement added today. See below.
|
460
|
+
|
461
|
+
The big change is rack is not required (but still recommended).
|
462
|
+
Applications are expected to depend on rack on their own so they can
|
463
|
+
specify the version of rack they prefer without unicorn pulling
|
464
|
+
in a newer, potentially incompatible version.
|
465
|
+
|
466
|
+
unicorn will always attempt to work with multiple versions of rack
|
467
|
+
as practical.
|
468
|
+
|
469
|
+
The HTTP parser also switched to using the TypedData C-API for
|
470
|
+
extra type safety and memory usage accounting support in the
|
471
|
+
'objspace' extension.
|
472
|
+
|
473
|
+
Thanks to Adam Duke to bringing the rack change to our attention
|
474
|
+
and Aaron Patterson for helping with the matter.
|
475
|
+
|
476
|
+
Last minute change: we now support the new leftpad() syscall under
|
477
|
+
Linux for major performance and security improvement:
|
478
|
+
|
479
|
+
http://mid.gmane.org/1459463613-32473-1-git-send-email-richard@nod.at
|
480
|
+
|
481
|
+
8^H9 changes since 5.0.1:
|
482
|
+
|
483
|
+
http: TypedData C-API conversion
|
484
|
+
various documentation updates
|
485
|
+
doc: bump olddoc to ~> 1.2 for extra NNTP URL
|
486
|
+
rack is optional at runtime, required for dev
|
487
|
+
doc update for ClientShutdown exceptions class
|
488
|
+
unicorn 5.1.0.pre1 - rack is optional, again
|
489
|
+
doc: reference --keep-file-descriptors for "bundle exec"
|
490
|
+
doc: further trimming to reduce noise
|
491
|
+
use leftpad Linux syscall for speed!
|
492
|
+
|
493
|
+
=== unicorn 5.1.0.pre1 - rack is optional, again / 2016-01-27 23:08 UTC
|
494
|
+
|
495
|
+
The big change is rack is not required (but still recommended).
|
496
|
+
Applications are expected to depend on rack on their own so they can
|
497
|
+
specify the version of rack they prefer without unicorn pulling
|
498
|
+
in a newer, potentially incompatible version.
|
499
|
+
|
500
|
+
unicorn will always attempt to work with multiple versions of rack
|
501
|
+
as practical.
|
502
|
+
|
503
|
+
The HTTP parser also switched to using the TypedData C-API for
|
504
|
+
extra type safety and memory usage accounting support in the
|
505
|
+
'objspace' extension.
|
506
|
+
|
507
|
+
Thanks to Adam Duke to bringing the rack change to our attention
|
508
|
+
and Aaron Patterson for helping with the matter.
|
509
|
+
|
510
|
+
There might be more documentation-related changes before 5.1.0
|
511
|
+
final. I am considering dropping pandoc from manpage generation
|
512
|
+
and relying on pod2man (from Perl) because it has a wider install
|
513
|
+
base.
|
514
|
+
|
515
|
+
5 changes since v5.0.1:
|
516
|
+
|
517
|
+
http: TypedData C-API conversion
|
518
|
+
various documentation updates
|
519
|
+
doc: bump olddoc to ~> 1.2 for extra NNTP URL
|
520
|
+
rack is optional at runtime, required for dev
|
521
|
+
doc update for ClientShutdown exceptions class
|
522
|
+
|
1
523
|
=== unicorn 5.0.1 - continuing to violate Rack SPEC / 2015-11-17 22:44 UTC
|
2
524
|
|
3
525
|
Once again, we allow nil values in response headers. We've had
|
data/README
CHANGED
@@ -10,10 +10,9 @@ both the the request and response in between unicorn and slow clients.
|
|
10
10
|
|
11
11
|
* Designed for Rack, Unix, fast clients, and ease-of-debugging. We
|
12
12
|
cut out everything that is better supported by the operating system,
|
13
|
-
{nginx}[
|
13
|
+
{nginx}[https://nginx.org/] or {Rack}[https://rack.github.io/].
|
14
14
|
|
15
|
-
* Compatible with Ruby
|
16
|
-
unicorn 4.x remains supported for Ruby 1.8 users.
|
15
|
+
* Compatible with Ruby 2.0.0 and later.
|
17
16
|
|
18
17
|
* Process management: unicorn will reap and restart workers that
|
19
18
|
die from broken apps. There is no need to manage multiple processes
|
@@ -27,9 +26,6 @@ both the the request and response in between unicorn and slow clients.
|
|
27
26
|
all run within their own isolated address space and only serve one
|
28
27
|
client at a time for maximum robustness.
|
29
28
|
|
30
|
-
* Supports all Rack applications, along with pre-Rack versions of
|
31
|
-
Ruby on Rails via a Rack wrapper.
|
32
|
-
|
33
29
|
* Builtin reopening of all log files in your application via
|
34
30
|
USR1 signal. This allows logrotate to rotate files atomically and
|
35
31
|
quickly via rename instead of the racy and slow copytruncate method.
|
@@ -40,12 +36,15 @@ both the the request and response in between unicorn and slow clients.
|
|
40
36
|
You can upgrade unicorn, your entire application, libraries
|
41
37
|
and even your Ruby interpreter without dropping clients.
|
42
38
|
|
39
|
+
* transparent upgrades using systemd socket activation is
|
40
|
+
supported since unicorn 5.0
|
41
|
+
|
43
42
|
* before_fork and after_fork hooks in case your application
|
44
43
|
has special needs when dealing with forked processes. These
|
45
44
|
should not be needed when the "preload_app" directive is
|
46
45
|
false (the default).
|
47
46
|
|
48
|
-
* Can be used with copy-on-write-friendly
|
47
|
+
* Can be used with copy-on-write-friendly GC in Ruby 2.0+
|
49
48
|
to save memory (by setting "preload_app" to true).
|
50
49
|
|
51
50
|
* Able to listen on multiple interfaces including UNIX sockets,
|
@@ -54,13 +53,11 @@ both the the request and response in between unicorn and slow clients.
|
|
54
53
|
|
55
54
|
* Simple and easy Ruby DSL for configuration.
|
56
55
|
|
57
|
-
* Decodes chunked
|
58
|
-
notification to be implemented as well as being able to tunnel
|
59
|
-
arbitrary stream-based protocols over HTTP.
|
56
|
+
* Decodes chunked requests on-the-fly.
|
60
57
|
|
61
58
|
== License
|
62
59
|
|
63
|
-
unicorn is copyright 2009-
|
60
|
+
unicorn is copyright 2009-2018 by all contributors (see logs in git).
|
64
61
|
It is based on Mongrel 1.1.5.
|
65
62
|
Mongrel is copyright 2007 Zed A. Shaw and contributors.
|
66
63
|
|
@@ -82,13 +79,13 @@ You may install it via RubyGems on RubyGems.org:
|
|
82
79
|
You can get the latest source via git from the following locations
|
83
80
|
(these versions may not be stable):
|
84
81
|
|
85
|
-
|
86
|
-
|
82
|
+
https://yhbt.net/unicorn.git
|
83
|
+
https://repo.or.cz/unicorn.git (mirror)
|
87
84
|
|
88
85
|
You may browse the code from the web:
|
89
86
|
|
90
|
-
*
|
91
|
-
*
|
87
|
+
* https://yhbt.net/unicorn.git
|
88
|
+
* https://repo.or.cz/w/unicorn.git (gitweb)
|
92
89
|
|
93
90
|
See the HACKING guide on how to contribute and build prerelease gems
|
94
91
|
from git.
|
@@ -127,17 +124,28 @@ unicorn is designed to only serve fast clients either on the local host
|
|
127
124
|
or a fast LAN. See the PHILOSOPHY and DESIGN documents for more details
|
128
125
|
regarding this.
|
129
126
|
|
127
|
+
Due to its ability to tolerate crashes and isolate clients, unicorn
|
128
|
+
is unfortunately known to prolong the existence of bugs in applications
|
129
|
+
and libraries which run on top of it.
|
130
|
+
|
130
131
|
== Contact
|
131
132
|
|
132
133
|
All feedback (bug reports, user/development dicussion, patches, pull
|
133
134
|
requests) go to the mailing list/newsgroup. See the ISSUES document for
|
134
|
-
information on the {mailing list}[mailto:unicorn-public@
|
135
|
+
information on the {mailing list}[mailto:unicorn-public@yhbt.net].
|
136
|
+
|
137
|
+
The mailing list is archived at https://yhbt.net/unicorn-public/
|
135
138
|
|
136
|
-
The mailing list is archived at http://bogomips.org/unicorn-public/
|
137
139
|
Read-only NNTP access is available at:
|
138
|
-
|
139
|
-
nntp://news.gmane.
|
140
|
+
nntps://news.public-inbox.org/inbox.comp.lang.ruby.unicorn and
|
141
|
+
nntp://news.gmane.io/gmane.comp.lang.ruby.unicorn.general
|
142
|
+
|
143
|
+
Read-only IMAP access is also avaialble at:
|
144
|
+
imaps://yhbt.net/inbox.comp.lang.ruby.unicorn.0 and
|
145
|
+
imap://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.lang.ruby.unicorn.0
|
146
|
+
The AUTH=ANONYMOUS mechanism is supported, as is any username+password
|
147
|
+
combination.
|
140
148
|
|
141
149
|
For the latest on unicorn releases, you may also finger us at
|
142
|
-
unicorn@
|
150
|
+
unicorn@yhbt.net or check our NEWS page (and subscribe to our Atom
|
143
151
|
feed).
|
data/SIGNALS
CHANGED
@@ -8,7 +8,7 @@ should be possible to easily share process management scripts between
|
|
8
8
|
Unicorn and nginx.
|
9
9
|
|
10
10
|
One example init script is distributed with unicorn:
|
11
|
-
|
11
|
+
https://yhbt.net/unicorn/examples/init.sh
|
12
12
|
|
13
13
|
=== Master Process
|
14
14
|
|