unicorn 5.4.0 → 5.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.manifest +7 -3
  3. data/.olddoc.yml +12 -7
  4. data/Application_Timeouts +4 -4
  5. data/Documentation/.gitignore +1 -3
  6. data/Documentation/unicorn.1 +222 -0
  7. data/Documentation/unicorn_rails.1 +207 -0
  8. data/FAQ +1 -1
  9. data/GIT-VERSION-FILE +1 -1
  10. data/GIT-VERSION-GEN +1 -1
  11. data/GNUmakefile +111 -57
  12. data/HACKING +1 -1
  13. data/ISSUES +21 -23
  14. data/KNOWN_ISSUES +2 -2
  15. data/LATEST +18 -8
  16. data/LICENSE +2 -2
  17. data/Links +13 -11
  18. data/NEWS +94 -0
  19. data/README +25 -11
  20. data/SIGNALS +1 -1
  21. data/Sandbox +4 -4
  22. data/archive/slrnpull.conf +1 -1
  23. data/bin/unicorn +3 -1
  24. data/bin/unicorn_rails +2 -2
  25. data/examples/big_app_gc.rb +1 -1
  26. data/examples/logrotate.conf +3 -3
  27. data/examples/nginx.conf +4 -3
  28. data/examples/unicorn.conf.minimal.rb +2 -2
  29. data/examples/unicorn.conf.rb +2 -2
  30. data/examples/unicorn@.service +7 -0
  31. data/ext/unicorn_http/common_field_optimization.h +24 -6
  32. data/ext/unicorn_http/extconf.rb +35 -0
  33. data/ext/unicorn_http/global_variables.h +2 -2
  34. data/ext/unicorn_http/httpdate.c +2 -2
  35. data/ext/unicorn_http/unicorn_http.c +257 -224
  36. data/ext/unicorn_http/unicorn_http.rl +47 -14
  37. data/lib/unicorn/configurator.rb +25 -4
  38. data/lib/unicorn/http_request.rb +12 -2
  39. data/lib/unicorn/http_server.rb +50 -23
  40. data/lib/unicorn/launcher.rb +1 -1
  41. data/lib/unicorn/oob_gc.rb +2 -2
  42. data/lib/unicorn/socket_helper.rb +3 -2
  43. data/lib/unicorn/tmpio.rb +8 -2
  44. data/lib/unicorn/util.rb +3 -3
  45. data/lib/unicorn/version.rb +1 -1
  46. data/lib/unicorn/worker.rb +16 -2
  47. data/lib/unicorn.rb +23 -9
  48. data/man/man1/unicorn.1 +88 -85
  49. data/man/man1/unicorn_rails.1 +79 -81
  50. data/t/GNUmakefile +3 -72
  51. data/t/README +4 -4
  52. data/t/t0301-no-default-middleware-ignored-in-config.sh +25 -0
  53. data/t/t0301.ru +13 -0
  54. data/test/benchmark/README +14 -4
  55. data/test/benchmark/ddstream.ru +50 -0
  56. data/test/benchmark/readinput.ru +40 -0
  57. data/test/benchmark/uconnect.perl +66 -0
  58. data/test/exec/test_exec.rb +15 -14
  59. data/test/test_helper.rb +22 -30
  60. data/test/unit/test_ccc.rb +1 -1
  61. data/test/unit/test_http_parser.rb +16 -0
  62. data/test/unit/test_http_parser_ng.rb +81 -0
  63. data/test/unit/test_server.rb +35 -5
  64. data/test/unit/test_signals.rb +2 -2
  65. data/test/unit/test_socket_helper.rb +4 -4
  66. data/test/unit/test_upload.rb +4 -9
  67. data/test/unit/test_util.rb +25 -0
  68. data/unicorn.gemspec +8 -7
  69. metadata +15 -11
  70. data/Documentation/GNUmakefile +0 -30
  71. data/Documentation/unicorn.1.txt +0 -187
  72. data/Documentation/unicorn_rails.1.txt +0 -175
data/GNUmakefile CHANGED
@@ -10,6 +10,7 @@ RAGEL = ragel
10
10
  RSYNC = rsync
11
11
  OLDDOC = olddoc
12
12
  RDOC = rdoc
13
+ INSTALL = install
13
14
 
14
15
  GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
15
16
  @./GIT-VERSION-GEN
@@ -25,7 +26,38 @@ endif
25
26
 
26
27
  RUBY_ENGINE := $(shell $(RUBY) -e 'puts((RUBY_ENGINE rescue "ruby"))')
27
28
 
