unicorn 5.0.1 → 5.3.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 +4 -4
- data/.manifest +1 -0
- data/.olddoc.yml +6 -4
- data/Documentation/unicorn.1.txt +2 -3
- data/Documentation/unicorn_rails.1.txt +3 -3
- data/FAQ +1 -1
- data/GIT-VERSION-FILE +1 -1
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +3 -3
- data/HACKING +1 -2
- data/ISSUES +21 -17
- data/KNOWN_ISSUES +2 -2
- data/LATEST +82 -28
- data/Links +3 -3
- data/NEWS +270 -0
- data/README +7 -19
- data/SIGNALS +1 -1
- data/Sandbox +6 -5
- data/TODO +0 -2
- data/TUNING +19 -1
- data/examples/big_app_gc.rb +1 -1
- data/examples/init.sh +36 -8
- data/examples/logrotate.conf +16 -1
- data/examples/nginx.conf +1 -1
- data/examples/unicorn.conf.minimal.rb +2 -2
- data/examples/unicorn.conf.rb +2 -2
- data/examples/unicorn@.service +7 -0
- data/ext/unicorn_http/common_field_optimization.h +2 -2
- data/ext/unicorn_http/ext_help.h +0 -20
- data/ext/unicorn_http/extconf.rb +1 -1
- data/ext/unicorn_http/global_variables.h +2 -2
- data/ext/unicorn_http/httpdate.c +2 -2
- data/ext/unicorn_http/unicorn_http.c +673 -358
- data/ext/unicorn_http/unicorn_http.rl +32 -16
- data/ext/unicorn_http/unicorn_http_common.rl +1 -1
- data/lib/unicorn/configurator.rb +71 -12
- data/lib/unicorn/http_request.rb +89 -9
- data/lib/unicorn/http_response.rb +5 -2
- data/lib/unicorn/http_server.rb +66 -22
- data/lib/unicorn/oob_gc.rb +4 -4
- data/lib/unicorn/socket_helper.rb +19 -4
- data/lib/unicorn/stream_input.rb +5 -4
- data/lib/unicorn/tee_input.rb +8 -10
- data/lib/unicorn/version.rb +1 -1
- data/lib/unicorn/worker.rb +17 -6
- data/lib/unicorn.rb +31 -20
- data/man/man1/unicorn.1 +54 -55
- data/man/man1/unicorn_rails.1 +47 -46
- data/t/t0011-active-unix-socket.sh +1 -1
- data/t/t0012-reload-empty-config.sh +2 -1
- data/t/test-lib.sh +2 -2
- data/test/exec/test_exec.rb +6 -5
- data/test/unit/test_ccc.rb +90 -0
- data/test/unit/test_http_parser.rb +31 -17
- data/test/unit/test_socket_helper.rb +8 -4
- data/test/unit/test_util.rb +2 -2
- data/unicorn.gemspec +15 -17
- metadata +6 -19
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b81793b7bf9db70d6d014404f3d109cbe8528951
|
|
4
|
+
data.tar.gz: 80747270f849455aa5f6df45bd720452b366a681
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 42b0045616f1243a945a24bf2c4f46f587655ecd24669f5c59b98aa25bef2e6b4a1ff47d580d41a9ad76f2490b09d5433229135cec52c7b7e2293c3086399949
|
|
7
|
+
data.tar.gz: 9bb45e6d41a3d1a8888b64f127269e67d3101f1ba0d637723820f5a881cc2754e3defcf83e9c98d41f4f25a3a95837be6cbef0538128717aac189ecac6fc9c5a
|
data/.manifest
CHANGED
data/.olddoc.yml
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
cgit_url:
|
|
2
|
+
cgit_url: https://bogomips.org/unicorn.git
|
|
3
3
|
git_url: git://bogomips.org/unicorn.git
|
|
4
|
-
rdoc_url:
|
|
5
|
-
ml_url:
|
|
4
|
+
rdoc_url: https://bogomips.org/unicorn/
|
|
5
|
+
ml_url: https://bogomips.org/unicorn-public/
|
|
6
6
|
merge_html:
|
|
7
7
|
unicorn_1: Documentation/unicorn.1.html
|
|
8
8
|
unicorn_rails_1: Documentation/unicorn_rails.1.html
|
|
@@ -12,4 +12,6 @@ noindex:
|
|
|
12
12
|
- TODO
|
|
13
13
|
- unicorn_rails_1
|
|
14
14
|
public_email: unicorn-public@bogomips.org
|
|
15
|
-
|
|
15
|
+
nntp_url:
|
|
16
|
+
- nntp://news.public-inbox.org/inbox.comp.lang.ruby.unicorn
|
|
17
|
+
- nntp://news.gmane.org/gmane.comp.lang.ruby.unicorn.general
|
data/Documentation/unicorn.1.txt
CHANGED
|
@@ -175,14 +175,13 @@ the unicorn config file.
|
|
|
175
175
|
|
|
176
176
|
# SEE ALSO
|
|
177
177
|
|
|
178
|
-
* unicorn_rails(1)
|
|
179
178
|
* *Rack::Builder* ri/RDoc
|
|
180
179
|
* *Unicorn::Configurator* ri/RDoc
|
|
181
180
|
* [Unicorn RDoc][1]
|
|
182
181
|
* [Rack RDoc][2]
|
|
183
182
|
* [Rackup HowTo][3]
|
|
184
183
|
|
|
185
|
-
[1]:
|
|
184
|
+
[1]: https://bogomips.org/unicorn/
|
|
186
185
|
[2]: http://www.rubydoc.info/github/rack/rack/
|
|
187
186
|
[3]: https://github.com/rack/rack/wiki/tutorial-rackup-howto
|
|
188
|
-
[4]:
|
|
187
|
+
[4]: https://bogomips.org/unicorn/SIGNALS.html
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# NAME
|
|
6
6
|
|
|
7
|
-
unicorn_rails -
|
|
7
|
+
unicorn_rails - unicorn launcher for Rails 1.x and 2.x users
|
|
8
8
|
|
|
9
9
|
# SYNOPSIS
|
|
10
10
|
|
|
@@ -169,7 +169,7 @@ used by Unicorn.
|
|
|
169
169
|
* [Rack RDoc][2]
|
|
170
170
|
* [Rackup HowTo][3]
|
|
171
171
|
|
|
172
|
-
[1]:
|
|
172
|
+
[1]: https://bogomips.org/unicorn/
|
|
173
173
|
[2]: http://www.rubydoc.info/github/rack/rack/
|
|
174
174
|
[3]: https://github.com/rack/rack/wiki/tutorial-rackup-howto
|
|
175
|
-
[4]:
|
|
175
|
+
[4]: https://bogomips.org/unicorn/SIGNALS.html
|
data/FAQ
CHANGED
|
@@ -7,7 +7,7 @@ drained entirely by the application. This may happen when request
|
|
|
7
7
|
bodies are gzipped, as unicorn reads request body data lazily to avoid
|
|
8
8
|
overhead from bad requests.
|
|
9
9
|
|
|
10
|
-
Ref:
|
|
10
|
+
Ref: https://bogomips.org/unicorn-public/FC91211E-FD32-432C-92FC-0318714C2170@zendesk.com/
|
|
11
11
|
|
|
12
12
|
=== Why aren't my Rails log files rotated when I use SIGUSR1?
|
|
13
13
|
|
data/GIT-VERSION-FILE
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
GIT_VERSION = 5.0
|
|
1
|
+
GIT_VERSION = 5.3.0
|
data/GIT-VERSION-GEN
CHANGED
data/GNUmakefile
CHANGED
|
@@ -183,13 +183,13 @@ doc: .document $(ext)/unicorn_http.c man html .olddoc.yml $(PLACEHOLDERS)
|
|
|
183
183
|
install -m644 $(man1_paths) doc/
|
|
184
184
|
tar cf - $$(git ls-files examples/) | (cd doc && tar xf -)
|
|
185
185
|
|
|
186
|
-
# publishes docs to
|
|
186
|
+
# publishes docs to https://bogomips.org/unicorn/
|
|
187
187
|
publish_doc:
|
|
188
188
|
-git set-file-times
|
|
189
189
|
$(MAKE) doc
|
|
190
190
|
$(MAKE) doc_gz
|
|
191
191
|
chmod 644 $$(find doc -type f)
|
|
192
|
-
$(RSYNC) -av doc/
|
|
192
|
+
$(RSYNC) -av doc/ bogomips.org:/srv/bogomips/unicorn/
|
|
193
193
|
git ls-files | xargs touch
|
|
194
194
|
|
|
195
195
|
# Create gzip variants of the same timestamp as the original so nginx
|
|
@@ -219,7 +219,7 @@ fix-perms:
|
|
|
219
219
|
gem: $(pkggem)
|
|
220
220
|
|
|
221
221
|
install-gem: $(pkggem)
|
|
222
|
-
gem install $(CURDIR)/$<
|
|
222
|
+
gem install --local $(CURDIR)/$<
|
|
223
223
|
|
|
224
224
|
$(pkggem): .manifest fix-perms
|
|
225
225
|
gem build $(rfpackage).gemspec
|
data/HACKING
CHANGED
|
@@ -57,7 +57,7 @@ Please wrap documentation at 72 characters-per-line or less (long URLs
|
|
|
57
57
|
are exempt) so it is comfortably readable from terminals.
|
|
58
58
|
|
|
59
59
|
When referencing mailing list posts, use
|
|
60
|
-
|
|
60
|
+
<tt>https://bogomips.org/unicorn-public/$MESSAGE_ID/</tt> if possible
|
|
61
61
|
since the Message-ID remains searchable even if a particular site
|
|
62
62
|
becomes unavailable.
|
|
63
63
|
|
|
@@ -104,7 +104,6 @@ don't email the git mailing list or maintainer with Unicorn patches :)
|
|
|
104
104
|
|
|
105
105
|
In order to build the gem, you must install the following components:
|
|
106
106
|
|
|
107
|
-
* olddoc (RubyGem)
|
|
108
107
|
* pandoc
|
|
109
108
|
|
|
110
109
|
You can build the Unicorn gem with the following command:
|
data/ISSUES
CHANGED
|
@@ -2,21 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
mailto:unicorn-public@bogomips.org is the best place to report bugs,
|
|
4
4
|
submit patches and/or obtain support after you have searched the
|
|
5
|
-
{email archives}[
|
|
6
|
-
{documentation}[
|
|
5
|
+
{email archives}[https://bogomips.org/unicorn-public/] and
|
|
6
|
+
{documentation}[https://bogomips.org/unicorn/].
|
|
7
7
|
|
|
8
|
-
* No subscription will ever be required to email
|
|
8
|
+
* No subscription will ever be required to email us
|
|
9
9
|
* Cc: all participants in a thread or commit, as subscription is optional
|
|
10
10
|
* Do not {top post}[http://catb.org/jargon/html/T/top-post.html] in replies
|
|
11
11
|
* Quote as little as possible of the message you're replying to
|
|
12
|
-
* Do not send HTML mail or images,
|
|
13
|
-
|
|
12
|
+
* Do not send HTML mail or images,
|
|
13
|
+
they hurt reader privacy and will be flagged as spam
|
|
14
|
+
* Anonymous and pseudonymous messages will ALWAYS be welcome
|
|
14
15
|
* The email submission port (587) is enabled on the bogomips.org MX:
|
|
15
|
-
|
|
16
|
+
https://bogomips.org/unicorn-public/20141004232241.GA23908@dcvr.yhbt.net/t/
|
|
16
17
|
|
|
17
18
|
If your issue is of a sensitive nature or you're just shy in public,
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
use anonymity tools such as Tor or Mixmaster; and rely on the public
|
|
20
|
+
mail archives for responses. Be sure to scrub sensitive log messages
|
|
21
|
+
and such.
|
|
20
22
|
|
|
21
23
|
If you don't get a response within a few days, we may have forgotten
|
|
22
24
|
about it so feel free to ask again.
|
|
@@ -64,29 +66,31 @@ document distributed with git) on guidelines for patch submission.
|
|
|
64
66
|
== Contact Info
|
|
65
67
|
|
|
66
68
|
* public: mailto:unicorn-public@bogomips.org
|
|
67
|
-
* private: mailto:unicorn@bogomips.org
|
|
68
69
|
* nntp://news.gmane.org/gmane.comp.lang.ruby.unicorn.general
|
|
69
70
|
* nntp://news.public-inbox.org/inbox.comp.lang.ruby.unicorn
|
|
70
|
-
*
|
|
71
|
+
* https://bogomips.org/unicorn-public/
|
|
72
|
+
* http://ou63pmih66umazou.onion/unicorn-public/
|
|
71
73
|
|
|
72
|
-
|
|
73
|
-
feeds the mailing list. Subscription is optional, so Cc:
|
|
74
|
-
all participants.
|
|
74
|
+
Mailing list subscription is optional, so Cc: all participants.
|
|
75
75
|
|
|
76
|
-
You can follow along via NNTP:
|
|
76
|
+
You can follow along via NNTP (read-only):
|
|
77
77
|
|
|
78
78
|
nntp://news.public-inbox.org/inbox.comp.lang.ruby.unicorn
|
|
79
79
|
nntp://news.gmane.org/gmane.comp.lang.ruby.unicorn.general
|
|
80
80
|
|
|
81
81
|
Or Atom feeds:
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
https://bogomips.org/unicorn-public/new.atom
|
|
84
|
+
http://ou63pmih66umazou.onion/unicorn-public/new.atom
|
|
84
85
|
|
|
85
|
-
The HTML archives at
|
|
86
|
+
The HTML archives at https://bogomips.org/unicorn-public/
|
|
86
87
|
also has links to per-thread Atom feeds and downloadable
|
|
87
88
|
mboxes.
|
|
88
89
|
|
|
89
|
-
You may
|
|
90
|
+
You may optionally subscribe via plain-text email:
|
|
90
91
|
|
|
91
92
|
mailto:unicorn-public+subscribe@bogomips.org
|
|
92
93
|
(and confirming the auto-reply)
|
|
94
|
+
|
|
95
|
+
Just keep in mind we suck at delivering email, so using NNTP,
|
|
96
|
+
or Atom feeds might be a better bet...
|
data/KNOWN_ISSUES
CHANGED
|
@@ -9,7 +9,7 @@ acceptable solution. Those issues are documented here.
|
|
|
9
9
|
handlers.
|
|
10
10
|
|
|
11
11
|
* Issues with FreeBSD jails can be worked around as documented by Tatsuya Ono:
|
|
12
|
-
|
|
12
|
+
https://bogomips.org/unicorn-public/CAHBuKRj09FdxAgzsefJWotexw-7JYZGJMtgUp_dhjPz9VbKD6Q@mail.gmail.com/
|
|
13
13
|
|
|
14
14
|
* PRNGs (pseudo-random number generators) loaded before forking
|
|
15
15
|
(e.g. "preload_app true") may need to have their internal state
|
|
@@ -60,7 +60,7 @@ acceptable solution. Those issues are documented here.
|
|
|
60
60
|
application to use Rails 2.3.2 and you have no other choice, then
|
|
61
61
|
you may edit your unicorn gemspec and remove the Rack dependency.
|
|
62
62
|
|
|
63
|
-
ref:
|
|
63
|
+
ref: https://bogomips.org/unicorn-public/20091014221552.GA30624@dcvr.yhbt.net/
|
|
64
64
|
Note: the workaround described in the article above only made
|
|
65
65
|
the issue more subtle and we didn't notice them immediately.
|
|
66
66
|
|
data/LATEST
CHANGED
|
@@ -1,29 +1,83 @@
|
|
|
1
|
-
=== unicorn 5.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
1
|
+
=== unicorn 5.3.0.pre1 / 2017-03-24 00:25 UTC
|
|
2
|
+
|
|
3
|
+
A largish release with several new features.
|
|
4
|
+
|
|
5
|
+
Simon Eskildsen contributed heavily using TCP_INFO under Linux
|
|
6
|
+
to implement the (now 5 year old) check_client_connection feature:
|
|
7
|
+
|
|
8
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-check_client_connection
|
|
9
|
+
https://bogomips.org/unicorn-public/?q=s:check_client_connection&d:..20170324&x=t
|
|
10
|
+
|
|
11
|
+
This also led to FreeBSD and OpenBSD portability improvements in
|
|
12
|
+
one of our dependencies, raindrops:
|
|
13
|
+
|
|
14
|
+
https://bogomips.org/raindrops-public/20170323024829.GA5190@dcvr/T/#u
|
|
15
|
+
|
|
16
|
+
Jeremy Evans contributed several new features. First he
|
|
17
|
+
implemented after_worker_exit to aid debugging:
|
|
18
|
+
|
|
19
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_exit
|
|
20
|
+
https://bogomips.org/unicorn-public/?q=s:after_worker_exit&d:..20170324&x=t#t
|
|
21
|
+
|
|
22
|
+
And then security-related features to isolate workers. Workers
|
|
23
|
+
may now chroot to drop access to the master filesystem, and the
|
|
24
|
+
new after_worker_ready configuration hook now exists to aid with
|
|
25
|
+
chroot support in workers:
|
|
26
|
+
|
|
27
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_ready
|
|
28
|
+
https://bogomips.org/unicorn/Unicorn/Worker.html#method-i-user
|
|
29
|
+
https://bogomips.org/unicorn-public/?q=s:after_worker_ready&d:..20170324&x=t#t
|
|
30
|
+
https://bogomips.org/unicorn-public/?q=s:chroot&d:..20170324&x=t#t
|
|
31
|
+
|
|
32
|
+
Additionally, workers may run in a completely different VM space
|
|
33
|
+
(nullifying preload_app and any CoW savings) with the new
|
|
34
|
+
worker_exec option:
|
|
35
|
+
|
|
36
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-worker_exec
|
|
37
|
+
https://bogomips.org/unicorn-public/?q=s:worker_exec&d:..20170324&x=t#t
|
|
38
|
+
|
|
39
|
+
There are also several improvements to FreeBSD and OpenBSD
|
|
40
|
+
support with the addition of these features.
|
|
41
|
+
|
|
42
|
+
34 changes since 5.2.0 (2016-10-31):
|
|
43
|
+
|
|
44
|
+
Eric Wong (27):
|
|
45
|
+
drop rb_str_set_len compatibility replacement
|
|
46
|
+
TUNING: document THP caveat for Linux users
|
|
47
|
+
tee_input: simplify condition for IO#write
|
|
48
|
+
remove response_start_sent
|
|
49
|
+
http_request: freeze constant strings passed IO#write
|
|
50
|
+
Revert "remove response_start_sent"
|
|
51
|
+
t/t0012-reload-empty-config.sh: access ivars directly if needed
|
|
52
|
+
t0011-active-unix-socket.sh: fix race condition in test
|
|
53
|
+
new test for check_client_connection
|
|
54
|
+
revert signature change to HttpServer#process_client
|
|
55
|
+
support "struct tcp_info" on non-Linux and Ruby 2.2+
|
|
56
|
+
unicorn_http: reduce rb_global_variable calls
|
|
57
|
+
oob_gc: rely on opt_aref_with optimization on Ruby 2.2+
|
|
58
|
+
http_request: reduce insn size for check_client_connection
|
|
59
|
+
freebsd: avoid EINVAL when setting accept filter
|
|
60
|
+
test-lib: expr(1) portability fix
|
|
61
|
+
tests: keep disabled tests defined
|
|
62
|
+
test_exec: SO_KEEPALIVE value only needs to be true
|
|
63
|
+
doc: fix links to raindrops project
|
|
64
|
+
http_request: support proposed Raindrops::TCP states on non-Linux
|
|
65
|
+
ISSUES: expand on mail archive info + subscription disclaimer
|
|
66
|
+
test_ccc: use a pipe to synchronize test
|
|
67
|
+
doc: remove private email support address
|
|
68
|
+
input: update documentation and hide internals.
|
|
69
|
+
http_server: initialize @pid ivar
|
|
70
|
+
gemspec: remove olddoc from build dependency
|
|
71
|
+
doc: add version annotations for new features
|
|
72
|
+
|
|
73
|
+
Jeremy Evans (6):
|
|
74
|
+
Add after_worker_exit configuration option
|
|
75
|
+
Fix code example in after_worker_exit documentation
|
|
76
|
+
Add support for chroot to Worker#user
|
|
77
|
+
Add after_worker_ready configuration option
|
|
78
|
+
Add worker_exec configuration option
|
|
79
|
+
Don't pass a block for fork when forking workers
|
|
80
|
+
|
|
81
|
+
Simon Eskildsen (1):
|
|
82
|
+
check_client_connection: use tcp state on linux
|
|
29
83
|
|
data/Links
CHANGED
|
@@ -23,10 +23,10 @@ or services behind them.
|
|
|
23
23
|
* {golden_brindle}[https://github.com/simonoff/golden_brindle] - tool to
|
|
24
24
|
manage multiple unicorn instances/applications on a single server
|
|
25
25
|
|
|
26
|
-
* {raindrops}[
|
|
26
|
+
* {raindrops}[https://bogomips.org/raindrops/] - real-time stats for
|
|
27
27
|
preforking Rack servers
|
|
28
28
|
|
|
29
|
-
* {UnXF}[
|
|
29
|
+
* {UnXF}[https://bogomips.org/unxf/] Un-X-Forward* the Rack environment,
|
|
30
30
|
useful since unicorn is designed to be deployed behind a reverse proxy.
|
|
31
31
|
|
|
32
32
|
=== unicorn is written to work with
|
|
@@ -52,5 +52,5 @@ or services behind them.
|
|
|
52
52
|
* {Mongrel}[http://rubygems.org/gems/mongrel] - the awesome webserver
|
|
53
53
|
unicorn is based on
|
|
54
54
|
|
|
55
|
-
* {david}[
|
|
55
|
+
* {david}[https://bogomips.org/david.git] - a tool to explain why you need
|
|
56
56
|
nginx in front of unicorn
|
data/NEWS
CHANGED
|
@@ -1,3 +1,273 @@
|
|
|
1
|
+
=== unicorn 5.3.0.pre1 / 2017-03-24 00:25 UTC
|
|
2
|
+
|
|
3
|
+
A largish release with several new features.
|
|
4
|
+
|
|
5
|
+
Simon Eskildsen contributed heavily using TCP_INFO under Linux
|
|
6
|
+
to implement the (now 5 year old) check_client_connection feature:
|
|
7
|
+
|
|
8
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-check_client_connection
|
|
9
|
+
https://bogomips.org/unicorn-public/?q=s:check_client_connection&d:..20170324&x=t
|
|
10
|
+
|
|
11
|
+
This also led to FreeBSD and OpenBSD portability improvements in
|
|
12
|
+
one of our dependencies, raindrops:
|
|
13
|
+
|
|
14
|
+
https://bogomips.org/raindrops-public/20170323024829.GA5190@dcvr/T/#u
|
|
15
|
+
|
|
16
|
+
Jeremy Evans contributed several new features. First he
|
|
17
|
+
implemented after_worker_exit to aid debugging:
|
|
18
|
+
|
|
19
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_exit
|
|
20
|
+
https://bogomips.org/unicorn-public/?q=s:after_worker_exit&d:..20170324&x=t#t
|
|
21
|
+
|
|
22
|
+
And then security-related features to isolate workers. Workers
|
|
23
|
+
may now chroot to drop access to the master filesystem, and the
|
|
24
|
+
new after_worker_ready configuration hook now exists to aid with
|
|
25
|
+
chroot support in workers:
|
|
26
|
+
|
|
27
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_ready
|
|
28
|
+
https://bogomips.org/unicorn/Unicorn/Worker.html#method-i-user
|
|
29
|
+
https://bogomips.org/unicorn-public/?q=s:after_worker_ready&d:..20170324&x=t#t
|
|
30
|
+
https://bogomips.org/unicorn-public/?q=s:chroot&d:..20170324&x=t#t
|
|
31
|
+
|
|
32
|
+
Additionally, workers may run in a completely different VM space
|
|
33
|
+
(nullifying preload_app and any CoW savings) with the new
|
|
34
|
+
worker_exec option:
|
|
35
|
+
|
|
36
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-worker_exec
|
|
37
|
+
https://bogomips.org/unicorn-public/?q=s:worker_exec&d:..20170324&x=t#t
|
|
38
|
+
|
|
39
|
+
There are also several improvements to FreeBSD and OpenBSD
|
|
40
|
+
support with the addition of these features.
|
|
41
|
+
|
|
42
|
+
34 changes since 5.2.0 (2016-10-31):
|
|
43
|
+
|
|
44
|
+
Eric Wong (27):
|
|
45
|
+
drop rb_str_set_len compatibility replacement
|
|
46
|
+
TUNING: document THP caveat for Linux users
|
|
47
|
+
tee_input: simplify condition for IO#write
|
|
48
|
+
remove response_start_sent
|
|
49
|
+
http_request: freeze constant strings passed IO#write
|
|
50
|
+
Revert "remove response_start_sent"
|
|
51
|
+
t/t0012-reload-empty-config.sh: access ivars directly if needed
|
|
52
|
+
t0011-active-unix-socket.sh: fix race condition in test
|
|
53
|
+
new test for check_client_connection
|
|
54
|
+
revert signature change to HttpServer#process_client
|
|
55
|
+
support "struct tcp_info" on non-Linux and Ruby 2.2+
|
|
56
|
+
unicorn_http: reduce rb_global_variable calls
|
|
57
|
+
oob_gc: rely on opt_aref_with optimization on Ruby 2.2+
|
|
58
|
+
http_request: reduce insn size for check_client_connection
|
|
59
|
+
freebsd: avoid EINVAL when setting accept filter
|
|
60
|
+
test-lib: expr(1) portability fix
|
|
61
|
+
tests: keep disabled tests defined
|
|
62
|
+
test_exec: SO_KEEPALIVE value only needs to be true
|
|
63
|
+
doc: fix links to raindrops project
|
|
64
|
+
http_request: support proposed Raindrops::TCP states on non-Linux
|
|
65
|
+
ISSUES: expand on mail archive info + subscription disclaimer
|
|
66
|
+
test_ccc: use a pipe to synchronize test
|
|
67
|
+
doc: remove private email support address
|
|
68
|
+
input: update documentation and hide internals.
|
|
69
|
+
http_server: initialize @pid ivar
|
|
70
|
+
gemspec: remove olddoc from build dependency
|
|
71
|
+
doc: add version annotations for new features
|
|
72
|
+
|
|
73
|
+
Jeremy Evans (6):
|
|
74
|
+
Add after_worker_exit configuration option
|
|
75
|
+
Fix code example in after_worker_exit documentation
|
|
76
|
+
Add support for chroot to Worker#user
|
|
77
|
+
Add after_worker_ready configuration option
|
|
78
|
+
Add worker_exec configuration option
|
|
79
|
+
Don't pass a block for fork when forking workers
|
|
80
|
+
|
|
81
|
+
Simon Eskildsen (1):
|
|
82
|
+
check_client_connection: use tcp state on linux
|
|
83
|
+
|
|
84
|
+
=== unicorn 5.2.0 / 2016-10-31 20:00 UTC
|
|
85
|
+
|
|
86
|
+
Most notably, this release allows us to support requests with
|
|
87
|
+
lines delimited by LF-only, as opposed to the standard CRLF
|
|
88
|
+
pair and allowed by RFC 2616 sec 19.3.
|
|
89
|
+
|
|
90
|
+
Thanks to Mishael A Sibiryakov for the explanation and change:
|
|
91
|
+
|
|
92
|
+
https://bogomips.org/unicorn-public/1476954332.1736.156.camel@junki.org/
|
|
93
|
+
|
|
94
|
+
Thanks to Let's Encrypt, the website also moves to HTTPS
|
|
95
|
+
<https://bogomips.org/unicorn/> to improve reader privacy. The
|
|
96
|
+
"unicorn.bogomips.org" subdomain will be retired soon to reduce
|
|
97
|
+
subjectAltName bloat and speed up certificate renewals.
|
|
98
|
+
|
|
99
|
+
There's also the usual round of documentation and example
|
|
100
|
+
updates, too.
|
|
101
|
+
|
|
102
|
+
Eric Wong (7):
|
|
103
|
+
examples/init.sh: update to reduce upgrade raciness
|
|
104
|
+
doc: systemd should only kill master in example
|
|
105
|
+
examples/logrotate.conf: update example for systemd
|
|
106
|
+
doc: update gmane URLs to point to our own archives
|
|
107
|
+
relocate website to https://bogomips.org/unicorn/
|
|
108
|
+
TODO: remove Rack 2.x item
|
|
109
|
+
build: "install-gem" target avoids network
|
|
110
|
+
|
|
111
|
+
Mishael A Sibiryakov (1):
|
|
112
|
+
Add some tolerance (RFC2616 sec. 19.3)
|
|
113
|
+
|
|
114
|
+
=== unicorn 5.1.0 - rack is optional, again / 2016-04-01 00:35 UTC
|
|
115
|
+
|
|
116
|
+
Note: no code changes since 5.1.0.pre1 from January.^WNo, wait,
|
|
117
|
+
last minute performance improvement added today. See below.
|
|
118
|
+
|
|
119
|
+
The big change is rack is not required (but still recommended).
|
|
120
|
+
Applications are expected to depend on rack on their own so they can
|
|
121
|
+
specify the version of rack they prefer without unicorn pulling
|
|
122
|
+
in a newer, potentially incompatible version.
|
|
123
|
+
|
|
124
|
+
unicorn will always attempt to work with multiple versions of rack
|
|
125
|
+
as practical.
|
|
126
|
+
|
|
127
|
+
The HTTP parser also switched to using the TypedData C-API for
|
|
128
|
+
extra type safety and memory usage accounting support in the
|
|
129
|
+
'objspace' extension.
|
|
130
|
+
|
|
131
|
+
Thanks to Adam Duke to bringing the rack change to our attention
|
|
132
|
+
and Aaron Patterson for helping with the matter.
|
|
133
|
+
|
|
134
|
+
Last minute change: we now support the new leftpad() syscall under
|
|
135
|
+
Linux for major performance and security improvement:
|
|
136
|
+
|
|
137
|
+
http://mid.gmane.org/1459463613-32473-1-git-send-email-richard@nod.at
|
|
138
|
+
|
|
139
|
+
8^H9 changes since 5.0.1:
|
|
140
|
+
|
|
141
|
+
http: TypedData C-API conversion
|
|
142
|
+
various documentation updates
|
|
143
|
+
doc: bump olddoc to ~> 1.2 for extra NNTP URL
|
|
144
|
+
rack is optional at runtime, required for dev
|
|
145
|
+
doc update for ClientShutdown exceptions class
|
|
146
|
+
unicorn 5.1.0.pre1 - rack is optional, again
|
|
147
|
+
doc: reference --keep-file-descriptors for "bundle exec"
|
|
148
|
+
doc: further trimming to reduce noise
|
|
149
|
+
use leftpad Linux syscall for speed!
|
|
150
|
+
|
|
151
|
+
=== unicorn 5.1.0.pre1 - rack is optional, again / 2016-01-27 23:08 UTC
|
|
152
|
+
|
|
153
|
+
The big change is rack is not required (but still recommended).
|
|
154
|
+
Applications are expected to depend on rack on their own so they can
|
|
155
|
+
specify the version of rack they prefer without unicorn pulling
|
|
156
|
+
in a newer, potentially incompatible version.
|
|
157
|
+
|
|
158
|
+
unicorn will always attempt to work with multiple versions of rack
|
|
159
|
+
as practical.
|
|
160
|
+
|
|
161
|
+
The HTTP parser also switched to using the TypedData C-API for
|
|
162
|
+
extra type safety and memory usage accounting support in the
|
|
163
|
+
'objspace' extension.
|
|
164
|
+
|
|
165
|
+
Thanks to Adam Duke to bringing the rack change to our attention
|
|
166
|
+
and Aaron Patterson for helping with the matter.
|
|
167
|
+
|
|
168
|
+
There might be more documentation-related changes before 5.1.0
|
|
169
|
+
final. I am considering dropping pandoc from manpage generation
|
|
170
|
+
and relying on pod2man (from Perl) because it has a wider install
|
|
171
|
+
base.
|
|
172
|
+
|
|
173
|
+
5 changes since v5.0.1:
|
|
174
|
+
|
|
175
|
+
http: TypedData C-API conversion
|
|
176
|
+
various documentation updates
|
|
177
|
+
doc: bump olddoc to ~> 1.2 for extra NNTP URL
|
|
178
|
+
rack is optional at runtime, required for dev
|
|
179
|
+
doc update for ClientShutdown exceptions class
|
|
180
|
+
|
|
181
|
+
=== unicorn 5.0.1 - continuing to violate Rack SPEC / 2015-11-17 22:44 UTC
|
|
182
|
+
|
|
183
|
+
Once again, we allow nil values in response headers. We've had
|
|
184
|
+
this bug since March 2009, and thus cannot expect existing
|
|
185
|
+
applications and middlewares running unicorn to fix this.
|
|
186
|
+
|
|
187
|
+
Unfortunately, supporting this bug contributes to application
|
|
188
|
+
server lock-in, but at least we'll document it as such.
|
|
189
|
+
|
|
190
|
+
Thanks to Owen Ou <o@heroku.com> for reporting this regression:
|
|
191
|
+
|
|
192
|
+
http://bogomips.org/unicorn-public/CAO47=rJa=zRcLn_Xm4v2cHPr6c0UswaFC_omYFEH+baSxHOWKQ@mail.gmail.com/
|
|
193
|
+
|
|
194
|
+
Additionally, systemd examples are now in the examples/ directory
|
|
195
|
+
based on a post by Christos Trochalakis <yatiohi@ideopolis.gr>:
|
|
196
|
+
|
|
197
|
+
http://bogomips.org/unicorn-public/20150708130821.GA1361@luke.ws.skroutz.gr/
|
|
198
|
+
|
|
199
|
+
=== unicorn 5.0.0 - most boring major release. EVER. / 2015-11-01 08:48 UTC
|
|
200
|
+
|
|
201
|
+
An evolutionary dead-end since its announcement[1] nearly six years
|
|
202
|
+
ago, this old-fashioned preforker has had enough bugs and missteps
|
|
203
|
+
that it's managed to hit version 5!
|
|
204
|
+
|
|
205
|
+
I wish I could say unicorn 5 is leaps and bounds better than 4, but
|
|
206
|
+
it is not. This major version change allows us to drop some cruft
|
|
207
|
+
and unused features which accumulated over the years, resulting in
|
|
208
|
+
several kilobytes of memory saved[2]!
|
|
209
|
+
|
|
210
|
+
Compatibility:
|
|
211
|
+
|
|
212
|
+
* The horrible, proprietary (:P) "Status:" response header is
|
|
213
|
+
finally gone, saving at least 16 precious bytes in every HTTP
|
|
214
|
+
response. This should make it easier to write custom HTTP clients
|
|
215
|
+
which are compatible across all HTTP servers. It will hopefully
|
|
216
|
+
make migrating between different Rack servers easier for new
|
|
217
|
+
projects.
|
|
218
|
+
|
|
219
|
+
* Ruby 1.8 support removed. Ruby 1.9.3 is currently the earliest
|
|
220
|
+
supported version. However, expect minor, likely-unnoticeable
|
|
221
|
+
performance regressions if you use Ruby 2.1 or earlier. Going
|
|
222
|
+
forward, unicorn will favor the latest version (currently 2.2) of
|
|
223
|
+
the mainline Ruby implementation, potentially sacrificing
|
|
224
|
+
performance on older Rubies.
|
|
225
|
+
|
|
226
|
+
* Some internal, undocumented features and APIs used by
|
|
227
|
+
derivative servers are gone; removing bloat and slightly lowering
|
|
228
|
+
memory use. We have never and will never endorse the use of any
|
|
229
|
+
applications or middleware with a dependency on unicorn,
|
|
230
|
+
applications should be written for Rack instead.
|
|
231
|
+
Note: Rainbows! 5.0 will be released next week or so to be
|
|
232
|
+
compatible with unicorn 5.x
|
|
233
|
+
|
|
234
|
+
New features:
|
|
235
|
+
|
|
236
|
+
* sd_listen_fds(3) emulation added for systemd compatibility.
|
|
237
|
+
You may now stop using PID files and other process monitoring
|
|
238
|
+
software when using systemd.
|
|
239
|
+
|
|
240
|
+
* Newly-set TCP socket options are now applied to inherited sockets.
|
|
241
|
+
|
|
242
|
+
* Dynamic changes in the application to Rack::Utils::HTTP_STATUS
|
|
243
|
+
hash is now supported; allowing users to set custom status lines
|
|
244
|
+
in Rack to be reflected in unicorn. This feature causes a minor
|
|
245
|
+
performance regression, but is made up for Ruby 2.2 users with
|
|
246
|
+
other optimizations.
|
|
247
|
+
|
|
248
|
+
* The monotonic clock is used under Ruby 2.1+, making the
|
|
249
|
+
timeout feature immune to system clock changes.
|
|
250
|
+
|
|
251
|
+
As unicorn may be used anonymously without registration, the
|
|
252
|
+
project is committed to supporting anonymous and pseudonymous
|
|
253
|
+
help requests, contributions and feedback via plain-text mail to:
|
|
254
|
+
|
|
255
|
+
unicorn-public@bogomips.org
|
|
256
|
+
|
|
257
|
+
The mail submission port (587) is open to those behind firewalls
|
|
258
|
+
and allows access via Tor and anonymous remailers.
|
|
259
|
+
Archives are accessible via: http://bogomips.org/unicorn-public/
|
|
260
|
+
and mirrored to various other places, so you do not need to use
|
|
261
|
+
a valid address when posting.
|
|
262
|
+
|
|
263
|
+
Finally, rest assured the core design of unicorn will never change.
|
|
264
|
+
It will never use new-fangled things like threads, kqueue or epoll;
|
|
265
|
+
but will always remain a preforking server serving one client
|
|
266
|
+
per-process.
|
|
267
|
+
|
|
268
|
+
[1] http://mid.gmane.org/20090211230457.GB22926@dcvr.yhbt.net
|
|
269
|
+
[2] this would've been like, totally gnarly in the 80s!
|
|
270
|
+
|
|
1
271
|
=== unicorn 5.0.0.pre2 - another prerelease! / 2015-07-06 21:37 UTC
|
|
2
272
|
|
|
3
273
|
There is a minor TCP socket options are now applied to inherited
|