28
- MYLIBS = $(RUBYLIB)
29
+ # we should never package more than one ext to avoid DSO proliferation:
30
+ # https://udrepper.livejournal.com/8790.html
31
+ ext := $(firstword $(wildcard ext/*))
32
+
33
+ ragel: $(ext)/unicorn_http.c
34
+
35
+ rl_files := $(wildcard $(ext)/*.rl)
36
+ ragel: $(ext)/unicorn_http.c
37
+ $(ext)/unicorn_http.c: $(rl_files)
38
+ cd $(@D) && $(RAGEL) unicorn_http.rl -C $(RLFLAGS) -o $(@F)
39
+ ext_pfx := test/$(RUBY_ENGINE)-$(RUBY_VERSION)
40
+ tmp_bin := $(ext_pfx)/bin
41
+ ext_h := $(wildcard $(ext)/*/*.h $(ext)/*.h)
42
+ ext_src := $(sort $(wildcard $(ext)/*.c) $(ext_h) $(ext)/unicorn_http.c)
43
+ ext_pfx_src := $(addprefix $(ext_pfx)/,$(ext_src))
44
+ ext_dir := $(ext_pfx)/$(ext)
45
+ $(ext)/extconf.rb: $(wildcard $(ext)/*.h)
46
+ @>>$@
47
+ $(ext_dir) $(tmp_bin) man/man1 doc/man1 pkg t/trash:
48
+ @mkdir -p $@
49
+ $(ext_pfx)/$(ext)/%: $(ext)/% | $(ext_dir)
50
+ $(INSTALL) -m 644 $< $@
51
+ $(ext_pfx)/$(ext)/Makefile: $(ext)/extconf.rb $(ext_h) | $(ext_dir)
52
+ $(RM) -f $(@D)/*.o
53
+ cd $(@D) && $(RUBY) $(CURDIR)/$(ext)/extconf.rb $(EXTCONF_ARGS)
54
+ ext_sfx := _ext.$(DLEXT)
55
+ ext_dl := $(ext_pfx)/$(ext)/$(notdir $(ext)_ext.$(DLEXT))
56
+ $(ext_dl): $(ext_src) $(ext_pfx_src) $(ext_pfx)/$(ext)/Makefile
57
+ $(MAKE) -C $(@D)
58
+ lib := $(CURDIR)/lib:$(CURDIR)/$(ext_pfx)/$(ext)
59
+ http build: $(ext_dl)
60
+ $(ext_pfx)/$(ext)/unicorn_http.c: ext/unicorn_http/unicorn_http.c
29
61
 
30
62
  # dunno how to implement this as concisely in Ruby, and hell, I love awk
31
63
  awk_slow := awk '/def test_/{print FILENAME"--"$$2".n"}' 2>/dev/null
@@ -37,44 +69,21 @@ T := $(filter-out $(slow_tests), $(wildcard test/*/test*.rb))
37
69
  T_n := $(shell $(awk_slow) $(slow_tests))
38
70
  T_log := $(subst .rb,$(log_suffix),$(T))
39
71
  T_n_log := $(subst .n,$(log_suffix),$(T_n))
40
- test_prefix = $(CURDIR)/test/$(RUBY_ENGINE)-$(RUBY_VERSION)
41
72
 
42
- ext := ext/unicorn_http
43
- c_files := $(ext)/unicorn_http.c $(ext)/httpdate.c $(wildcard $(ext)/*.h)
44
- rl_files := $(wildcard $(ext)/*.rl)
45
73
  base_bins := unicorn unicorn_rails
46
74
  bins := $(addprefix bin/, $(base_bins))
47
75
  man1_rdoc := $(addsuffix _1, $(base_bins))
48
76
  man1_bins := $(addsuffix .1, $(base_bins))
49
77
  man1_paths := $(addprefix man/man1/, $(man1_bins))
50
- rb_files := $(bins) $(shell find lib ext -type f -name '*.rb')
51
- inst_deps := $(c_files) $(rb_files) GNUmakefile test/test_helper.rb
78
+ tmp_bins = $(addprefix $(tmp_bin)/, unicorn unicorn_rails)
79
+ pid := $(shell echo $$PPID)
52
80
 
53
- ragel: $(ext)/unicorn_http.c
54
- $(ext)/unicorn_http.c: $(rl_files)
55
- cd $(@D) && $(RAGEL) unicorn_http.rl -C $(RLFLAGS) -o $(@F)
56
- $(ext)/Makefile: $(ext)/extconf.rb $(c_files)
57
- cd $(@D) && $(RUBY) extconf.rb
58
- $(ext)/unicorn_http.$(DLEXT): $(ext)/Makefile
59
- $(MAKE) -C $(@D)
60
- http: $(ext)/unicorn_http.$(DLEXT)
61
-
62
- # only used for tests
63
- http-install: $(ext)/unicorn_http.$(DLEXT)
64
- install -m644 $< lib/
81
+ $(tmp_bin)/%: bin/% | $(tmp_bin)
82
+ $(INSTALL) -m 755 $< $@.$(pid)
83
+ $(MRI) -i -p -e '$$_.gsub!(%r{^#!.*$$},"#!$(ruby_bin)")' $@.$(pid)
84
+ mv $@.$(pid) $@
65
85
 
66
- test-install: $(test_prefix)/.stamp
67
- $(test_prefix)/.stamp: $(inst_deps)
68
- mkdir -p $(test_prefix)/.ccache
69
- tar cf - $(inst_deps) GIT-VERSION-GEN | \
70
- (cd $(test_prefix) && tar xf -)
71
- $(MAKE) -C $(test_prefix) clean
72
- $(MAKE) -C $(test_prefix) http-install shebang RUBY="$(RUBY)"
73
- > $@
74
-
75
- # this is only intended to be run within $(test_prefix)
76
- shebang: $(bins)
77
- $(MRI) -i -p -e '$$_.gsub!(%r{^#!.*$$},"#!$(ruby_bin)")' $^
86
+ bins: $(tmp_bins)
78
87
 
79
88
  t_log := $(T_log) $(T_n_log)
80
89
  test: $(T) $(T_n)
@@ -83,15 +92,54 @@ test: $(T) $(T_n)
83
92
 
84
93
  test-exec: $(wildcard test/exec/test_*.rb)
85
94
  test-unit: $(wildcard test/unit/test_*.rb)
86
- $(slow_tests): $(test_prefix)/.stamp
95
+ $(slow_tests): $(ext_dl)
87
96
  @$(MAKE) $(shell $(awk_slow) $@)
88
97
 
89
98
  # ensure we can require just the HTTP parser without the rest of unicorn
90
- test-require: $(ext)/unicorn_http.$(DLEXT)
91
- $(RUBY) --disable-gems -I$(ext) -runicorn_http -e Unicorn
99
+ test-require: $(ext_dl)
100
+ $(RUBY) --disable-gems -I$(ext_pfx)/$(ext) -runicorn_http -e Unicorn
101
+
102
+ test_prereq := $(tmp_bins) $(ext_dl)
103
+
104
+ SH_TEST_OPTS =
105
+ ifdef V
106
+ ifeq ($(V),2)
107
+ SH_TEST_OPTS += --trace
108
+ else
109
+ SH_TEST_OPTS += --verbose
110
+ endif
111
+ endif
92
112
 
93
- test-integration: $(test_prefix)/.stamp
94
- $(MAKE) -C t
113
+ # do we trust Ruby behavior to be stable? some tests are
114
+ # (mostly) POSIX sh (not bash or ksh93, so no "set -o pipefail"
115
+ # TRACER = strace -f -o $(t_pfx).strace -s 100000
116
+ # TRACER = /usr/bin/time -o $(t_pfx).time
117
+ t_pfx = trash/$@-$(RUBY_ENGINE)-$(RUBY_VERSION)
118
+ T_sh = $(wildcard t/t[0-9][0-9][0-9][0-9]-*.sh)
119
+ $(T_sh): export RUBY := $(RUBY)
120
+ $(T_sh): export PATH := $(CURDIR)/$(tmp_bin):$(PATH)
121
+ $(T_sh): export RUBYLIB := $(lib):$(RUBYLIB)
122
+ $(T_sh): dep $(test_prereq) t/random_blob t/trash/.gitignore
123
+ cd t && $(TRACER) $(SHELL) $(SH_TEST_OPTS) $(@F) $(TEST_OPTS)
124
+
125
+ t/trash/.gitignore : | t/trash
126
+ echo '*' >$@
127
+
128
+ dependencies := socat curl
129
+ deps := $(addprefix t/.dep+,$(dependencies))
130
+ $(deps): dep_bin = $(lastword $(subst +, ,$@))
131
+ $(deps):
132
+ @which $(dep_bin) > $@.$(pid) 2>/dev/null || :
133
+ @test -s $@.$(pid) || \
134
+ { echo >&2 "E '$(dep_bin)' not found in PATH=$(PATH)"; exit 1; }
135
+ @mv $@.$(pid) $@
136
+ dep: $(deps)
137
+
138
+ t/random_blob:
139
+ dd if=/dev/urandom bs=1M count=30 of=$@.$(pid)
140
+ mv $@.$(pid) $@
141
+
142
+ test-integration: $(T_sh)
95
143
 
96
144
  check: test-require test test-integration
97
145
  test-all: check
@@ -122,16 +170,16 @@ run_test = $(quiet_pre) \
122
170
 
123
171
  %.n: arg = $(subst .n,,$(subst --, -n ,$@))
124
172
  %.n: t = $(subst .n,$(log_suffix),$@)
125
- %.n: export PATH := $(test_prefix)/bin:$(PATH)
126
- %.n: export RUBYLIB := $(test_prefix)/lib:$(MYLIBS)
127
- %.n: $(test_prefix)/.stamp
173
+ %.n: export PATH := $(CURDIR)/$(tmp_bin):$(PATH)
174
+ %.n: export RUBYLIB := $(lib):$(RUBYLIB)
175
+ %.n: $(test_prereq)
128
176
  $(run_test)
129
177
 
130
178
  $(T): arg = $@
131
179
  $(T): t = $(subst .rb,$(log_suffix),$@)
132
- $(T): export PATH := $(test_prefix)/bin:$(PATH)
133
- $(T): export RUBYLIB := $(test_prefix)/lib:$(MYLIBS)
134
- $(T): $(test_prefix)/.stamp
180
+ $(T): export PATH := $(CURDIR)/$(tmp_bin):$(PATH)
181
+ $(T): export RUBYLIB := $(lib):$(RUBYLIB)
182
+ $(T): $(test_prereq)
135
183
  $(run_test)
136
184
 
137
185
  install: $(bins) $(ext)/unicorn_http.c
@@ -150,13 +198,21 @@ prep_setup_rb := @-$(RM) $(setup_rb_files);$(MAKE) -C $(ext) clean
150
198
 
151
199
  clean:
152
200
  -$(MAKE) -C $(ext) clean
153
- -$(MAKE) -C Documentation clean
154
201
  $(RM) $(ext)/Makefile
155
202
  $(RM) $(setup_rb_files) $(t_log)
156
- $(RM) -r $(test_prefix) man
203
+ $(RM) -r $(ext_pfx) man t/trash
204
+ $(RM) $(html1)
205
+
206
+ man1 := $(addprefix Documentation/, unicorn.1 unicorn_rails.1)
207
+ html1 := $(addsuffix .html, $(man1))
208
+ man : $(man1) | man/man1
209
+ $(INSTALL) -m 644 $(man1) man/man1
210
+
211
+ html : $(html1) | doc/man1
212
+ $(INSTALL) -m 644 $(html1) doc/man1
157
213
 
158
- man html:
159
- $(MAKE) -C Documentation install-$@
214
+ %.1.html: %.1
215
+ $(OLDDOC) man2html -o $@ ./$<
160
216
 
161
217
  pkg_extra := GIT-VERSION-FILE lib/unicorn/version.rb LATEST NEWS \
162
218
  $(ext)/unicorn_http.c $(man1_paths)
@@ -175,21 +231,21 @@ doc: .document $(ext)/unicorn_http.c man html .olddoc.yml $(PLACEHOLDERS)
175
231
  find bin lib -type f -name '*.rbc' -exec rm -f '{}' ';'
176
232
  $(RM) -r doc
177
233
  $(OLDDOC) prepare
178
- $(RDOC) -f oldweb
234
+ $(RDOC) -f dark216
179
235
  $(OLDDOC) merge
180
- install -m644 COPYING doc/COPYING
181
- install -m644 NEWS.atom.xml doc/NEWS.atom.xml
182
- install -m644 $(shell LC_ALL=C grep '^[A-Z]' .document) doc/
183
- install -m644 $(man1_paths) doc/
236
+ $(INSTALL) -m 644 COPYING doc/COPYING
237
+ $(INSTALL) -m 644 NEWS.atom.xml doc/NEWS.atom.xml
238
+ $(INSTALL) -m 644 $(shell LC_ALL=C grep '^[A-Z]' .document) doc/
239
+ $(INSTALL) -m 644 $(man1_paths) doc/
184
240
  tar cf - $$(git ls-files examples/) | (cd doc && tar xf -)
185
241
 
186
- # publishes docs to https://bogomips.org/unicorn/
242
+ # publishes docs to https://yhbt.net/unicorn/
187
243
  publish_doc:
188
244
  -git set-file-times
189
245
  $(MAKE) doc
190
246
  $(MAKE) doc_gz
191
247
  chmod 644 $$(find doc -type f)
192
- $(RSYNC) -av doc/ bogomips.org:/srv/bogomips/unicorn/
248
+ $(RSYNC) -av doc/ yhbt.net:/srv/yhbt/unicorn/
193
249
  git ls-files | xargs touch
194
250
 
195
251
  # Create gzip variants of the same timestamp as the original so nginx
@@ -221,9 +277,8 @@ gem: $(pkggem)
221
277
  install-gem: $(pkggem)
222
278
  gem install --local $(CURDIR)/$<
223
279
 
224
- $(pkggem): .manifest fix-perms
280
+ $(pkggem): .manifest fix-perms | pkg
225
281
  gem build $(rfpackage).gemspec
226
- mkdir -p pkg
227
282
  mv $(@F) $@
228
283
 
229
284
  $(pkgtgz): distdir = $(basename $@)
@@ -254,5 +309,4 @@ check-warnings:
254
309
  do $(RUBY) --disable-gems -d -W2 -c \
255
310
  $$i; done) | grep -v '^Syntax OK$$' || :
256
311
 
257
- .PHONY: .FORCE-GIT-VERSION-FILE doc $(T) $(slow_tests) man
258
- .PHONY: test-install
312
+ .PHONY: .FORCE-GIT-VERSION-FILE doc $(T) $(slow_tests) man $(T_sh) clean
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
- <tt>https://bogomips.org/unicorn-public/$MESSAGE_ID/</tt> if possible
60
+ <tt>https://yhbt.net/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
 
data/ISSUES CHANGED
@@ -1,9 +1,9 @@
1
1
  = Issues
2
2
 
3
- mailto:unicorn-public@bogomips.org is the best place to report bugs,
3
+ mailto:unicorn-public@yhbt.net is the best place to report bugs,
4
4
  submit patches and/or obtain support after you have searched the
5
- {email archives}[https://bogomips.org/unicorn-public/] and
6
- {documentation}[https://bogomips.org/unicorn/].
5
+ {email archives}[https://yhbt.net/unicorn-public/] and
6
+ {documentation}[https://yhbt.net/unicorn/].
7
7
 
8
8
  * No subscription will ever be required to email us
9
9
  * Cc: all participants in a thread or commit, as subscription is optional
@@ -12,12 +12,12 @@ submit patches and/or obtain support after you have searched the
12
12
  * Do not send HTML mail or images,
13
13
  they hurt reader privacy and will be flagged as spam
14
14
  * Anonymous and pseudonymous messages will ALWAYS be welcome
15
- * The email submission port (587) is enabled on the bogomips.org MX:
16
- https://bogomips.org/unicorn-public/20141004232241.GA23908@dcvr.yhbt.net/t/
15
+ * The email submission port (587) is enabled on the yhbt.net MX:
16
+ https://yhbt.net/unicorn-public/20141004232241.GA23908@dcvr.yhbt.net/t/
17
17
 
18
18
  We will never have a centralized or formal bug tracker. Instead we
19
19
  can interoperate with any bug tracker which can Cc: us plain-text to
20
- mailto:unicorn-public@bogomips.org This includes the Debian BTS
20
+ mailto:unicorn-public@yhbt.net This includes the Debian BTS
21
21
  at https://bugs.debian.org/unicorn and possibly others.
22
22
 
23
23
  If your issue is of a sensitive nature or you're just shy in public,
@@ -39,6 +39,7 @@ https://bugs.ruby-lang.org/ and discuss+fix them on the ruby-core
39
39
  list at mailto:ruby-core@ruby-lang.org
40
40
  Subscription to post is required to ruby-core, unfortunately:
41
41
  mailto:ruby-core-request@ruby-lang.org?subject=subscribe
42
+ Unofficial archives are available at: https://public-inbox.org/ruby-core/
42
43
 
43
44
  For uncommon bugs in Rack, we may forward bugs to
44
45
  mailto:rack-devel@googlegroups.com and discuss there.
@@ -46,6 +47,7 @@ Subscription (without any web UI or Google account) is possible via:
46
47
  mailto:rack-devel+subscribe@googlegroups.com
47
48
  Note: not everyone can use the proprietary bug tracker used by Rack,
48
49
  but their mailing list remains operational.
50
+ Unofficial archives are available at: https://public-inbox.org/rack-devel/
49
51
 
50
52
  Uncommon bugs we encounter in the Linux kernel should be Cc:-ed to the
51
53
  Linux kernel mailing list (LKML) at mailto:linux-kernel@vger.kernel.org
@@ -54,11 +56,12 @@ and subsystem maintainers such as mailto:netdev@vger.kernel.org
54
56
  involved with any problematic commits (including those in the
55
57
  Signed-off-by: and other trailer lines). No subscription is necessary,
56
58
  and the our mailing list follows the same conventions as LKML for
57
- interopability. There is a kernel.org Bugzilla instance, but it is
58
- ignored by most developers.
59
+ interopability. Archives are available at https://lore.kernel.org/lkml/
60
+ There is a kernel.org Bugzilla instance, but it is ignored by most.
59
61
 
60
62
  Likewise for any rare glibc bugs we might encounter, we should Cc:
61
63
  mailto:libc-alpha@sourceware.org
64
+ Unofficial archives are available at: https://public-inbox.org/libc-alpha/
62
65
  Keep in mind glibc upstream does use Bugzilla for tracking bugs:
63
66
  https://sourceware.org/bugzilla/
64
67
 
@@ -70,32 +73,27 @@ document distributed with git) on guidelines for patch submission.
70
73
 
71
74
  == Contact Info
72
75
 
73
- * public: mailto:unicorn-public@bogomips.org
74
- * nntp://news.gmane.org/gmane.comp.lang.ruby.unicorn.general
76
+ * public: mailto:unicorn-public@yhbt.net
77
+ * nntp://news.gmane.io/gmane.comp.lang.ruby.unicorn.general
75
78
  * nntp://news.public-inbox.org/inbox.comp.lang.ruby.unicorn
76
- * https://bogomips.org/unicorn-public/
79
+ * imaps://news.public-inbox.org/inbox.comp.lang.ruby.unicorn.0
80
+ * https://yhbt.net/unicorn-public/
77
81
  * http://ou63pmih66umazou.onion/unicorn-public/
78
82
 
79
83
  Mailing list subscription is optional, so Cc: all participants.
80
84
 
81
- You can follow along via NNTP (read-only):
85
+ You can follow along via NNTP or IMAP (read-only):
82
86
 
83
87
  nntp://news.public-inbox.org/inbox.comp.lang.ruby.unicorn
84
- nntp://news.gmane.org/gmane.comp.lang.ruby.unicorn.general
88
+ nntp://news.gmane.io/gmane.comp.lang.ruby.unicorn.general
89
+ imaps://news.public-inbox.org/inbox.comp.lang.ruby.unicorn.0
90
+ imap://ou63pmih66umazou.onion/inbox.comp.lang.ruby.unicorn.0
85
91
 
86
92
  Or Atom feeds:
87
93
 
88
- https://bogomips.org/unicorn-public/new.atom
94
+ https://yhbt.net/unicorn-public/new.atom
89
95
  http://ou63pmih66umazou.onion/unicorn-public/new.atom
90
96
 
91
- The HTML archives at https://bogomips.org/unicorn-public/
97
+ The HTML archives at https://yhbt.net/unicorn-public/
92
98
  also has links to per-thread Atom feeds and downloadable
93
99
  mboxes.
94
-
95
- You may optionally subscribe via plain-text email:
96
-
97
- mailto:unicorn-public+subscribe@bogomips.org
98
- (and confirming the auto-reply)
99
-
100
- Just keep in mind we suck at delivering email, so using NNTP,
101
- 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
- https://bogomips.org/unicorn-public/CAHBuKRj09FdxAgzsefJWotexw-7JYZGJMtgUp_dhjPz9VbKD6Q@mail.gmail.com/
12
+ https://yhbt.net/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: https://bogomips.org/unicorn-public/20091014221552.GA30624@dcvr.yhbt.net/
63
+ ref: https://yhbt.net/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,13 +1,23 @@
1
- === unicorn 5.3.1 / 2017-10-03 19:03 UTC
1
+ === unicorn 5.5.0 / 2019-03-04 00:41 UTC
2
2
 
3
- This release fixes an occasional GC problem introduced in v5.3.0
4
- to reduce global variable overhead (commit 979ebcf91705709b)
3
+ Mostly identical to 5.5.0.pre1, which I didn't hear any feedback
4
+ from:
5
5
 
6
- Thanks to Xuanzhong Wei for the patch which lead to this release:
6
+ https://bogomips.org/unicorn-public/20181220222842.GA27382@dcvr/
7
7
 
8
- https://bogomips.org/unicorn-public/20171003182054.76392-1-azrlew@gmail.com/T/#u
9
- https://bogomips.org/unicorn-public/20171003145718.30404-1-azrlew@gmail.com/T/#u
8
+ > Jeremy Evans contributed the "default_middleware" configuration option:
9
+ >
10
+ > https://bogomips.org/unicorn-public/20180913192055.GD48926@jeremyevans.local/
11
+ >
12
+ > Jeremy also contributed the ability to use separate groups for the process
13
+ > and log files:
14
+ >
15
+ > https://bogomips.org/unicorn-public/20180913192449.GE48926@jeremyevans.local/
16
+ >
17
+ > There's also a couple of uninteresting minor optimizations and
18
+ > documentation additions.
10
19
 
11
- Xuanzhong Wei (1):
12
- fix GC issue on rb_global_variable array
20
+ Otherwise, there's one extra change to use
21
+ rb_gc_register_mark_object which is finally a documented part of
22
+ the Ruby C-API, but has existed since the 1.9 days.
13
23
 
data/LICENSE CHANGED
@@ -8,8 +8,8 @@ any later version. We currently prefer the GPLv3 or later for
8
8
  derivative works, but the GPLv2 is fine.
9
9
 
10
10
  The complete texts of the GPLv2 and GPLv3 are below:
11
- GPLv2 - http://www.gnu.org/licenses/gpl-2.0.txt
12
- GPLv3 - http://www.gnu.org/licenses/gpl-3.0.txt
11
+ GPLv2 - https://www.gnu.org/licenses/gpl-2.0.txt
12
+ GPLv3 - https://www.gnu.org/licenses/gpl-3.0.txt
13
13
 
14
14
  You may (against our _preference_) also use the Ruby 1.8 license terms
15
15
  which we inherited from the original Mongrel project when we forked it:
data/Links CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  If you're interested in unicorn, you may be interested in some of the projects
4
4
  listed below. If you have any links to add/change/remove, please tell us at
5
- mailto:unicorn-public@bogomips.org!
5
+ mailto:unicorn-public@yhbt.net!
6
6
 
7
7
  == Disclaimer
8
8
 
@@ -10,7 +10,7 @@ The unicorn project is not responsible for the content in these links.
10
10
  Furthermore, the unicorn project has never, does not and will never endorse:
11
11
 
12
12
  * any for-profit entities or services
13
- * any non-{Free Software}[http://www.gnu.org/philosophy/free-sw.html]
13
+ * any non-{Free Software}[https://www.gnu.org/philosophy/free-sw.html]
14
14
 
15
15
  The existence of these links does not imply endorsement of any entities
16
16
  or services behind them.
@@ -23,34 +23,36 @@ 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}[https://bogomips.org/raindrops/] - real-time stats for
26
+ * {raindrops}[https://yhbt.net/raindrops/] - real-time stats for
27
27
  preforking Rack servers
28
28
 
29
- * {UnXF}[https://bogomips.org/unxf/] Un-X-Forward* the Rack environment,
29
+ * {UnXF}[https://yhbt.net/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
33
33
 
34
- * {Rack}[http://rack.github.io/] - a minimal interface between webservers
34
+ * {Rack}[https://rack.github.io/] - a minimal interface between webservers
35
35
  supporting Ruby and Ruby frameworks
36
36
 
37
37
  * {Ruby}[https://www.ruby-lang.org/en/] - the programming language of
38
38
  Rack and unicorn
39
39
 
40
- * {nginx}[http://nginx.org/] (Free versions) -
40
+ * {nginx}[https://nginx.org/] (Free versions) -
41
41
  the reverse proxy for use with unicorn
42
42
 
43
43
  === Derivatives
44
44
 
45
- * {Green Unicorn}[http://gunicorn.org/] - a Python version of unicorn
45
+ * {Green Unicorn}[https://gunicorn.org/] - a Python version of unicorn
46
46
 
47
- * {Starman}[http://search.cpan.org/dist/Starman/] - Plack/PSGI version
47
+ * {Starman}[https://metacpan.org/release/Starman/] - Plack/PSGI version
48
48
  of unicorn
49
49
 
50
50
  === Prior Work
51
51
 
52
- * {Mongrel}[http://rubygems.org/gems/mongrel] - the awesome webserver
53
- unicorn is based on
52
+ * {Mongrel}[https://rubygems.org/gems/mongrel] - the awesome webserver
53
+ unicorn is based on. A historical archive of the mongrel dev list
54
+ featuring early discussions of unicorn is available at:
55
+ https://yhbt.net/mongrel-devel/
54
56
 
55
- * {david}[https://bogomips.org/david.git] - a tool to explain why you need
57
+ * {david}[https://yhbt.net/david.git] - a tool to explain why you need
56
58
  nginx in front of unicorn
data/NEWS CHANGED
@@ -1,3 +1,97 @@
1
+ === unicorn 5.5.0 / 2019-03-04 00:41 UTC
2
+
3
+ Mostly identical to 5.5.0.pre1, which I didn't hear any feedback
4
+ from:
5
+
6
+ https://bogomips.org/unicorn-public/20181220222842.GA27382@dcvr/
7
+
8
+ > Jeremy Evans contributed the "default_middleware" configuration option:
9
+ >
10
+ > https://bogomips.org/unicorn-public/20180913192055.GD48926@jeremyevans.local/
11
+ >
12
+ > Jeremy also contributed the ability to use separate groups for the process
13
+ > and log files:
14
+ >
15
+ > https://bogomips.org/unicorn-public/20180913192449.GE48926@jeremyevans.local/
16
+ >
17
+ > There's also a couple of uninteresting minor optimizations and
18
+ > documentation additions.
19
+
20
+ Otherwise, there's one extra change to use
21
+ rb_gc_register_mark_object which is finally a documented part of
22
+ the Ruby C-API, but has existed since the 1.9 days.
23
+
24
+ === unicorn 5.5.0.pre1 / 2018-12-20 20:11 UTC
25
+
26
+ Jeremy Evans contributed the "default_middleware" configuration option:
27
+
28
+ https://bogomips.org/unicorn-public/20180913192055.GD48926@jeremyevans.local/
29
+
30
+ Jeremy also contributed the ability to use separate groups for the process
31
+ and log files:
32
+
33
+ https://bogomips.org/unicorn-public/20180913192449.GE48926@jeremyevans.local/
34
+
35
+ There's also a couple of uninteresting minor optimizations and
36
+ documentation additions.
37
+
38
+ Eric Wong (10):
39
+ remove random seed reset atfork
40
+ use IO#wait instead of kgio_wait_readable
41
+ Merge branch '5.4-stable'
42
+ shrink pipes under Linux
43
+ socket_helper: add hint for FreeBSD users for accf_http(9)
44
+ tests: ensure -N/--no-default-middleware not supported in config.ru
45
+ doc: update more URLs to use HTTPS and avoid redirects
46
+ deduplicate strings VM-wide in Ruby 2.5+
47
+ doc/ISSUES: add links to git clone-able mail archives of our dependencies
48
+ README: minor updates and additional disclaimer
49
+
50
+ Jeremy Evans (2):
51
+ Make Worker#user support different process primary group and log file group
52
+ Support default_middleware configuration option
53
+
54
+ === unicorn 5.4.1 / 2018-07-23 17:13 UTC
55
+
56
+ This release quiets some warnings for Ruby 2.6 preview releases
57
+ and enables tests to pass under Ruby 1.9.3. Otherwise, nothing
58
+ interesting for Ruby 2.0..2.5 users. *YAWN*
59
+
60
+ Eric Wong (1):
61
+ quiet some mismatched indentation warnings
62
+
63
+ Fumiaki MATSUSHIMA (1):
64
+ Use IO#wait instead to fix test for Ruby 1.9
65
+
66
+ === unicorn 5.4.0 / 2017-12-23 23:33 UTC
67
+
68
+ Rack hijack support improves as the app code can capture and use
69
+ the Rack `env' privately without copying it (to avoid clobbering
70
+ by another client). Thanks to Sam Saffron for reporting and
71
+ testing this new feature:
72
+ https://bogomips.org/unicorn-public/CAAtdryPG3nLuyo0jxfYW1YHu1Q+ZpkLkd4KdWC8vA46B5haZxw@mail.gmail.com/T/
73
+
74
+ We also now support $DEBUG being set by the Rack app (instead of
75
+ relying on the "-d" CLI switch). Thanks to James P Robinson Jr
76
+ for reporting this bug:
77
+ https://bogomips.org/unicorn-public/D6324CB4.7BC3E%25james.robinson3@cigna.com/T/
78
+ (Coincidentally, this fix will be irrelevant for Ruby 2.5
79
+ which requires 'pp' by default)
80
+
81
+ There's a few minor test cleanups and documentation updates, too.
82
+
83
+ All commits since v5.3.1 (2017-10-03):
84
+
85
+ reduce method calls with String#start_with?
86
+ require 'pp' if $DEBUG is set by Rack app
87
+ avoid reusing env on hijack
88
+ tests: cleanup some unused variable warnings
89
+ ISSUES: add a note about Debian BTS interopability
90
+
91
+ Roughly all mailing discussions since the last release:
92
+
93
+ https://bogomips.org/unicorn-public/?q=d:20171004..20171223
94
+
1
95
  === unicorn 5.3.1 / 2017-10-03 19:03 UTC
2
96
 
3
97
  This release fixes an occasional GC problem introduced in v5.3.0