unicorn-simon 0.0.1
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 +7 -0
- data/.CHANGELOG.old +25 -0
- data/.document +28 -0
- data/.gitattributes +5 -0
- data/.gitignore +25 -0
- data/.mailmap +26 -0
- data/.manifest +156 -0
- data/.olddoc.yml +18 -0
- data/Application_Timeouts +77 -0
- data/CONTRIBUTORS +35 -0
- data/COPYING +674 -0
- data/DESIGN +95 -0
- data/Documentation/.gitignore +5 -0
- data/Documentation/GNUmakefile +30 -0
- data/Documentation/unicorn.1.txt +187 -0
- data/Documentation/unicorn_rails.1.txt +175 -0
- data/FAQ +70 -0
- data/GIT-VERSION-FILE +1 -0
- data/GIT-VERSION-GEN +39 -0
- data/GNUmakefile +253 -0
- data/HACKING +120 -0
- data/ISSUES +90 -0
- data/KNOWN_ISSUES +79 -0
- data/LATEST +30 -0
- data/LICENSE +67 -0
- data/Links +56 -0
- data/NEWS +2465 -0
- data/PHILOSOPHY +139 -0
- data/README +138 -0
- data/Rakefile +16 -0
- data/SIGNALS +123 -0
- data/Sandbox +104 -0
- data/TODO +3 -0
- data/TUNING +119 -0
- data/archive/.gitignore +3 -0
- data/archive/slrnpull.conf +4 -0
- data/bin/unicorn +126 -0
- data/bin/unicorn_rails +209 -0
- data/examples/big_app_gc.rb +2 -0
- data/examples/echo.ru +27 -0
- data/examples/init.sh +102 -0
- data/examples/logger_mp_safe.rb +25 -0
- data/examples/logrotate.conf +44 -0
- data/examples/nginx.conf +155 -0
- data/examples/unicorn.conf.minimal.rb +13 -0
- data/examples/unicorn.conf.rb +110 -0
- data/examples/unicorn.socket +11 -0
- data/examples/unicorn@.service +33 -0
- data/ext/unicorn_http/CFLAGS +13 -0
- data/ext/unicorn_http/c_util.h +124 -0
- data/ext/unicorn_http/common_field_optimization.h +111 -0
- data/ext/unicorn_http/ext_help.h +62 -0
- data/ext/unicorn_http/extconf.rb +11 -0
- data/ext/unicorn_http/global_variables.h +97 -0
- data/ext/unicorn_http/httpdate.c +78 -0
- data/ext/unicorn_http/unicorn_http.c +4274 -0
- data/ext/unicorn_http/unicorn_http.rl +980 -0
- data/ext/unicorn_http/unicorn_http_common.rl +76 -0
- data/lib/unicorn/app/old_rails/static.rb +59 -0
- data/lib/unicorn/app/old_rails.rb +35 -0
- data/lib/unicorn/cgi_wrapper.rb +147 -0
- data/lib/unicorn/configurator.rb +664 -0
- data/lib/unicorn/const.rb +21 -0
- data/lib/unicorn/http_request.rb +122 -0
- data/lib/unicorn/http_response.rb +60 -0
- data/lib/unicorn/http_server.rb +824 -0
- data/lib/unicorn/launcher.rb +62 -0
- data/lib/unicorn/oob_gc.rb +82 -0
- data/lib/unicorn/preread_input.rb +33 -0
- data/lib/unicorn/socket_helper.rb +195 -0
- data/lib/unicorn/stream_input.rb +146 -0
- data/lib/unicorn/tee_input.rb +133 -0
- data/lib/unicorn/tmpio.rb +27 -0
- data/lib/unicorn/util.rb +90 -0
- data/lib/unicorn/version.rb +1 -0
- data/lib/unicorn/worker.rb +140 -0
- data/lib/unicorn.rb +123 -0
- data/man/man1/unicorn.1 +221 -0
- data/man/man1/unicorn_rails.1 +212 -0
- data/setup.rb +1586 -0
- data/t/.gitignore +4 -0
- data/t/GNUmakefile +74 -0
- data/t/README +42 -0
- data/t/bin/content-md5-put +36 -0
- data/t/bin/sha1sum.rb +17 -0
- data/t/bin/unused_listen +40 -0
- data/t/broken-app.ru +12 -0
- data/t/detach.ru +11 -0
- data/t/env.ru +3 -0
- data/t/fails-rack-lint.ru +5 -0
- data/t/heartbeat-timeout.ru +12 -0
- data/t/hijack.ru +43 -0
- data/t/listener_names.ru +4 -0
- data/t/my-tap-lib.sh +201 -0
- data/t/oob_gc.ru +20 -0
- data/t/oob_gc_path.ru +20 -0
- data/t/pid.ru +3 -0
- data/t/preread_input.ru +17 -0
- data/t/rack-input-tests.ru +21 -0
- data/t/t0000-http-basic.sh +50 -0
- data/t/t0001-reload-bad-config.sh +53 -0
- data/t/t0002-config-conflict.sh +49 -0
- data/t/t0002-parser-error.sh +94 -0
- data/t/t0003-working_directory.sh +51 -0
- data/t/t0004-heartbeat-timeout.sh +69 -0
- data/t/t0004-working_directory_broken.sh +24 -0
- data/t/t0005-working_directory_app.rb.sh +40 -0
- data/t/t0006-reopen-logs.sh +83 -0
- data/t/t0006.ru +13 -0
- data/t/t0007-working_directory_no_embed_cli.sh +44 -0
- data/t/t0008-back_out_of_upgrade.sh +110 -0
- data/t/t0009-broken-app.sh +56 -0
- data/t/t0009-winch_ttin.sh +59 -0
- data/t/t0010-reap-logging.sh +55 -0
- data/t/t0011-active-unix-socket.sh +79 -0
- data/t/t0012-reload-empty-config.sh +85 -0
- data/t/t0013-rewindable-input-false.sh +24 -0
- data/t/t0013.ru +12 -0
- data/t/t0014-rewindable-input-true.sh +24 -0
- data/t/t0014.ru +12 -0
- data/t/t0015-configurator-internals.sh +25 -0
- data/t/t0018-write-on-close.sh +23 -0
- data/t/t0019-max_header_len.sh +49 -0
- data/t/t0020-at_exit-handler.sh +49 -0
- data/t/t0021-process_detach.sh +29 -0
- data/t/t0022-listener_names-preload_app.sh +32 -0
- data/t/t0100-rack-input-tests.sh +124 -0
- data/t/t0116-client_body_buffer_size.sh +80 -0
- data/t/t0116.ru +16 -0
- data/t/t0200-rack-hijack.sh +30 -0
- data/t/t0300-no-default-middleware.sh +20 -0
- data/t/t9000-preread-input.sh +48 -0
- data/t/t9001-oob_gc.sh +47 -0
- data/t/t9002-oob_gc-path.sh +75 -0
- data/t/test-lib.sh +128 -0
- data/t/write-on-close.ru +11 -0
- data/test/aggregate.rb +15 -0
- data/test/benchmark/README +50 -0
- data/test/benchmark/dd.ru +18 -0
- data/test/benchmark/stack.ru +8 -0
- data/test/exec/README +5 -0
- data/test/exec/test_exec.rb +1099 -0
- data/test/test_helper.rb +298 -0
- data/test/unit/test_configurator.rb +175 -0
- data/test/unit/test_droplet.rb +28 -0
- data/test/unit/test_http_parser.rb +886 -0
- data/test/unit/test_http_parser_ng.rb +633 -0
- data/test/unit/test_request.rb +182 -0
- data/test/unit/test_response.rb +111 -0
- data/test/unit/test_server.rb +268 -0
- data/test/unit/test_signals.rb +188 -0
- data/test/unit/test_socket_helper.rb +197 -0
- data/test/unit/test_stream_input.rb +203 -0
- data/test/unit/test_tee_input.rb +304 -0
- data/test/unit/test_upload.rb +306 -0
- data/test/unit/test_util.rb +105 -0
- data/unicorn.gemspec +50 -0
- metadata +310 -0
data/NEWS
ADDED
|
@@ -0,0 +1,2465 @@
|
|
|
1
|
+
=== unicorn 5.2.0 / 2016-10-31 20:00 UTC
|
|
2
|
+
|
|
3
|
+
Most notably, this release allows us to support requests with
|
|
4
|
+
lines delimited by LF-only, as opposed to the standard CRLF
|
|
5
|
+
pair and allowed by RFC 2616 sec 19.3.
|
|
6
|
+
|
|
7
|
+
Thanks to Mishael A Sibiryakov for the explanation and change:
|
|
8
|
+
|
|
9
|
+
https://bogomips.org/unicorn-public/1476954332.1736.156.camel@junki.org/
|
|
10
|
+
|
|
11
|
+
Thanks to Let's Encrypt, the website also moves to HTTPS
|
|
12
|
+
<https://bogomips.org/unicorn/> to improve reader privacy. The
|
|
13
|
+
"unicorn.bogomips.org" subdomain will be retired soon to reduce
|
|
14
|
+
subjectAltName bloat and speed up certificate renewals.
|
|
15
|
+
|
|
16
|
+
There's also the usual round of documentation and example
|
|
17
|
+
updates, too.
|
|
18
|
+
|
|
19
|
+
Eric Wong (7):
|
|
20
|
+
examples/init.sh: update to reduce upgrade raciness
|
|
21
|
+
doc: systemd should only kill master in example
|
|
22
|
+
examples/logrotate.conf: update example for systemd
|
|
23
|
+
doc: update gmane URLs to point to our own archives
|
|
24
|
+
relocate website to https://bogomips.org/unicorn/
|
|
25
|
+
TODO: remove Rack 2.x item
|
|
26
|
+
build: "install-gem" target avoids network
|
|
27
|
+
|
|
28
|
+
Mishael A Sibiryakov (1):
|
|
29
|
+
Add some tolerance (RFC2616 sec. 19.3)
|
|
30
|
+
|
|
31
|
+
=== unicorn 5.1.0 - rack is optional, again / 2016-04-01 00:35 UTC
|
|
32
|
+
|
|
33
|
+
Note: no code changes since 5.1.0.pre1 from January.^WNo, wait,
|
|
34
|
+
last minute performance improvement added today. See below.
|
|
35
|
+
|
|
36
|
+
The big change is rack is not required (but still recommended).
|
|
37
|
+
Applications are expected to depend on rack on their own so they can
|
|
38
|
+
specify the version of rack they prefer without unicorn pulling
|
|
39
|
+
in a newer, potentially incompatible version.
|
|
40
|
+
|
|
41
|
+
unicorn will always attempt to work with multiple versions of rack
|
|
42
|
+
as practical.
|
|
43
|
+
|
|
44
|
+
The HTTP parser also switched to using the TypedData C-API for
|
|
45
|
+
extra type safety and memory usage accounting support in the
|
|
46
|
+
'objspace' extension.
|
|
47
|
+
|
|
48
|
+
Thanks to Adam Duke to bringing the rack change to our attention
|
|
49
|
+
and Aaron Patterson for helping with the matter.
|
|
50
|
+
|
|
51
|
+
Last minute change: we now support the new leftpad() syscall under
|
|
52
|
+
Linux for major performance and security improvement:
|
|
53
|
+
|
|
54
|
+
http://mid.gmane.org/1459463613-32473-1-git-send-email-richard@nod.at
|
|
55
|
+
|
|
56
|
+
8^H9 changes since 5.0.1:
|
|
57
|
+
|
|
58
|
+
http: TypedData C-API conversion
|
|
59
|
+
various documentation updates
|
|
60
|
+
doc: bump olddoc to ~> 1.2 for extra NNTP URL
|
|
61
|
+
rack is optional at runtime, required for dev
|
|
62
|
+
doc update for ClientShutdown exceptions class
|
|
63
|
+
unicorn 5.1.0.pre1 - rack is optional, again
|
|
64
|
+
doc: reference --keep-file-descriptors for "bundle exec"
|
|
65
|
+
doc: further trimming to reduce noise
|
|
66
|
+
use leftpad Linux syscall for speed!
|
|
67
|
+
|
|
68
|
+
=== unicorn 5.1.0.pre1 - rack is optional, again / 2016-01-27 23:08 UTC
|
|
69
|
+
|
|
70
|
+
The big change is rack is not required (but still recommended).
|
|
71
|
+
Applications are expected to depend on rack on their own so they can
|
|
72
|
+
specify the version of rack they prefer without unicorn pulling
|
|
73
|
+
in a newer, potentially incompatible version.
|
|
74
|
+
|
|
75
|
+
unicorn will always attempt to work with multiple versions of rack
|
|
76
|
+
as practical.
|
|
77
|
+
|
|
78
|
+
The HTTP parser also switched to using the TypedData C-API for
|
|
79
|
+
extra type safety and memory usage accounting support in the
|
|
80
|
+
'objspace' extension.
|
|
81
|
+
|
|
82
|
+
Thanks to Adam Duke to bringing the rack change to our attention
|
|
83
|
+
and Aaron Patterson for helping with the matter.
|
|
84
|
+
|
|
85
|
+
There might be more documentation-related changes before 5.1.0
|
|
86
|
+
final. I am considering dropping pandoc from manpage generation
|
|
87
|
+
and relying on pod2man (from Perl) because it has a wider install
|
|
88
|
+
base.
|
|
89
|
+
|
|
90
|
+
5 changes since v5.0.1:
|
|
91
|
+
|
|
92
|
+
http: TypedData C-API conversion
|
|
93
|
+
various documentation updates
|
|
94
|
+
doc: bump olddoc to ~> 1.2 for extra NNTP URL
|
|
95
|
+
rack is optional at runtime, required for dev
|
|
96
|
+
doc update for ClientShutdown exceptions class
|
|
97
|
+
|
|
98
|
+
=== unicorn 5.0.1 - continuing to violate Rack SPEC / 2015-11-17 22:44 UTC
|
|
99
|
+
|
|
100
|
+
Once again, we allow nil values in response headers. We've had
|
|
101
|
+
this bug since March 2009, and thus cannot expect existing
|
|
102
|
+
applications and middlewares running unicorn to fix this.
|
|
103
|
+
|
|
104
|
+
Unfortunately, supporting this bug contributes to application
|
|
105
|
+
server lock-in, but at least we'll document it as such.
|
|
106
|
+
|
|
107
|
+
Thanks to Owen Ou <o@heroku.com> for reporting this regression:
|
|
108
|
+
|
|
109
|
+
http://bogomips.org/unicorn-public/CAO47=rJa=zRcLn_Xm4v2cHPr6c0UswaFC_omYFEH+baSxHOWKQ@mail.gmail.com/
|
|
110
|
+
|
|
111
|
+
Additionally, systemd examples are now in the examples/ directory
|
|
112
|
+
based on a post by Christos Trochalakis <yatiohi@ideopolis.gr>:
|
|
113
|
+
|
|
114
|
+
http://bogomips.org/unicorn-public/20150708130821.GA1361@luke.ws.skroutz.gr/
|
|
115
|
+
|
|
116
|
+
=== unicorn 5.0.0 - most boring major release. EVER. / 2015-11-01 08:48 UTC
|
|
117
|
+
|
|
118
|
+
An evolutionary dead-end since its announcement[1] nearly six years
|
|
119
|
+
ago, this old-fashioned preforker has had enough bugs and missteps
|
|
120
|
+
that it's managed to hit version 5!
|
|
121
|
+
|
|
122
|
+
I wish I could say unicorn 5 is leaps and bounds better than 4, but
|
|
123
|
+
it is not. This major version change allows us to drop some cruft
|
|
124
|
+
and unused features which accumulated over the years, resulting in
|
|
125
|
+
several kilobytes of memory saved[2]!
|
|
126
|
+
|
|
127
|
+
Compatibility:
|
|
128
|
+
|
|
129
|
+
* The horrible, proprietary (:P) "Status:" response header is
|
|
130
|
+
finally gone, saving at least 16 precious bytes in every HTTP
|
|
131
|
+
response. This should make it easier to write custom HTTP clients
|
|
132
|
+
which are compatible across all HTTP servers. It will hopefully
|
|
133
|
+
make migrating between different Rack servers easier for new
|
|
134
|
+
projects.
|
|
135
|
+
|
|
136
|
+
* Ruby 1.8 support removed. Ruby 1.9.3 is currently the earliest
|
|
137
|
+
supported version. However, expect minor, likely-unnoticeable
|
|
138
|
+
performance regressions if you use Ruby 2.1 or earlier. Going
|
|
139
|
+
forward, unicorn will favor the latest version (currently 2.2) of
|
|
140
|
+
the mainline Ruby implementation, potentially sacrificing
|
|
141
|
+
performance on older Rubies.
|
|
142
|
+
|
|
143
|
+
* Some internal, undocumented features and APIs used by
|
|
144
|
+
derivative servers are gone; removing bloat and slightly lowering
|
|
145
|
+
memory use. We have never and will never endorse the use of any
|
|
146
|
+
applications or middleware with a dependency on unicorn,
|
|
147
|
+
applications should be written for Rack instead.
|
|
148
|
+
Note: Rainbows! 5.0 will be released next week or so to be
|
|
149
|
+
compatible with unicorn 5.x
|
|
150
|
+
|
|
151
|
+
New features:
|
|
152
|
+
|
|
153
|
+
* sd_listen_fds(3) emulation added for systemd compatibility.
|
|
154
|
+
You may now stop using PID files and other process monitoring
|
|
155
|
+
software when using systemd.
|
|
156
|
+
|
|
157
|
+
* Newly-set TCP socket options are now applied to inherited sockets.
|
|
158
|
+
|
|
159
|
+
* Dynamic changes in the application to Rack::Utils::HTTP_STATUS
|
|
160
|
+
hash is now supported; allowing users to set custom status lines
|
|
161
|
+
in Rack to be reflected in unicorn. This feature causes a minor
|
|
162
|
+
performance regression, but is made up for Ruby 2.2 users with
|
|
163
|
+
other optimizations.
|
|
164
|
+
|
|
165
|
+
* The monotonic clock is used under Ruby 2.1+, making the
|
|
166
|
+
timeout feature immune to system clock changes.
|
|
167
|
+
|
|
168
|
+
As unicorn may be used anonymously without registration, the
|
|
169
|
+
project is committed to supporting anonymous and pseudonymous
|
|
170
|
+
help requests, contributions and feedback via plain-text mail to:
|
|
171
|
+
|
|
172
|
+
unicorn-public@bogomips.org
|
|
173
|
+
|
|
174
|
+
The mail submission port (587) is open to those behind firewalls
|
|
175
|
+
and allows access via Tor and anonymous remailers.
|
|
176
|
+
Archives are accessible via: http://bogomips.org/unicorn-public/
|
|
177
|
+
and mirrored to various other places, so you do not need to use
|
|
178
|
+
a valid address when posting.
|
|
179
|
+
|
|
180
|
+
Finally, rest assured the core design of unicorn will never change.
|
|
181
|
+
It will never use new-fangled things like threads, kqueue or epoll;
|
|
182
|
+
but will always remain a preforking server serving one client
|
|
183
|
+
per-process.
|
|
184
|
+
|
|
185
|
+
[1] http://mid.gmane.org/20090211230457.GB22926@dcvr.yhbt.net
|
|
186
|
+
[2] this would've been like, totally gnarly in the 80s!
|
|
187
|
+
|
|
188
|
+
=== unicorn 5.0.0.pre2 - another prerelease! / 2015-07-06 21:37 UTC
|
|
189
|
+
|
|
190
|
+
There is a minor TCP socket options are now applied to inherited
|
|
191
|
+
sockets, and we have native support for inheriting sockets from
|
|
192
|
+
systemd (by emulating the sd_listen_fds(3) function).
|
|
193
|
+
|
|
194
|
+
Dynamic changes in the application to Rack::Utils::HTTP_STATUS
|
|
195
|
+
codes is now supported, so you can use your own custom status
|
|
196
|
+
lines.
|
|
197
|
+
|
|
198
|
+
Ruby 2.2 and later is now favored for performance.
|
|
199
|
+
Optimizations by using constants which made sense in earlier
|
|
200
|
+
versions of Ruby are gone: so users of old Ruby versions
|
|
201
|
+
will see performance regressions. Ruby 2.2 users should
|
|
202
|
+
see the same or better performance, and we have less code
|
|
203
|
+
as a result.
|
|
204
|
+
|
|
205
|
+
* doc: update some invalid URLs
|
|
206
|
+
* apply TCP socket options on inherited sockets
|
|
207
|
+
* reflect changes in Rack::Utils::HTTP_STATUS_CODES
|
|
208
|
+
* reduce constants and optimize for Ruby 2.2
|
|
209
|
+
* http_response: reduce size of multi-line header path
|
|
210
|
+
* emulate sd_listen_fds for systemd support
|
|
211
|
+
* test/unit/test_response.rb: compatibility with older test-unit
|
|
212
|
+
|
|
213
|
+
This also includes all changes in unicorn 5.0.0.pre1:
|
|
214
|
+
|
|
215
|
+
http://bogomips.org/unicorn-public/m/20150615225652.GA16164@dcvr.yhbt.net.html
|
|
216
|
+
|
|
217
|
+
=== unicorn 5.0.0.pre1 - incompatible changes! / 2015-06-15 22:49 UTC
|
|
218
|
+
|
|
219
|
+
This release finally drops Ruby 1.8 support and requires Ruby 1.9.3
|
|
220
|
+
or later. The horrible "Status:" header in our HTTP response is
|
|
221
|
+
finally gone, saving at least 16 precious bytes in every single HTTP
|
|
222
|
+
response.
|
|
223
|
+
|
|
224
|
+
Under Ruby 2.1 and later, the monotonic clock is used for timeout
|
|
225
|
+
handling for better accuracy.
|
|
226
|
+
|
|
227
|
+
Several experimental, unused and undocumented features are removed.
|
|
228
|
+
|
|
229
|
+
There's also tiny, minor performance and memory improvements from
|
|
230
|
+
dropping 1.8 compatibility, but probably nothing noticeable on a
|
|
231
|
+
typical real-life (bloated) app.
|
|
232
|
+
|
|
233
|
+
The biggest performance improvement we made was to our website by
|
|
234
|
+
switching to olddoc. Depending on connection speed, latency, and
|
|
235
|
+
renderer performance, it typically loads two to four times faster.
|
|
236
|
+
|
|
237
|
+
Finally, for the billionth time: unicorn must never be exposed
|
|
238
|
+
to slow clients, as it will never ever use new-fangled things
|
|
239
|
+
like non-blocking socket I/O, threads, epoll or kqueue. unicorn
|
|
240
|
+
must be used with a fully-buffering reverse proxy such as nginx
|
|
241
|
+
for slow clients.
|
|
242
|
+
|
|
243
|
+
* ISSUES: update with mailing list subscription
|
|
244
|
+
* GIT-VERSION-GEN: start 5.0.0 development
|
|
245
|
+
* http: remove xftrust options
|
|
246
|
+
* FAQ: add entry for Rails autoflush_log
|
|
247
|
+
* dev: remove isolate dependency
|
|
248
|
+
* unicorn.gemspec: depend on test-unit 3.0
|
|
249
|
+
* http_response: remove Status: header
|
|
250
|
+
* remove RubyForge and Freecode references
|
|
251
|
+
* remove mongrel.rubyforge.org references
|
|
252
|
+
* http: remove the keepalive requests limit
|
|
253
|
+
* http: reduce parser from 72 to 56 bytes on 64-bit
|
|
254
|
+
* examples: add run_once to before_fork hook example
|
|
255
|
+
* worker: remove old tmp accessor
|
|
256
|
+
* http_server: save 450+ bytes of memory on x86-64
|
|
257
|
+
* t/t0002-parser-error.sh: relax test for rack 1.6.0
|
|
258
|
+
* remove SSL support
|
|
259
|
+
* tmpio: drop the "size" method
|
|
260
|
+
* switch docs + website to olddoc
|
|
261
|
+
* README: clarify/reduce references to unicorn_rails
|
|
262
|
+
* gemspec: fixup olddoc migration
|
|
263
|
+
* use the monotonic clock under Ruby 2.1+
|
|
264
|
+
* http: -Wshorten-64-to-32 warnings on clang
|
|
265
|
+
* remove old inetd+git examples and exec_cgi
|
|
266
|
+
* http: standalone require + reduction in binary size
|
|
267
|
+
* GNUmakefile: fix clean gem build + reduce build cruft
|
|
268
|
+
* socket_helper: reduce constant lookups and caching
|
|
269
|
+
* remove 1.8, <= 1.9.1 fallback for missing IO#autoclose=
|
|
270
|
+
* favor IO#close_on_exec= over fcntl in 1.9+
|
|
271
|
+
* use require_relative to reduce syscalls at startup
|
|
272
|
+
* doc: update support status for Ruby versions
|
|
273
|
+
* fix uninstalled testing and reduce require paths
|
|
274
|
+
* test_socket_helper: do not depend on SO_REUSEPORT
|
|
275
|
+
* favor "a.b(&:c)" form over "a.b { |x| x.c }"
|
|
276
|
+
* ISSUES: add section for bugs in other projects
|
|
277
|
+
* http_server: favor ivars over constants
|
|
278
|
+
* explain 11 byte magic number for self-pipe
|
|
279
|
+
* const: drop constants used by Rainbows!
|
|
280
|
+
* reduce and localize constant string use
|
|
281
|
+
* Links: mark Rainbows! as historical, reference yahns
|
|
282
|
+
* save about 200 bytes of memory on x86-64
|
|
283
|
+
* http: remove deprecated reset method
|
|
284
|
+
* http: remove experimental dechunk! method
|
|
285
|
+
* socket_helper: update comments
|
|
286
|
+
* doc: document UNICORN_FD in manpage
|
|
287
|
+
* doc: document Etc.nprocessors for worker_processes
|
|
288
|
+
* favor more string literals for cold call sites
|
|
289
|
+
* tee_input: support for Rack::TempfileReaper middleware
|
|
290
|
+
* support TempfileReaper in deployment and development envs
|
|
291
|
+
* favor kgio_wait_readable for single FD over select
|
|
292
|
+
* Merge tag 'v4.9.0'
|
|
293
|
+
* http_request: support rack.hijack by default
|
|
294
|
+
* avoid extra allocation for hijack proc creation
|
|
295
|
+
* FAQ: add note about ECONNRESET errors from bodies
|
|
296
|
+
* process SIGWINCH unless stdin is a TTY
|
|
297
|
+
* ISSUES: discourage HTML mail strongly, welcome nyms
|
|
298
|
+
* http: use rb_hash_clear in Ruby 2.0+
|
|
299
|
+
* http_response: avoid special-casing for Rack < 1.5
|
|
300
|
+
* www: install NEWS.atom.xml properly
|
|
301
|
+
* http_server: remove a few more accessors and constants
|
|
302
|
+
* http_response: simplify regular expression
|
|
303
|
+
* move the socket into Rack env for hijacking
|
|
304
|
+
* http: move response_start_sent into the C ext
|
|
305
|
+
* FAQ: reorder bit on Rack 1.1.x and Rails 2.3.x
|
|
306
|
+
* ensure body is closed during hijack
|
|
307
|
+
|
|
308
|
+
=== unicorn 4.9.0 - TempfileReaper support in Rack 1.6 / 2015-04-24 03:09 UTC
|
|
309
|
+
|
|
310
|
+
This release supports the Rack::TempfileReaper middleware found
|
|
311
|
+
in rack 1.6 for cleaning up disk space used by temporary files.
|
|
312
|
+
We also use Rack::TempfileReaper for cleaning up large temporary
|
|
313
|
+
files buffered with TeeInput. Users on rack 1.5 and earlier
|
|
314
|
+
will see no changes.
|
|
315
|
+
|
|
316
|
+
There's also a bunch of documentation/build system improvements.
|
|
317
|
+
|
|
318
|
+
This is likely to be the last Ruby 1.8-compatible release,
|
|
319
|
+
unicorn 5.x will require 1.9.3 or later as well as dropping lots
|
|
320
|
+
of cruft (the stupid "Status:" header in responses being the
|
|
321
|
+
most notable).
|
|
322
|
+
|
|
323
|
+
21 changes backported from master:
|
|
324
|
+
|
|
325
|
+
ISSUES: update with mailing list subscription
|
|
326
|
+
FAQ: add entry for Rails autoflush_log
|
|
327
|
+
dev: remove isolate dependency
|
|
328
|
+
unicorn.gemspec: depend on test-unit 3.0
|
|
329
|
+
remove RubyForge and Freecode references
|
|
330
|
+
remove mongrel.rubyforge.org references
|
|
331
|
+
examples: add run_once to before_fork hook example
|
|
332
|
+
t/t0002-parser-error.sh: relax test for rack 1.6.0
|
|
333
|
+
switch docs + website to olddoc
|
|
334
|
+
README: clarify/reduce references to unicorn_rails
|
|
335
|
+
gemspec: fixup olddoc migration
|
|
336
|
+
GNUmakefile: fix clean gem build + reduce build cruft
|
|
337
|
+
doc: update support status for Ruby versions
|
|
338
|
+
fix uninstalled testing and reduce require paths
|
|
339
|
+
test_socket_helper: do not depend on SO_REUSEPORT
|
|
340
|
+
ISSUES: add section for bugs in other projects
|
|
341
|
+
explain 11 byte magic number for self-pipe
|
|
342
|
+
Links: mark Rainbows! as historical, reference yahns
|
|
343
|
+
doc: document UNICORN_FD in manpage
|
|
344
|
+
tee_input: support for Rack::TempfileReaper middleware
|
|
345
|
+
support TempfileReaper in deployment and development envs
|
|
346
|
+
|
|
347
|
+
=== unicorn 4.8.3 - the end of an era / 2014-05-07 07:50 UTC
|
|
348
|
+
|
|
349
|
+
This release updates documentation to reflect the migration of the
|
|
350
|
+
mailing list to a new public-inbox[1] instance. This is necessary
|
|
351
|
+
due to the impending RubyForge shutdown on May 15, 2014.
|
|
352
|
+
|
|
353
|
+
The public-inbox address is: unicorn-public@bogomips.org
|
|
354
|
+
(no subscription required, plain text only)
|
|
355
|
+
ssoma[2] git archives: git://bogomips.org/unicorn-public
|
|
356
|
+
browser-friendly archives: http://bogomips.org/unicorn-public/
|
|
357
|
+
|
|
358
|
+
Using, getting help for, and contributing to unicorn will never
|
|
359
|
+
require any of the following:
|
|
360
|
+
|
|
361
|
+
1) non-Free software (including SaaS)
|
|
362
|
+
2) registration or sign-in of any kind
|
|
363
|
+
3) a real identity (we accept mail from Mixmaster)
|
|
364
|
+
4) a graphical user interface
|
|
365
|
+
|
|
366
|
+
Nowadays, plain-text email is the only ubiquitous platform which
|
|
367
|
+
meets all our requirements for communication.
|
|
368
|
+
|
|
369
|
+
There is also one small bugfix to handle premature grandparent death
|
|
370
|
+
upon initial startup. Most users are unaffected.
|
|
371
|
+
|
|
372
|
+
[1] policy: http://public-inbox.org/ - git://80x24.org/public-inbox
|
|
373
|
+
an "archives first" approach to mailing lists
|
|
374
|
+
[2] mechanism: http://ssoma.public-inbox.org/ - git://80x24.org/ssoma
|
|
375
|
+
some sort of mail archiver (using git)
|
|
376
|
+
|
|
377
|
+
=== unicorn 4.8.2 - avoid race condition during worker startup / 2014-02-05 18:24 UTC
|
|
378
|
+
|
|
379
|
+
We close SELF_PIPE in the worker immediately, but signal handlers
|
|
380
|
+
do not get setup immediately. So prevent workers from erroring out
|
|
381
|
+
due to invalid SELF_PIPE.
|
|
382
|
+
|
|
383
|
+
=== unicorn 4.8.1 / 2014-01-29 08:48 UTC
|
|
384
|
+
|
|
385
|
+
fix races/error handling in worker SIGQUIT handler
|
|
386
|
+
|
|
387
|
+
This protects us from two problems:
|
|
388
|
+
|
|
389
|
+
1) we (or our app) somehow called IO#close on one of the sockets
|
|
390
|
+
we listen on without removing it from the readers array.
|
|
391
|
+
We'll ignore IOErrors from IO#close and assume we wanted to
|
|
392
|
+
close it.
|
|
393
|
+
|
|
394
|
+
2) our SIGQUIT handler is interrupted by itself. This can happen as
|
|
395
|
+
a fake signal from the master could be handled and a real signal
|
|
396
|
+
from an outside user is sent to us (e.g. from unicorn-worker-killer)
|
|
397
|
+
or if a user uses the killall(1) command.
|
|
398
|
+
|
|
399
|
+
=== unicorn 4.8.0 - big internal changes, but compatible / 2014-01-11 07:34 UTC
|
|
400
|
+
|
|
401
|
+
This release contains fairly major internal workings of master-to-worker
|
|
402
|
+
notifications. The master process no longer sends signals to workers
|
|
403
|
+
for most tasks. This works around some compatibility issues with some
|
|
404
|
+
versions of the "pg" gem (and potentially any other code which may not
|
|
405
|
+
handle EINTR properly). One extra benefit is it also helps stray
|
|
406
|
+
workers notice a rare, unexpected master death more easily. Workers
|
|
407
|
+
continue to (and will always) accept existing signals for compatibility
|
|
408
|
+
with tools/scripts which may signal workers.
|
|
409
|
+
|
|
410
|
+
PID file are always written early (even on upgrade) again to avoid
|
|
411
|
+
breaking strange monitoring setups which use PID files. Keep in mind we
|
|
412
|
+
have always discouraged monitoring based on PID files as they are
|
|
413
|
+
fragile.
|
|
414
|
+
|
|
415
|
+
We now avoid bubbling IOError to the Rack app on premature client
|
|
416
|
+
disconnects when streaming the input body. This is usually not a
|
|
417
|
+
problem with nginx, but may be on some LAN setups without nginx).
|
|
418
|
+
|
|
419
|
+
Thanks to Sam Saffron, Jimmy Soho, Rodrigo Rosenfeld Rosas,
|
|
420
|
+
Michael Fischer, and Andrew Hobson for their help with this release.
|
|
421
|
+
|
|
422
|
+
Note: the unicorn mailing list will be moved/changed soon due to the
|
|
423
|
+
RubyForge shutdown. unicorn will always rely only on Free Software.
|
|
424
|
+
There will never be any sign-up requirements nor terms-of-service to
|
|
425
|
+
agree to when communicating with us.
|
|
426
|
+
|
|
427
|
+
=== unicorn 4.8.0pre1 / 2013-12-09 09:51 UTC
|
|
428
|
+
|
|
429
|
+
Eric Wong (6):
|
|
430
|
+
tests: fix SO_REUSEPORT tests for old Linux and non-Linux
|
|
431
|
+
stream_input: avoid IO#close on client disconnect
|
|
432
|
+
t0300: kill off stray processes in test
|
|
433
|
+
always write PID file early for compatibility
|
|
434
|
+
doc: clarify SIGNALS and reference init example
|
|
435
|
+
rework master-to-worker signaling to use a pipe
|
|
436
|
+
|
|
437
|
+
=== unicorn 4.7.0 - minor updates, license tweak / 2013-11-04 06:59 UTC
|
|
438
|
+
|
|
439
|
+
* support SO_REUSEPORT on new listeners (:reuseport)
|
|
440
|
+
|
|
441
|
+
This allows users to start an independent instance of unicorn on
|
|
442
|
+
a the same port as a running unicorn (as long as both instances
|
|
443
|
+
use :reuseport).
|
|
444
|
+
|
|
445
|
+
ref: https://lwn.net/Articles/542629/
|
|
446
|
+
|
|
447
|
+
* unicorn is now GPLv2-or-later and Ruby 1.8-licensed
|
|
448
|
+
(instead of GPLv2-only, GPLv3-only, and Ruby 1.8-licensed)
|
|
449
|
+
|
|
450
|
+
This changes nothing at the moment. Once the FSF publishes the next
|
|
451
|
+
version of the GPL, users may choose the newer GPL version without the
|
|
452
|
+
unicorn BDFL approving it. Two years ago when I got permission to add
|
|
453
|
+
GPLv3 to the license options, I also got permission from all past
|
|
454
|
+
contributors to approve future versions of the GPL. So now I'm
|
|
455
|
+
approving all future versions of the GPL for use with unicorn.
|
|
456
|
+
|
|
457
|
+
Reasoning below:
|
|
458
|
+
|
|
459
|
+
In case the GPLv4 arrives and I am not alive to approve/review it,
|
|
460
|
+
the lesser of evils is have give blanket approval of all future GPL
|
|
461
|
+
versions (as published by the FSF). The worse evil is to be stuck
|
|
462
|
+
with a license which cannot guarantee the Free-ness of this project
|
|
463
|
+
in the future.
|
|
464
|
+
|
|
465
|
+
This unfortunately means the FSF can theoretically come out with
|
|
466
|
+
license terms I do not agree with, but the GPLv2 and GPLv3 will
|
|
467
|
+
always be an option to all users.
|
|
468
|
+
|
|
469
|
+
Note: we currently prefer GPLv3
|
|
470
|
+
|
|
471
|
+
Two improvements thanks to Ernest W. Durbin III:
|
|
472
|
+
|
|
473
|
+
* USR2 redirects fixed for Ruby 1.8.6 (broken since 4.1.0)
|
|
474
|
+
* unicorn(1) and unicorn_rails(1) enforces valid integer for -p/--port
|
|
475
|
+
|
|
476
|
+
A few more odd, minor tweaks and fixes:
|
|
477
|
+
|
|
478
|
+
* attempt to rename PID file when possible (on USR2)
|
|
479
|
+
* workaround reopen atomicity issues for stdio vs non-stdio
|
|
480
|
+
* improve handling of client-triggerable socket errors
|
|
481
|
+
|
|
482
|
+
=== unicorn 4.6.3 - fix --no-default-middleware option / 2013-06-21 08:01 UTC
|
|
483
|
+
|
|
484
|
+
Thanks to Micah Chalmer for this fix. There are also minor
|
|
485
|
+
documentation updates and internal cleanups.
|
|
486
|
+
|
|
487
|
+
=== unicorn 4.6.2 - HTTP parser fix for Rainbows! / 2013-02-26 02:59 UTC
|
|
488
|
+
|
|
489
|
+
This release fixes a bug in Unicorn::HttpParser#filter_body
|
|
490
|
+
which affected some configurations of Rainbows! There is
|
|
491
|
+
also a minor size reduction in the DSO.
|
|
492
|
+
|
|
493
|
+
=== unicorn 4.6.1 - minor cleanups / 2013-02-21 08:38 UTC
|
|
494
|
+
|
|
495
|
+
Unicorn::Const::UNICORN_VERSION is now auto-generated from
|
|
496
|
+
GIT-VERSION-GEN and always correct. Minor cleanups for
|
|
497
|
+
hijacking.
|
|
498
|
+
|
|
499
|
+
=== unicorn 4.6.0 - hijacking support / 2013-02-06 11:23 UTC
|
|
500
|
+
|
|
501
|
+
This pre-release adds hijacking support for Rack 1.5 users.
|
|
502
|
+
See Rack documentation for more information about hijacking.
|
|
503
|
+
There is also a new --no-default-middleware/-N option
|
|
504
|
+
for the `unicorn' command to ignore RACK_ENV within unicorn
|
|
505
|
+
thanks to Lin Jen-Shin.
|
|
506
|
+
|
|
507
|
+
There are only documentation and test-portability updates
|
|
508
|
+
since 4.6.0pre1, no code changes.
|
|
509
|
+
|
|
510
|
+
=== unicorn 4.6.0pre1 - hijacking support / 2013-01-29 21:05 UTC
|
|
511
|
+
|
|
512
|
+
This pre-release adds hijacking support for Rack 1.5 users.
|
|
513
|
+
See Rack documentation for more information about hijacking.
|
|
514
|
+
There is also a new --no-default-middleware/-N option
|
|
515
|
+
for the `unicorn' command to ignore RACK_ENV within unicorn.
|
|
516
|
+
|
|
517
|
+
=== unicorn 4.5.0 - check_client_connection option / 2012-12-07 22:59 UTC
|
|
518
|
+
|
|
519
|
+
The new check_client_connection option allows unicorn to detect
|
|
520
|
+
most disconnected local clients before potentially expensive
|
|
521
|
+
application processing begins.
|
|
522
|
+
|
|
523
|
+
This feature is useful for applications experiencing spikes of
|
|
524
|
+
traffic leading to undesirable queue times, as clients will
|
|
525
|
+
disconnect (and perhaps even retry, compounding the problem)
|
|
526
|
+
before unicorn can even start processing the request.
|
|
527
|
+
|
|
528
|
+
To enable this feature, add the following line to a unicorn
|
|
529
|
+
config file:
|
|
530
|
+
|
|
531
|
+
check_client_connection true
|
|
532
|
+
|
|
533
|
+
This feature only works when nginx (or any other HTTP/1.0+
|
|
534
|
+
client) is on the same machine as unicorn.
|
|
535
|
+
|
|
536
|
+
A huge thanks to Tom Burns for implementing and testing this
|
|
537
|
+
change in production with real traffic (including mitigating
|
|
538
|
+
an unexpected DoS attack).
|
|
539
|
+
|
|
540
|
+
ref: http://mid.gmane.org/CAK4qKG3rkfVYLyeqEqQyuNEh_nZ8yw0X_cwTxJfJ+TOU+y8F+w@mail.gmail.com
|
|
541
|
+
|
|
542
|
+
This release fixes broken Rainbows! compatibility in 4.5.0pre1.
|
|
543
|
+
|
|
544
|
+
=== unicorn 4.5.0pre1 - check_client_connection option / 2012-11-29 23:48 UTC
|
|
545
|
+
|
|
546
|
+
The new check_client_connection option allows unicorn to detect
|
|
547
|
+
most disconnected clients before potentially expensive
|
|
548
|
+
application processing begins.
|
|
549
|
+
|
|
550
|
+
This feature is useful for applications experiencing spikes of
|
|
551
|
+
traffic leading to undesirable queue times, as clients will
|
|
552
|
+
disconnect (and perhaps even retry, compounding the problem)
|
|
553
|
+
before unicorn can even start processing the request.
|
|
554
|
+
|
|
555
|
+
To enable this feature, add the following line to a unicorn
|
|
556
|
+
config file:
|
|
557
|
+
|
|
558
|
+
check_client_connection true
|
|
559
|
+
|
|
560
|
+
A huge thanks to Tom Burns for implementing and testing this
|
|
561
|
+
change in production with real traffic (including mitigating
|
|
562
|
+
an unexpected DoS attack).
|
|
563
|
+
|
|
564
|
+
=== unicorn 4.4.0 - minor updates / 2012-10-11 09:11 UTC
|
|
565
|
+
|
|
566
|
+
Non-regular files are no longer reopened on SIGUSR1. This
|
|
567
|
+
allows users to specify FIFOs as log destinations.
|
|
568
|
+
|
|
569
|
+
TCP_NOPUSH/TCP_CORK is no longer set/unset by default. Use
|
|
570
|
+
:tcp_nopush explicitly with the "listen" directive if you wish
|
|
571
|
+
to enable TCP_NOPUSH/TCP_CORK.
|
|
572
|
+
|
|
573
|
+
Listen sockets are now bound _after_ loading the application for
|
|
574
|
+
preload_app(true) users. This prevents load balancers from
|
|
575
|
+
sending traffic to an application server while the application
|
|
576
|
+
is still loading.
|
|
577
|
+
|
|
578
|
+
There are also minor test suite cleanups.
|
|
579
|
+
|
|
580
|
+
=== unicorn 4.3.1 - shutdown() fixes / 2012-04-29 07:04 UTC
|
|
581
|
+
|
|
582
|
+
* Call shutdown(2) if a client EOFs on us during upload.
|
|
583
|
+
We can avoid holding a socket open if the Rack app forked a
|
|
584
|
+
process during uploads.
|
|
585
|
+
|
|
586
|
+
* ignore potential Errno::ENOTCONN errors (from shutdown(2)).
|
|
587
|
+
Even on LANs, connections can occasionally be accept()-ed but
|
|
588
|
+
be unusable afterwards.
|
|
589
|
+
|
|
590
|
+
Thanks to Joel Nimety <jnimety@continuity.net>,
|
|
591
|
+
Matt Smith <matt@nearapogee.com> and George <lists@southernohio.net>
|
|
592
|
+
on the mongrel-unicorn@rubyforge.org mailing list for their
|
|
593
|
+
feedback and testing for this release.
|
|
594
|
+
|
|
595
|
+
=== unicorn 4.3.0 - minor fixes and updates / 2012-04-17 21:51 UTC
|
|
596
|
+
|
|
597
|
+
* PATH_INFO (aka REQUEST_PATH) increased to 4096 (from 1024).
|
|
598
|
+
This allows requests with longer path components and matches
|
|
599
|
+
the system PATH_MAX value common to GNU/Linux systems for
|
|
600
|
+
serving filesystem components with long names.
|
|
601
|
+
|
|
602
|
+
* Apps that fork() (but do not exec()) internally for background
|
|
603
|
+
tasks now indicate the end-of-request immediately after
|
|
604
|
+
writing the Rack response.
|
|
605
|
+
|
|
606
|
+
Thanks to Hongli Lai, Lawrence Pit, Patrick Wenger and Nuo Yan
|
|
607
|
+
for their valuable feedback for this release.
|
|
608
|
+
|
|
609
|
+
=== unicorn 4.2.1 - minor fix and doc updates / 2012-03-26 21:39 UTC
|
|
610
|
+
|
|
611
|
+
* Stale pid files are detected if a pid is recycled by processes
|
|
612
|
+
belonging to another user, thanks to Graham Bleach.
|
|
613
|
+
* nginx example config updates thanks to to Eike Herzbach.
|
|
614
|
+
* KNOWN_ISSUES now documents issues with apps/libs that install
|
|
615
|
+
conflicting signal handlers.
|
|
616
|
+
|
|
617
|
+
=== unicorn 4.2.0 / 2012-01-28 09:18 UTC
|
|
618
|
+
|
|
619
|
+
The GPLv3 is now an option to the Unicorn license. The existing GPLv2
|
|
620
|
+
and Ruby-only terms will always remain options, but the GPLv3 is
|
|
621
|
+
preferred.
|
|
622
|
+
|
|
623
|
+
Daemonization is correctly detected on all terminals for development
|
|
624
|
+
use (Brian P O'Rourke).
|
|
625
|
+
|
|
626
|
+
Unicorn::OobGC respects applications that disable GC entirely
|
|
627
|
+
during application dispatch (Yuichi Tateno).
|
|
628
|
+
|
|
629
|
+
Many test fixes for OpenBSD, which may help other *BSDs, too.
|
|
630
|
+
(Jeremy Evans).
|
|
631
|
+
|
|
632
|
+
There is now _optional_ SSL support (via the "kgio-monkey"
|
|
633
|
+
RubyGem). On fast, secure LANs, SSL is only intended for
|
|
634
|
+
detecting data corruption that weak TCP checksums cannot detect.
|
|
635
|
+
Our SSL support is remains unaudited by security experts.
|
|
636
|
+
|
|
637
|
+
There are also some minor bugfixes and documentation
|
|
638
|
+
improvements.
|
|
639
|
+
|
|
640
|
+
Ruby 2.0.0dev also has a copy-on-write friendly GC which can save memory
|
|
641
|
+
when combined with "preload_app true", so if you're in the mood, start
|
|
642
|
+
testing Unicorn with the latest Ruby!
|
|
643
|
+
|
|
644
|
+
=== unicorn 4.1.1 - fix last-resort timeout accuracy / 2011-08-25 21:30 UTC
|
|
645
|
+
|
|
646
|
+
The last-resort timeout mechanism was inaccurate and often
|
|
647
|
+
delayed in activation since the 2.0.0 release. It is now fixed
|
|
648
|
+
and remains power-efficient in idle situations, especially with
|
|
649
|
+
the wakeup reduction in MRI 1.9.3+.
|
|
650
|
+
|
|
651
|
+
There is also a new document on application timeouts
|
|
652
|
+
intended to discourage the reliance on this last-resort
|
|
653
|
+
mechanism. It is visible on the web at:
|
|
654
|
+
|
|
655
|
+
http://unicorn.bogomips.org/Application_Timeouts.html
|
|
656
|
+
|
|
657
|
+
=== unicorn 4.1.0 - small updates and fixes / 2011-08-20 00:33 UTC
|
|
658
|
+
|
|
659
|
+
* Rack::Chunked and Rack::ContentLength middlewares are loaded
|
|
660
|
+
by default for RACK_ENV=(development|deployment) users to match
|
|
661
|
+
Rack::Server behavior. As before, use RACK_ENV=none if you want
|
|
662
|
+
fine-grained control of your middleware. This should also
|
|
663
|
+
help users of Rainbows! and Zbatery.
|
|
664
|
+
|
|
665
|
+
* CTL characters are now rejected from HTTP header values
|
|
666
|
+
|
|
667
|
+
* Exception messages are now filtered for [:cntrl:] characters
|
|
668
|
+
since application/middleware authors may forget to do so
|
|
669
|
+
|
|
670
|
+
* Workers will now terminate properly if a SIGQUIT/SIGTERM/SIGINT
|
|
671
|
+
is received while during worker process initialization.
|
|
672
|
+
|
|
673
|
+
* close-on-exec is explicitly disabled to future-proof against
|
|
674
|
+
Ruby 2.0 changes [ruby-core:38140]
|
|
675
|
+
|
|
676
|
+
=== unicorn 4.0.1 - regression bugfixes / 2011-06-29 18:59 UTC
|
|
677
|
+
|
|
678
|
+
This release fixes things for users of per-worker "listen"
|
|
679
|
+
directives in the after_fork hook. Thanks to ghazel@gmail.com
|
|
680
|
+
for reporting the bug.
|
|
681
|
+
|
|
682
|
+
The "timeout" configurator directive is now truncated to
|
|
683
|
+
0x7ffffffe seconds to prevent overflow when calling
|
|
684
|
+
IO.select.
|
|
685
|
+
|
|
686
|
+
=== unicorn 4.0.0 - for mythical hardware! / 2011-06-27 09:05 UTC
|
|
687
|
+
|
|
688
|
+
A single Unicorn instance may manage more than 1024 workers
|
|
689
|
+
without needing privileges to modify resource limits. As a
|
|
690
|
+
result of this, the "raindrops"[1] gem/library is now a required
|
|
691
|
+
dependency.
|
|
692
|
+
|
|
693
|
+
TCP socket defaults now favor low latency to mimic UNIX domain
|
|
694
|
+
socket behavior (tcp_nodelay: true, tcp_nopush: false). This
|
|
695
|
+
hurts throughput, users who want to favor throughput should
|
|
696
|
+
specify "tcp_nodelay: false, tcp_nopush: true" in the listen
|
|
697
|
+
directive.
|
|
698
|
+
|
|
699
|
+
Error logging is more consistent and all lines should be
|
|
700
|
+
formatted correctly in backtraces. This may break the
|
|
701
|
+
behavior of some log parsers.
|
|
702
|
+
|
|
703
|
+
The call stack is smaller and thus easier to examine backtraces
|
|
704
|
+
when debugging Rack applications.
|
|
705
|
+
|
|
706
|
+
There are some internal API changes and cleanups, but none that
|
|
707
|
+
affect applications designed for Rack. See "git log v3.7.0.."
|
|
708
|
+
for details.
|
|
709
|
+
|
|
710
|
+
For users who cannot install kgio[2] or raindrops, Unicorn 1.1.x
|
|
711
|
+
remains supported indefinitely. Unicorn 3.x will remain
|
|
712
|
+
supported if there is demand. We expect raindrops to introduce
|
|
713
|
+
fewer portability problems than kgio did, however.
|
|
714
|
+
|
|
715
|
+
[1] http://raindrops.bogomips.org/
|
|
716
|
+
[2] http://bogomips.org/kgio/
|
|
717
|
+
|
|
718
|
+
=== unicorn 3.7.0 - minor feature update / 2011-06-09 20:51 UTC
|
|
719
|
+
|
|
720
|
+
* miscellaneous documentation improvements
|
|
721
|
+
* return 414 (instead of 400) for Request-URI Too Long
|
|
722
|
+
* strip leading and trailing linear whitespace in header values
|
|
723
|
+
|
|
724
|
+
User-visible improvements meant for Rainbows! users:
|
|
725
|
+
|
|
726
|
+
* add :ipv6only "listen" option (same as nginx)
|
|
727
|
+
|
|
728
|
+
=== unicorn 3.6.2 - fix Unicorn::OobGC module / 2011-04-30 06:40 UTC
|
|
729
|
+
|
|
730
|
+
The optional Unicorn::OobGC module is reimplemented to fix
|
|
731
|
+
breakage that appeared in v3.3.1. There are also minor
|
|
732
|
+
documentation updates, but no code changes as of 3.6.1 for
|
|
733
|
+
non-OobGC users.
|
|
734
|
+
|
|
735
|
+
There is also a v1.1.7 release to fix the same OobGC breakage
|
|
736
|
+
that appeared for 1.1.x users in the v1.1.6 release.
|
|
737
|
+
|
|
738
|
+
=== unicorn 1.1.7 - major fixes to minor components / 2011-04-30 06:33 UTC
|
|
739
|
+
|
|
740
|
+
No changes to the core code, so this release only affects users
|
|
741
|
+
of the Unicorn::OobGC and Unicorn::ExecCGI modules.
|
|
742
|
+
Unicorn::OobGC was totally broken by the fix in the v1.1.6
|
|
743
|
+
release and is now reimplemented. Unicorn::ExecCGI (which
|
|
744
|
+
hardly anybody uses) now returns proper HTTP status codes.
|
|
745
|
+
|
|
746
|
+
=== unicorn 3.6.1 - fix OpenSSL PRNG workaround / 2011-04-26 23:06 UTC
|
|
747
|
+
|
|
748
|
+
Our attempt in 3.6.0 to workaround a problem with the OpenSSL
|
|
749
|
+
PRNG actually made the problem worse. This release corrects the
|
|
750
|
+
workaround to properly reseed the OpenSSL PRNG after forking.
|
|
751
|
+
|
|
752
|
+
=== unicorn 3.6.0 - small fixes, PRNG workarounds / 2011-04-21 06:46 UTC
|
|
753
|
+
|
|
754
|
+
Mainly small fixes, improvements, and workarounds for fork() issues
|
|
755
|
+
with pseudo-random number generators shipped with Ruby (Kernel#rand,
|
|
756
|
+
OpenSSL::Random (used by SecureRandom and also by Rails).
|
|
757
|
+
|
|
758
|
+
The PRNG issues are documented in depth here (and links to Ruby Redmine):
|
|
759
|
+
|
|
760
|
+
http://bogomips.org/unicorn.git/commit?id=1107ede7
|
|
761
|
+
http://bogomips.org/unicorn.git/commit?id=b3241621
|
|
762
|
+
|
|
763
|
+
If you're too lazy to upgrade, you can just do this in your after_fork
|
|
764
|
+
hooks:
|
|
765
|
+
|
|
766
|
+
after_fork do |server,worker|
|
|
767
|
+
tmp = srand
|
|
768
|
+
OpenSSL::Random.seed(tmp.to_s) if defined?(OpenSSL::Random)
|
|
769
|
+
end
|
|
770
|
+
|
|
771
|
+
There are also small log reopening (SIGUSR1) improvements:
|
|
772
|
+
|
|
773
|
+
* relative paths may also be reopened, there's a small chance this
|
|
774
|
+
will break with a handful of setups, but unlikely. This should
|
|
775
|
+
make configuration easier especially since the "working_directory"
|
|
776
|
+
configurator directive exists. Brought up by Matthew Kocher:
|
|
777
|
+
http://thread.gmane.org/gmane.comp.lang.ruby.unicorn.general/900
|
|
778
|
+
|
|
779
|
+
* workers will just die (and restart) if log reopening fails for
|
|
780
|
+
any reason (including user error). This is to workaround the issue
|
|
781
|
+
reported by Emmanuel Gomez:
|
|
782
|
+
http://thread.gmane.org/gmane.comp.lang.ruby.unicorn.general/906
|
|
783
|
+
|
|
784
|
+
=== unicorn 3.5.0 - very minor improvements / 2011-03-15 12:27 UTC
|
|
785
|
+
|
|
786
|
+
A small set of small changes but it's been more than a month
|
|
787
|
+
since our last release. There are minor memory usage and
|
|
788
|
+
efficiently improvements (for graceful shutdowns). MRI 1.8.7
|
|
789
|
+
users on *BSD should be sure they're using the latest patchlevel
|
|
790
|
+
(or upgrade to 1.9.x) because we no longer workaround their
|
|
791
|
+
broken stdio (that's MRI's job :)
|
|
792
|
+
|
|
793
|
+
=== unicorn 3.4.0 - for people with very big LANs / 2011-02-04 21:23 UTC
|
|
794
|
+
|
|
795
|
+
* IPv6 support in the HTTP hostname parser and configuration
|
|
796
|
+
language. Configurator syntax for "listen" addresses should
|
|
797
|
+
be the same as nginx. Even though we support IPv6, we will
|
|
798
|
+
never support non-LAN/localhost clients connecting to Unicorn.
|
|
799
|
+
|
|
800
|
+
* TCP_NOPUSH/TCP_CORK is enabled by default to optimize
|
|
801
|
+
for bandwidth usage and avoid unnecessary wakeups in nginx.
|
|
802
|
+
|
|
803
|
+
* Updated KNOWN_ISSUES document for bugs in recent Ruby 1.8.7
|
|
804
|
+
(RNG needs reset after fork) and nginx+sendfile()+FreeBSD 8.
|
|
805
|
+
|
|
806
|
+
* examples/nginx.conf updated for modern stable versions of nginx.
|
|
807
|
+
|
|
808
|
+
* "Status" in headers no longer ignored in the response,
|
|
809
|
+
Rack::Lint already enforces this so we don't duplicate
|
|
810
|
+
the work.
|
|
811
|
+
|
|
812
|
+
* All tests pass under Ruby 1.9.3dev
|
|
813
|
+
|
|
814
|
+
* various bugfixes in the (mostly unused) ExecCGI class that
|
|
815
|
+
powers http://bogomips.org/unicorn.git
|
|
816
|
+
|
|
817
|
+
=== unicorn 3.3.1 - one minor, esoteric bugfix / 2011-01-06 23:48 UTC
|
|
818
|
+
|
|
819
|
+
We now close the client socket after closing the response body.
|
|
820
|
+
This does not affect most applications that run under Unicorn,
|
|
821
|
+
in fact, it may not affect any.
|
|
822
|
+
|
|
823
|
+
There is also a new v1.1.6 release for users who do not use
|
|
824
|
+
kgio.
|
|
825
|
+
|
|
826
|
+
=== unicorn 1.1.6 - one minor, esoteric bugfix / 2011-01-06 23:46 UTC
|
|
827
|
+
|
|
828
|
+
We now close the client socket after closing the response body.
|
|
829
|
+
This does not affect most applications that run under Unicorn,
|
|
830
|
+
in fact, it may not affect any.
|
|
831
|
+
|
|
832
|
+
=== unicorn 3.3.0 - minor optimizations / 2011-01-05 23:43 UTC
|
|
833
|
+
|
|
834
|
+
Certain applications that already serve hundreds/thousands of requests a
|
|
835
|
+
second should experience performance improvements due to
|
|
836
|
+
Time.now.httpdate usage being removed and reimplemented in C.
|
|
837
|
+
|
|
838
|
+
There are also minor internal changes and cleanups for Rainbows!
|
|
839
|
+
|
|
840
|
+
=== unicorn 3.2.1 - parser improvements for Rainbows! / 2010-12-26 08:04 UTC
|
|
841
|
+
|
|
842
|
+
There are numerous improvements in the HTTP parser for
|
|
843
|
+
Rainbows!, none of which affect Unicorn-only users.
|
|
844
|
+
|
|
845
|
+
The kgio dependency is incremented to 2.1: this should avoid
|
|
846
|
+
ENOSYS errors for folks building binaries on newer Linux
|
|
847
|
+
kernels and then deploying to older ones.
|
|
848
|
+
|
|
849
|
+
There are also minor documentation improvements, the website
|
|
850
|
+
is now JavaScript-free!
|
|
851
|
+
|
|
852
|
+
(Ignore the 3.2.0 release, I fat-fingered some packaging things)
|
|
853
|
+
|
|
854
|
+
=== unicorn 3.2.0 - parser improvements for Rainbows! / 2010-12-26 07:50 UTC
|
|
855
|
+
|
|
856
|
+
There are numerous improvements in the HTTP parser for
|
|
857
|
+
Rainbows!, none of which affect Unicorn-only users.
|
|
858
|
+
|
|
859
|
+
The kgio dependency is incremented to 2.1: this should avoid
|
|
860
|
+
ENOSYS errors for folks building binaries on newer Linux
|
|
861
|
+
kernels and then deploying to older ones.
|
|
862
|
+
|
|
863
|
+
There are also minor documentation improvements, the website
|
|
864
|
+
is now JavaScript-free!
|
|
865
|
+
|
|
866
|
+
=== unicorn 3.1.0 - client_buffer_body_size tuning / 2010-12-09 22:28 UTC
|
|
867
|
+
|
|
868
|
+
This release enables tuning the client_buffer_body_size to raise
|
|
869
|
+
or lower the threshold for buffering request bodies to disk.
|
|
870
|
+
This only applies to users who have not disabled rewindable
|
|
871
|
+
input. There is also a TeeInput bugfix for uncommon usage
|
|
872
|
+
patterns and Configurator examples in the FAQ should be fixed
|
|
873
|
+
|
|
874
|
+
=== unicorn 3.0.1 - one bugfix for Rainbows! / 2010-12-03 00:34 UTC
|
|
875
|
+
|
|
876
|
+
...and only Rainbows! This release fixes HTTP pipelining for
|
|
877
|
+
requests with bodies for users of synchronous Rainbows!
|
|
878
|
+
concurrency models.
|
|
879
|
+
|
|
880
|
+
Since Unicorn itself does not support keepalive nor pipelining,
|
|
881
|
+
Unicorn-only users need not upgrade.
|
|
882
|
+
|
|
883
|
+
=== unicorn 3.0.0 - disable rewindable input! / 2010-11-20 02:41 UTC
|
|
884
|
+
|
|
885
|
+
Rewindable "rack.input" may be disabled via the
|
|
886
|
+
"rewindable_input false" directive in the configuration file.
|
|
887
|
+
This will violate Rack::Lint for Rack 1.x applications, but can
|
|
888
|
+
reduce I/O for applications that do not need a rewindable
|
|
889
|
+
input.
|
|
890
|
+
|
|
891
|
+
This release updates us to the Kgio 2.x series which should play
|
|
892
|
+
more nicely with other libraries and applications. There are
|
|
893
|
+
also internal cleanups and improvements for future versions of
|
|
894
|
+
Rainbows!
|
|
895
|
+
|
|
896
|
+
The Unicorn 3.x series supercedes the 2.x series
|
|
897
|
+
while the 1.x series will remain supported indefinitely.
|
|
898
|
+
|
|
899
|
+
=== unicorn 3.0.0pre2 - less bad than 2.x or 3.0.0pre1! / 2010-11-19 00:07 UTC
|
|
900
|
+
|
|
901
|
+
This release updates us to the Kgio 2.x series which should play
|
|
902
|
+
more nicely with other applications. There are also bugfixes
|
|
903
|
+
from the 2.0.1 release and a small bugfix to the new StreamInput
|
|
904
|
+
class.
|
|
905
|
+
|
|
906
|
+
The Unicorn 3.x series will supercede the 2.x series
|
|
907
|
+
while the 1.x series will remain supported indefinitely.
|
|
908
|
+
|
|
909
|
+
=== unicorn 2.0.1 - fix errors in error handling / 2010-11-17 23:48 UTC
|
|
910
|
+
|
|
911
|
+
This release fixes errors in our own error handling,
|
|
912
|
+
causing certain errors to not be logged nor responded
|
|
913
|
+
to correctly.
|
|
914
|
+
|
|
915
|
+
Eric Wong (3):
|
|
916
|
+
t0012: fix race condition in reload
|
|
917
|
+
http_server: fix HttpParserError constant resolution
|
|
918
|
+
tests: add parser error test from Rainbows!
|
|
919
|
+
|
|
920
|
+
=== unicorn 3.0.0pre1 / 2010-11-17 00:04 UTC
|
|
921
|
+
|
|
922
|
+
Rewindable "rack.input" may be disabled via the
|
|
923
|
+
"rewindable_input false" directive in the configuration file.
|
|
924
|
+
This will violate Rack::Lint for Rack 1.x applications, but
|
|
925
|
+
can reduce I/O for applications that do not need it.
|
|
926
|
+
|
|
927
|
+
There are also internal cleanups and enhancements for future
|
|
928
|
+
versions of Rainbows!
|
|
929
|
+
|
|
930
|
+
Eric Wong (11):
|
|
931
|
+
t0012: fix race condition in reload
|
|
932
|
+
enable HTTP keepalive support for all methods
|
|
933
|
+
http_parser: add HttpParser#next? method
|
|
934
|
+
tee_input: switch to simpler API for parsing trailers
|
|
935
|
+
switch versions to 3.0.0pre
|
|
936
|
+
add stream_input class and build tee_input on it
|
|
937
|
+
configurator: enable "rewindable_input" directive
|
|
938
|
+
http_parser: ensure keepalive is disabled when reset
|
|
939
|
+
*_input: make life easier for subclasses/modules
|
|
940
|
+
tee_input: restore read position after #size
|
|
941
|
+
preread_input: no-op for non-rewindable "rack.input"
|
|
942
|
+
|
|
943
|
+
=== unicorn 2.0.0 - mostly internal cleanups / 2010-10-27 23:44 UTC
|
|
944
|
+
|
|
945
|
+
Despite the version number, this release mostly features
|
|
946
|
+
internal cleanups for future versions of Rainbows!. User
|
|
947
|
+
visible changes include reductions in CPU wakeups on idle sites
|
|
948
|
+
using high timeouts.
|
|
949
|
+
|
|
950
|
+
Barring possible portability issues due to the introduction of
|
|
951
|
+
the kgio library, this release should be ready for all to use.
|
|
952
|
+
However, 1.1.x (and possibly 1.0.x) will continue to be
|
|
953
|
+
maintained. Unicorn 1.1.5 and 1.0.2 have also been released
|
|
954
|
+
with bugfixes found during development of 2.0.0.
|
|
955
|
+
|
|
956
|
+
=== unicorn 1.1.5 / 2010-10-27 23:30 UTC
|
|
957
|
+
|
|
958
|
+
This maintenance release fixes several long-standing but
|
|
959
|
+
recently-noticed bugs. SIGHUP reloading now correctly restores
|
|
960
|
+
default values if they're erased or commented-out in the Unicorn
|
|
961
|
+
configuration file. Delays/slowdowns in signal handling since
|
|
962
|
+
0.990 are fixed, too.
|
|
963
|
+
|
|
964
|
+
=== unicorn 1.0.2 / 2010-10-27 23:12 UTC
|
|
965
|
+
|
|
966
|
+
This is the latest maintenance release of the 1.0.x series.
|
|
967
|
+
All users are encouraged to upgrade to 1.1.x stable series
|
|
968
|
+
and report bugs there.
|
|
969
|
+
|
|
970
|
+
Shortlog of changes since 1.0.1:
|
|
971
|
+
|
|
972
|
+
Eric Wong (8):
|
|
973
|
+
SIGTTIN works after SIGWINCH
|
|
974
|
+
fix delays in signal handling
|
|
975
|
+
Rakefile: don't post freshmeat on empty changelogs
|
|
976
|
+
Rakefile: capture prerelease tags
|
|
977
|
+
configurator: use "__send__" instead of "send"
|
|
978
|
+
configurator: reloading with unset values restores default
|
|
979
|
+
gemspec: depend on Isolate 3.0.0 for dev
|
|
980
|
+
doc: stop using deprecated rdoc CLI options
|
|
981
|
+
|
|
982
|
+
=== unicorn 2.0.0pre3 - more small fixes / 2010-10-09 00:06 UTC
|
|
983
|
+
|
|
984
|
+
There is a new Unicorn::PrereadInput middleware to which allows
|
|
985
|
+
input bodies to be drained off the socket and buffered to disk
|
|
986
|
+
(or memory) before dispatching the application.
|
|
987
|
+
|
|
988
|
+
HTTP Pipelining behavior is fixed for Rainbows! There
|
|
989
|
+
are some small Kgio fixes and updates for Rainbows!
|
|
990
|
+
users as well.
|
|
991
|
+
|
|
992
|
+
=== unicorn 2.0.0pre2 - releases are cheap / 2010-10-07 07:23 UTC
|
|
993
|
+
|
|
994
|
+
Internal changes/cleanups for Rainbows!
|
|
995
|
+
|
|
996
|
+
=== unicorn 2.0.0pre1 - a boring "major" release / 2010-10-06 01:17 UTC
|
|
997
|
+
|
|
998
|
+
Mostly internal cleanups for future versions of Rainbows! and
|
|
999
|
+
people trying out Rubinius. There are tiny performance
|
|
1000
|
+
improvements for Ruby 1.9.2 users which may only be noticeable
|
|
1001
|
+
with Rainbows!.
|
|
1002
|
+
|
|
1003
|
+
There is a new dependency on the "kgio" library for kinder,
|
|
1004
|
+
gentler I/O :) Please report any bugs and portability issues
|
|
1005
|
+
with kgio to the Unicorn mailing list[1].
|
|
1006
|
+
|
|
1007
|
+
Unicorn 1.1.x users are NOT required nor even encouraged to
|
|
1008
|
+
upgrade yet. Unicorn 1.1.x will be maintained for the
|
|
1009
|
+
forseeable future.
|
|
1010
|
+
|
|
1011
|
+
[1] - mongrel-unicorn@rubyforge.org
|
|
1012
|
+
|
|
1013
|
+
=== unicorn 1.1.4 - small bug fix and doc updates / 2010-10-04 20:32 UTC
|
|
1014
|
+
|
|
1015
|
+
We no longer unlinking actively listening sockets upon startup
|
|
1016
|
+
(but continue to unlink dead ones). This bug could trigger
|
|
1017
|
+
downtime and nginx failures if a user makes an error and
|
|
1018
|
+
attempts to start Unicorn while it is already running.
|
|
1019
|
+
|
|
1020
|
+
Thanks to Jordan Ritter for the detailed bug report leading to
|
|
1021
|
+
this fix.
|
|
1022
|
+
|
|
1023
|
+
ref: http://mid.gmane.org/8D95A44B-A098-43BE-B532-7D74BD957F31@darkridge.com
|
|
1024
|
+
|
|
1025
|
+
There are also minor documentation and test updates pulled in
|
|
1026
|
+
from master. This is hopefully the last bugfix release of the
|
|
1027
|
+
1.1.x series.
|
|
1028
|
+
|
|
1029
|
+
=== unicorn 1.1.3 - small bug fixes / 2010-08-28 19:27 UTC
|
|
1030
|
+
|
|
1031
|
+
This release fixes race conditions during SIGUSR1 log cycling.
|
|
1032
|
+
This bug mainly affects Rainbows! users serving static files,
|
|
1033
|
+
but some Rack apps use threads internally even under Unicorn.
|
|
1034
|
+
|
|
1035
|
+
Other small fixes:
|
|
1036
|
+
* SIGTTIN works as documented after SIGWINCH
|
|
1037
|
+
* --help output from `unicorn` and `unicorn_rails` is more consistent
|
|
1038
|
+
|
|
1039
|
+
=== unicorn 1.1.2 - fixing upgrade rollbacks / 2010-07-13 20:04 UTC
|
|
1040
|
+
|
|
1041
|
+
This release is fixes a long-standing bug where the original PID
|
|
1042
|
+
file is not restored when rolling back from a USR2 upgrade.
|
|
1043
|
+
Presumably most upgrades aren't rolled back, so it took over a
|
|
1044
|
+
year to notice this issue. Thanks to Lawrence Pit for
|
|
1045
|
+
discovering and reporting this issue.
|
|
1046
|
+
|
|
1047
|
+
=== unicorn 1.0.1 - bugfixes only / 2010-07-13 20:01 UTC
|
|
1048
|
+
|
|
1049
|
+
The first maintenance release of 1.0.x, this release is
|
|
1050
|
+
primarily to fix a long-standing bug where the original PID file
|
|
1051
|
+
is not restored when rolling back from a USR2 upgrade.
|
|
1052
|
+
Presumably most upgrades aren't rolled back, so it took over a
|
|
1053
|
+
year to notice this issue. Thanks to Lawrence Pit for
|
|
1054
|
+
discovering and reporting this issue.
|
|
1055
|
+
|
|
1056
|
+
There is also a pedantic TeeInput bugfix which shouldn't affect
|
|
1057
|
+
real apps from the 1.1.x series and a test case fix for OSX,
|
|
1058
|
+
too.
|
|
1059
|
+
|
|
1060
|
+
=== unicorn 1.1.1 - fixing cleanups gone bad :x / 2010-07-11 02:13 UTC
|
|
1061
|
+
|
|
1062
|
+
Unicorn::TeeInput constant resolution for Unicorn::ClientError
|
|
1063
|
+
got broken simplifying code for RDoc. This affects users
|
|
1064
|
+
of Rainbows! and Zbatery.
|
|
1065
|
+
|
|
1066
|
+
=== unicorn 1.1.0 - small changes and cleanups / 2010-07-08 07:57 UTC
|
|
1067
|
+
|
|
1068
|
+
This is a small, incremental feature release with some internal
|
|
1069
|
+
changes to better support upcoming versions of the Rainbows! and
|
|
1070
|
+
Zbatery web servers. There is no need to upgrade if you're
|
|
1071
|
+
happy with 1.0.0, but also little danger in upgrading.
|
|
1072
|
+
|
|
1073
|
+
There is one pedantic bugfix which shouldn't affect anyone
|
|
1074
|
+
and small documentation updates as well.
|
|
1075
|
+
|
|
1076
|
+
=== unicorn 1.0.0 - yes, this is a real project / 2010-06-17 09:18 UTC
|
|
1077
|
+
|
|
1078
|
+
There are only minor changes since 0.991.0.
|
|
1079
|
+
|
|
1080
|
+
For users clinging onto the past, MRI 1.8.6 support has been
|
|
1081
|
+
restored. Users are strongly encouraged to upgrade to the
|
|
1082
|
+
latest 1.8.7, REE or 1.9.1.
|
|
1083
|
+
|
|
1084
|
+
For users looking towards the future, the core test suite and
|
|
1085
|
+
the Rails 3 (beta) integration tests pass entirely under 1.9.2
|
|
1086
|
+
preview3. As of the latest rubinius.git[1], Rubinius support is
|
|
1087
|
+
nearly complete as well.
|
|
1088
|
+
|
|
1089
|
+
Under Rubinius, signals may corrupt responses as they're being
|
|
1090
|
+
written to the socket, but that should be fixable transparently
|
|
1091
|
+
to us[4]. Support for the hardly used, hardly documented[2]
|
|
1092
|
+
embedded command-line switches in rackup config (.ru) files is
|
|
1093
|
+
is also broken under Rubinius.
|
|
1094
|
+
|
|
1095
|
+
The recently-released Rack 1.2.1 introduced no compatiblity
|
|
1096
|
+
issues[3] in core Unicorn. We remain compatible with all Rack
|
|
1097
|
+
releases starting with 0.9.1 (and possibly before).
|
|
1098
|
+
|
|
1099
|
+
[1] tested with Rubinius upstream commit
|
|
1100
|
+
cf4a5a759234faa3f7d8a92d68fa89d8c5048f72
|
|
1101
|
+
[2] lets avoid the Dueling Banjos effect here :x
|
|
1102
|
+
[3] actually, Rack 1.2.1 is broken under 1.8.6.
|
|
1103
|
+
[4] http://github.com/evanphx/rubinius/issues/373
|
|
1104
|
+
|
|
1105
|
+
=== unicorn 0.991.0 - startup improvements / 2010-06-11 02:18 UTC
|
|
1106
|
+
|
|
1107
|
+
The "working_directory" configuration parameter is now handled
|
|
1108
|
+
before config.ru. That means "unicorn" and "unicorn_rails" no
|
|
1109
|
+
longer barfs when initially started outside of the configured
|
|
1110
|
+
"working_directory" where a config.ru is required. A huge
|
|
1111
|
+
thanks to Pierre Baillet for catching this ugly UI inconsistency
|
|
1112
|
+
before the big 1.0 release
|
|
1113
|
+
|
|
1114
|
+
Thanks to Hongli Lai, out-of-the-box Rails 3 (beta) support
|
|
1115
|
+
should be improved for deployments lacking a config.ru
|
|
1116
|
+
|
|
1117
|
+
There are more new integration tests, cleanups and some
|
|
1118
|
+
documentation improvements.
|
|
1119
|
+
|
|
1120
|
+
=== unicorn 0.990.0 - inching towards 1.0 / 2010-06-08 09:41 UTC
|
|
1121
|
+
|
|
1122
|
+
Thanks to Augusto Becciu for finding a bug in the HTTP parser
|
|
1123
|
+
that caused a TypeError (and 500) when a rare client set the
|
|
1124
|
+
"Version:" header which conflicts with the HTTP_VERSION header
|
|
1125
|
+
we parse in the first line of the request[1].
|
|
1126
|
+
|
|
1127
|
+
Horizontal tabs are now allowed as leading whitespace in header
|
|
1128
|
+
values as according to RFC 2616 as pointed out by
|
|
1129
|
+
Iñaki Baz Castillo[2].
|
|
1130
|
+
|
|
1131
|
+
Taking a hint from Rack 1.1, the "logger" configuration
|
|
1132
|
+
parameter no longer requires a "close" method. This means some
|
|
1133
|
+
more Logger replacements may be used.
|
|
1134
|
+
|
|
1135
|
+
There's a new, optional, Unicorn (and maybe Passenger)-only
|
|
1136
|
+
middleware, Unicorn::OobGC[2] that runs GC outside of the normal
|
|
1137
|
+
request/response cycle to help out memory-hungry applications.
|
|
1138
|
+
Thanks to Luke Melia for being brave enough to test and report
|
|
1139
|
+
back on my big_app_gc.rb monkey patch[3] which lead up to this.
|
|
1140
|
+
|
|
1141
|
+
Rails 3 (beta) support:
|
|
1142
|
+
|
|
1143
|
+
Using "unicorn" is still recommended as Rails 3 comes with
|
|
1144
|
+
a config.ru, but "unicorn_rails" is cleaned up a bit and
|
|
1145
|
+
*should* work as well as "unicorn" out-of-the-box. Feedback
|
|
1146
|
+
is much appreciated.
|
|
1147
|
+
|
|
1148
|
+
Rubinius updates:
|
|
1149
|
+
|
|
1150
|
+
USR2 binary upgrades are broken due to
|
|
1151
|
+
{TCPServer,UNIXServer}.for_fd[5][6] being broken
|
|
1152
|
+
(differently).
|
|
1153
|
+
|
|
1154
|
+
Repeatedly hitting the server with signals in a tight
|
|
1155
|
+
loop is unusual and not recommended[7].
|
|
1156
|
+
|
|
1157
|
+
There are some workarounds and general code cleanups for other
|
|
1158
|
+
issues[8], as well but things should generally work unless you
|
|
1159
|
+
need USR2 upgrades. Feedback and reports would be greatly
|
|
1160
|
+
appreciated as usual.
|
|
1161
|
+
|
|
1162
|
+
MRI support:
|
|
1163
|
+
|
|
1164
|
+
All tests (except old Rails) run and pass under 1.9.2-preview3.
|
|
1165
|
+
1.8.7 and 1.9.1 work well as usual and will continue to be
|
|
1166
|
+
supported indefinitely.
|
|
1167
|
+
|
|
1168
|
+
Lets hope this is the last release before 1.0. Please report
|
|
1169
|
+
any issues on the mailing list[9] or email us privately[a].
|
|
1170
|
+
Don't send HTML mail.
|
|
1171
|
+
|
|
1172
|
+
[1] - http://mid.gmane.org/AANLkTimuGgcwNAMcVZdViFWdF-UcW_RGyZAue7phUXps@mail.gmail.com
|
|
1173
|
+
[2] - http://mid.gmane.org/i2xcc1f582e1005070651u294bd83oc73d1e0adf72373a@mail.gmail.com
|
|
1174
|
+
[3] - http://unicorn.bogomips.org/Unicorn/OobGC.html
|
|
1175
|
+
[4] - http://unicorn.bogomips.org/examples/big_app_gc.rb
|
|
1176
|
+
[5] - http://github.com/evanphx/rubinius/issues/354
|
|
1177
|
+
[6] - http://github.com/evanphx/rubinius/issues/355
|
|
1178
|
+
[7] - http://github.com/evanphx/rubinius/issues/356
|
|
1179
|
+
[8] - http://github.com/evanphx/rubinius/issues/347
|
|
1180
|
+
[9] - mailto:mongrel-unicorn@rubyforge.org
|
|
1181
|
+
[a] - mailto:unicorn@bogomips.org
|
|
1182
|
+
|
|
1183
|
+
=== unicorn 0.99.0 - simplicity wins / 2010-05-06 19:32 UTC
|
|
1184
|
+
|
|
1185
|
+
Starting with this release, we'll always load Rack up front at
|
|
1186
|
+
startup.
|
|
1187
|
+
|
|
1188
|
+
Previously we had complicated ways to avoid loading Rack until
|
|
1189
|
+
after the application was loaded to allow the application to
|
|
1190
|
+
load an alternate version of Rack. However this has proven too
|
|
1191
|
+
error-prone to be worth supporting even though Unicorn does not
|
|
1192
|
+
have strict requirements on currently released Rack versions.
|
|
1193
|
+
|
|
1194
|
+
If an app requires a different version of Rack than what Unicorn
|
|
1195
|
+
would load by default, it is recommended they only install that
|
|
1196
|
+
version of Rack (and no others) since Unicorn does not have any
|
|
1197
|
+
strict requirements on currently released Rack versions.
|
|
1198
|
+
|
|
1199
|
+
Rails 2.3.x users should be aware of this as those versions are
|
|
1200
|
+
not compatible with Rack 1.1.0.
|
|
1201
|
+
|
|
1202
|
+
If it is not possible to only have one Rack version installed
|
|
1203
|
+
"globally", then they should either use Isolate or Bundler and
|
|
1204
|
+
install a private version of Unicorn along with their preferred
|
|
1205
|
+
version of Rack. Users who install in this way are recommended
|
|
1206
|
+
to execute the isolated/bundled version of Unicorn, instead of
|
|
1207
|
+
what would normally be in $PATH.
|
|
1208
|
+
|
|
1209
|
+
Feedback/tips to mailto:mongrel-unicorn@rubyforge.org from
|
|
1210
|
+
Isolate and Bundler users would be greatly appreciated.
|
|
1211
|
+
|
|
1212
|
+
=== unicorn 0.98.0 / 2010-05-05 00:53 UTC
|
|
1213
|
+
|
|
1214
|
+
Deployments that suspend or hibernate servers should no longer
|
|
1215
|
+
have workers killed off (and restarted) upon resuming.
|
|
1216
|
+
|
|
1217
|
+
For Linux users of {raindrops}[http://raindrops.bogomips.org/]
|
|
1218
|
+
(v0.2.0+) configuration is easier as raindrops can now
|
|
1219
|
+
automatically detect the active listeners on the server
|
|
1220
|
+
via the new Unicorn.listener_names singleton method.
|
|
1221
|
+
|
|
1222
|
+
For the pedantic, chunked request bodies without trailers are no
|
|
1223
|
+
longer allowed to omit the final CRLF. This shouldn't affect
|
|
1224
|
+
any real and RFC-compliant clients out there. Chunked requests
|
|
1225
|
+
with trailers have always worked and continue to work the same
|
|
1226
|
+
way.
|
|
1227
|
+
|
|
1228
|
+
The rest are mostly small internal cleanups and documentation
|
|
1229
|
+
fixes. See the commit logs for full details.
|
|
1230
|
+
|
|
1231
|
+
=== unicorn 0.97.1 - fix HTTP parser for Rainbows!/Zbatery / 2010-04-19 21:00 UTC
|
|
1232
|
+
|
|
1233
|
+
This release fixes a denial-of-service vector for derived
|
|
1234
|
+
servers exposed directly to untrusted clients.
|
|
1235
|
+
|
|
1236
|
+
This bug does not affect most Unicorn deployments as Unicorn is
|
|
1237
|
+
only supported with trusted clients (such as nginx) on a LAN.
|
|
1238
|
+
nginx is known to reject clients that send invalid
|
|
1239
|
+
Content-Length headers, so any deployments on a trusted LAN
|
|
1240
|
+
and/or behind nginx are safe.
|
|
1241
|
+
|
|
1242
|
+
Servers affected by this bug include (but are not limited to)
|
|
1243
|
+
Rainbows! and Zbatery. This bug does not affect Thin nor
|
|
1244
|
+
Mongrel, as neither got the request body filtering treatment
|
|
1245
|
+
that the Unicorn HTTP parser got in August 2009.
|
|
1246
|
+
|
|
1247
|
+
The bug fixed in this release could result in a
|
|
1248
|
+
denial-of-service as it would trigger a process-wide assertion
|
|
1249
|
+
instead of raising an exception. For servers such as
|
|
1250
|
+
Rainbows!/Zbatery that serve multiple clients per worker
|
|
1251
|
+
process, this could abort all clients connected to the
|
|
1252
|
+
particular worker process that hit the assertion.
|
|
1253
|
+
|
|
1254
|
+
=== unicorn 0.97.0 - polishing and cleaning up / 2010-03-01 18:26 UTC
|
|
1255
|
+
|
|
1256
|
+
A bunch of small fixes related to startup/configuration and hot
|
|
1257
|
+
reload issues with HUP:
|
|
1258
|
+
|
|
1259
|
+
* Variables in the user-generated config.ru files no longer
|
|
1260
|
+
risk clobbering variables used in laucher scripts.
|
|
1261
|
+
|
|
1262
|
+
* signal handlers are initialized before the pid file is
|
|
1263
|
+
dropped, so over-eager firing of init scripts won't
|
|
1264
|
+
mysteriously nuke a process.
|
|
1265
|
+
|
|
1266
|
+
* SIGHUP will return app to original state if an updated
|
|
1267
|
+
config.ru fails to load due to {Syntax,Load}Error.
|
|
1268
|
+
|
|
1269
|
+
* unicorn_rails should be Rails 3 compatible out-of-the-box
|
|
1270
|
+
('unicorn' works as always, and is recommended for Rails 3)
|
|
1271
|
+
|
|
1272
|
+
* unicorn_rails is finally "working_directory"-aware when
|
|
1273
|
+
generating default temporary paths and pid file
|
|
1274
|
+
|
|
1275
|
+
* config.ru encoding is the application's default in 1.9,
|
|
1276
|
+
not forced to binary like many parts of Unicorn.
|
|
1277
|
+
|
|
1278
|
+
* configurator learned to handle the "user" directive outside
|
|
1279
|
+
of after_fork hook (which will always remain supported).
|
|
1280
|
+
|
|
1281
|
+
There are also various internal cleanups and possible speedups.
|
|
1282
|
+
|
|
1283
|
+
=== unicorn 0.96.1 - fix leak in Rainbows!/Zbatery / 2010-02-13 08:35 UTC
|
|
1284
|
+
|
|
1285
|
+
This maintenance release is intended for users of Rainbows! and
|
|
1286
|
+
Zbatery servers (and anybody else using Unicorn::HttpParser).
|
|
1287
|
+
|
|
1288
|
+
This memory leak DID NOT affect Unicorn itself: Unicorn always
|
|
1289
|
+
allocates the HttpParser once and always reuses it in every
|
|
1290
|
+
sequential request.
|
|
1291
|
+
|
|
1292
|
+
This leak affects applications that repeatedly allocate a new
|
|
1293
|
+
HTTP parser. Thus this bug affects _all_ deployments of
|
|
1294
|
+
Rainbows! and Zbatery. These servers allocate a new parser for
|
|
1295
|
+
every client connection to serve clients concurrently.
|
|
1296
|
+
|
|
1297
|
+
I misread the Data_Make_Struct()/Data_Wrap_Struct()
|
|
1298
|
+
documentation and ended up passing NULL as the "free" argument
|
|
1299
|
+
instead of -1, causing the memory to never be freed.
|
|
1300
|
+
|
|
1301
|
+
From README.EXT in the MRI source which I misread:
|
|
1302
|
+
> The free argument is the function to free the pointer
|
|
1303
|
+
> allocation. If this is -1, the pointer will be just freed.
|
|
1304
|
+
> The functions mark and free will be called from garbage
|
|
1305
|
+
> collector.
|
|
1306
|
+
|
|
1307
|
+
=== unicorn 0.96.0 - Rack 1.1 bump / 2010-01-08 05:18 UTC
|
|
1308
|
+
|
|
1309
|
+
This release includes small changes for things allowed by Rack
|
|
1310
|
+
1.1. It is also now easier to detect if daemonized process
|
|
1311
|
+
fails to start. Manpages received some minor updates as well.
|
|
1312
|
+
|
|
1313
|
+
Rack 1.1 allowed us to make the following environment changes:
|
|
1314
|
+
|
|
1315
|
+
* "rack.logger" is now set to the "logger" specified in
|
|
1316
|
+
the Unicorn config file. This defaults to a Logger
|
|
1317
|
+
instance pointing to $stderr.
|
|
1318
|
+
|
|
1319
|
+
* "rack.version" is now at [1,1]. Unicorn remains
|
|
1320
|
+
compatible with previous Rack versions if your app
|
|
1321
|
+
depends on it.
|
|
1322
|
+
|
|
1323
|
+
While only specified since Rack 1.1, Unicorn has always exposed
|
|
1324
|
+
"rack.input" in binary mode (and has ridiculous integration
|
|
1325
|
+
tests that go outside of Ruby to prove it!).
|
|
1326
|
+
|
|
1327
|
+
=== unicorn 0.95.3 / 2009-12-21 21:51 UTC
|
|
1328
|
+
|
|
1329
|
+
The HTTP parser now allows (but does not parse) the userinfo
|
|
1330
|
+
component in the very rare requests that send absoluteURIs.
|
|
1331
|
+
Thanks to Scott Chacon for reporting and submitting a test case
|
|
1332
|
+
for this fix.
|
|
1333
|
+
|
|
1334
|
+
There are also minor documentation updates and tiny cleanups.
|
|
1335
|
+
|
|
1336
|
+
=== unicorn 0.95.2 / 2009-12-07 09:52 UTC
|
|
1337
|
+
|
|
1338
|
+
Small fixes to our HTTP parser to allows semicolons in PATH_INFO
|
|
1339
|
+
as allowed by RFC 2396, section 3.3. This is low impact for
|
|
1340
|
+
existing apps as semicolons are rarely seen in URIs. Our HTTP
|
|
1341
|
+
parser runs properly under Rubinius 0.13.0 and 1.0.0-rc1 again
|
|
1342
|
+
(though not yet the rest of the server since we rely heavily on
|
|
1343
|
+
signals).
|
|
1344
|
+
|
|
1345
|
+
Another round of small documentation tweaks and minor cleanups.
|
|
1346
|
+
|
|
1347
|
+
=== unicorn 0.95.1 / 2009-11-21 21:13 UTC
|
|
1348
|
+
|
|
1349
|
+
Configuration files paths given on the command-line are no
|
|
1350
|
+
longer expanded. This should make configuration reloads
|
|
1351
|
+
possible when a non-absolute path is specified for --config-file
|
|
1352
|
+
and Unicorn was deployed to a symlink directories (as with
|
|
1353
|
+
Capistrano). Since deployments have always been strongly
|
|
1354
|
+
encouraged to use absolute paths in the config file, this
|
|
1355
|
+
change does not affect them.
|
|
1356
|
+
|
|
1357
|
+
This is our first gem release using gemcutter.
|
|
1358
|
+
|
|
1359
|
+
Eric Wong (3):
|
|
1360
|
+
SIGNALS: HUP + preload_app cannot reload app code
|
|
1361
|
+
Do not expand paths given on the shell
|
|
1362
|
+
GNUmakefile: prep release process for gemcutter
|
|
1363
|
+
|
|
1364
|
+
=== unicorn 0.95.0 / 2009-11-15 22:21 UTC
|
|
1365
|
+
|
|
1366
|
+
Mostly internal cleanups and documentation updates. Irrelevant
|
|
1367
|
+
stacktraces from client disconnects/errors while reading
|
|
1368
|
+
"rack.input" are now cleared to avoid unnecessary noise. If
|
|
1369
|
+
user switching in workers is used, ownership of logs is now
|
|
1370
|
+
preserved when reopening worker logs (send USR1 only to the the
|
|
1371
|
+
master in this case). The timeout config no longer affects long
|
|
1372
|
+
after_fork hooks or application startups.
|
|
1373
|
+
|
|
1374
|
+
New features include the addition of the :umask option for the
|
|
1375
|
+
"listen" config directive and error reporting for non-portable
|
|
1376
|
+
socket options.
|
|
1377
|
+
|
|
1378
|
+
No ponies have ever been harmed in our development.
|
|
1379
|
+
|
|
1380
|
+
Eric Wong (28):
|
|
1381
|
+
unicorn.1: document RACK_ENV changes in 0.94.0
|
|
1382
|
+
HACKING: update with "gmake" in examples
|
|
1383
|
+
don't nuke children for long after_fork and app loads
|
|
1384
|
+
local.mk.sample: steal some updates from Rainbows!
|
|
1385
|
+
Load Unicorn constants when building app
|
|
1386
|
+
tee_input: fix RDoc argument definition for tee
|
|
1387
|
+
Add FAQ
|
|
1388
|
+
FAQ: fix links to Configurator docs
|
|
1389
|
+
tee_input: better premature disconnect handling
|
|
1390
|
+
tee_input: don't shadow struct members
|
|
1391
|
+
raise Unicorn::ClientShutdown if client aborts in TeeInput
|
|
1392
|
+
tee_input: fix comment from an intermediate commit
|
|
1393
|
+
FAQ: additional notes on getting HTTPS redirects right
|
|
1394
|
+
configurator: update RDoc and comments in examples
|
|
1395
|
+
bump version to 0.95.0pre
|
|
1396
|
+
configurator: listen :umask parameter for UNIX sockets
|
|
1397
|
+
preserve user/group ownership when reopening logs
|
|
1398
|
+
old_rails/static: avoid freezing strings
|
|
1399
|
+
old_rails: autoload Static
|
|
1400
|
+
const: no need to freeze HTTP_EXPECT
|
|
1401
|
+
test_server: ensure stderr is written to before reading
|
|
1402
|
+
tee_input: expand client error handling
|
|
1403
|
+
replace "rescue => e" with "rescue Object => e"
|
|
1404
|
+
socket_helper: do not hide errors when setting socket options
|
|
1405
|
+
socket_helper: RDoc for constants
|
|
1406
|
+
ClientShutdown: RDoc
|
|
1407
|
+
Rakefile: add raa_update task
|
|
1408
|
+
tee_input: client_error always raises
|
|
1409
|
+
|
|
1410
|
+
=== unicorn 0.94.0 / 2009-11-05 09:52 UTC
|
|
1411
|
+
|
|
1412
|
+
The HTTP parser is fix for oddly-aligned reads of trailers (this
|
|
1413
|
+
technically affects headers, too, but is highly unlikely due to
|
|
1414
|
+
our non-support of slow clients). This allows our HTTP parser
|
|
1415
|
+
to better support very slow clients when used by other servers
|
|
1416
|
+
(like Rainbows!). Fortunately this bug does not appear to lead
|
|
1417
|
+
to any invalid memory accesses (and potential arbitrary code
|
|
1418
|
+
execution).
|
|
1419
|
+
|
|
1420
|
+
FreeBSD (and possibly other *BSDs) support is improved and and
|
|
1421
|
+
all the test cases pass under FreeBSD 7.2. Various flavors of
|
|
1422
|
+
GNU/Linux remains our primary platform for development and
|
|
1423
|
+
production.
|
|
1424
|
+
|
|
1425
|
+
New features added include the "working_directory" directive in
|
|
1426
|
+
the configurator . Even without specifying a
|
|
1427
|
+
"working_directory", symlink-aware detection of the current path
|
|
1428
|
+
no longer depends on /bin/sh so it should work out-of-the-box on
|
|
1429
|
+
FreeBSD and Solaris and not just systems where /bin/sh is dash,
|
|
1430
|
+
ksh93 or bash.
|
|
1431
|
+
|
|
1432
|
+
User-switching support is finally supported but only intended
|
|
1433
|
+
for use in the after_fork hook of worker processes. Putting it
|
|
1434
|
+
in the after_fork hook allows allows users to set things like
|
|
1435
|
+
CPU affinity[1] on a per-worker basis before dropping
|
|
1436
|
+
privileges. The master process retains all privileges it
|
|
1437
|
+
started with.
|
|
1438
|
+
|
|
1439
|
+
The ENV["RACK_ENV"] (process-wide) environment variable is now
|
|
1440
|
+
both read and set for `unicorn' in the same way RAILS_ENV is
|
|
1441
|
+
used by `unicorn_rails'. This allows the Merb launcher to read
|
|
1442
|
+
ENV["RACK_ENV"] in config.ru. Other web servers already set
|
|
1443
|
+
this and there may be applications or libraries that already
|
|
1444
|
+
rely on this de facto standard.
|
|
1445
|
+
|
|
1446
|
+
Eric Wong (26):
|
|
1447
|
+
cleanup: avoid redundant error checks for fstat
|
|
1448
|
+
test_helper: connect(2) may fail with EINVAL
|
|
1449
|
+
GNUmakefile: fix non-portable tar(1) usage
|
|
1450
|
+
tests: provide a pure Ruby setsid(8) equivalent
|
|
1451
|
+
more portable symlink awareness for START_CTX[:cwd]
|
|
1452
|
+
test_signals: avoid portability issues with fchmod(2)
|
|
1453
|
+
cleanup error handling and make it less noisy
|
|
1454
|
+
Do not override Dir.chdir in config files
|
|
1455
|
+
configurator: add "working_directory" directive
|
|
1456
|
+
configurator: working_directory is expanded
|
|
1457
|
+
configurator: set ENV["PWD"] with working_directory, too
|
|
1458
|
+
configurator: working_directory affects pid, std{err,out}_paths
|
|
1459
|
+
configurator: update documentation for working_directory
|
|
1460
|
+
TODO: remove working_directory bit, done
|
|
1461
|
+
Util.reopen_logs: remove needless Range
|
|
1462
|
+
worker: user/group switching for after_fork hooks
|
|
1463
|
+
Fix autoload of Etc in Worker for Ruby 1.9
|
|
1464
|
+
bin/unicorn: allow RACK_ENV to be passed from parent
|
|
1465
|
+
tests for RACK_ENV preservation
|
|
1466
|
+
http: allow headers/trailers to be written byte-wise
|
|
1467
|
+
http: extra test for bytewise chunked bodies
|
|
1468
|
+
tee_input: do not clobber trailer buffer on partial uploads
|
|
1469
|
+
test_exec: ensure master is killed after test
|
|
1470
|
+
Util::tmpio returns a TmpIO that responds to #size
|
|
1471
|
+
TODO: remove user-switching bit, done
|
|
1472
|
+
unicorn 0.94.0
|
|
1473
|
+
|
|
1474
|
+
Wayne Larsen (1):
|
|
1475
|
+
bin/unicorn: set ENV["RACK_ENV"] on startup
|
|
1476
|
+
|
|
1477
|
+
[1] - Unicorn does not support CPU affinity directly, but it is
|
|
1478
|
+
possible to load code that allows it inside after_fork hooks,
|
|
1479
|
+
or even just call sched_tool(8).
|
|
1480
|
+
|
|
1481
|
+
=== unicorn 0.93.5 / 2009-10-29 21:41 UTC
|
|
1482
|
+
|
|
1483
|
+
This release fixes a regression introduced in 0.93.3 where
|
|
1484
|
+
timed-out worker processes run a chance of not being killed off
|
|
1485
|
+
at all if they're hung. While it's not ever advisable to have
|
|
1486
|
+
requests take a long time, we realize it's easy to fix
|
|
1487
|
+
everything :)
|
|
1488
|
+
|
|
1489
|
+
Eric Wong (3):
|
|
1490
|
+
TODO: remove --kill
|
|
1491
|
+
fix reliability of timeout kills
|
|
1492
|
+
TODO: update for next version (possibly 1.0-pre)
|
|
1493
|
+
|
|
1494
|
+
=== unicorn 0.93.4 / 2009-10-27 07:57 UTC
|
|
1495
|
+
|
|
1496
|
+
This release mainly works around BSD stdio compatibility issues
|
|
1497
|
+
that affect at least FreeBSD and OS X. While this issues was
|
|
1498
|
+
documented and fixed in [ruby-core:26300][1], no production
|
|
1499
|
+
release of MRI 1.8 has it, and users typically upgrade MRI more
|
|
1500
|
+
slowly than gems. This issue does NOT affect 1.9 users. Thanks
|
|
1501
|
+
to Vadim Spivak for reporting and testing this issue and Andrey
|
|
1502
|
+
Stikheev for the fix.
|
|
1503
|
+
|
|
1504
|
+
Additionally there are small documentation bits, one error
|
|
1505
|
+
handling improvement, and one minor change that should improve
|
|
1506
|
+
reliability of signal delivery.
|
|
1507
|
+
|
|
1508
|
+
Andrey Stikheev (1):
|
|
1509
|
+
workaround FreeBSD/OSX IO bug for large uploads
|
|
1510
|
+
|
|
1511
|
+
Eric Wong (7):
|
|
1512
|
+
DESIGN: address concerns about on-demand and thundering herd
|
|
1513
|
+
README: alter reply conventions for the mailing list
|
|
1514
|
+
configurator: stop testing for non-portable listens
|
|
1515
|
+
KNOWN_ISSUES: document Rack gem issue w/Rails 2.3.2
|
|
1516
|
+
stop continually resends signals during shutdowns
|
|
1517
|
+
add news bodies to site NEWS.atom.xml
|
|
1518
|
+
configurator: fix broken example in RDoc
|
|
1519
|
+
|
|
1520
|
+
Suraj N. Kurapati (1):
|
|
1521
|
+
show configuration file path in errors instead of '(eval)'
|
|
1522
|
+
|
|
1523
|
+
[1] http://redmine.ruby-lang.org/issues/show/2267
|
|
1524
|
+
|
|
1525
|
+
=== unicorn 0.93.3 / 2009-10-09 22:50 UTC
|
|
1526
|
+
|
|
1527
|
+
This release fixes compatibility with OpenBSD (and possibly
|
|
1528
|
+
other Unices with stricter fchmod(2) implementations) thanks to
|
|
1529
|
+
Jeremy Evans. Additionally there are small documentation
|
|
1530
|
+
changes all around.
|
|
1531
|
+
|
|
1532
|
+
Eric Wong (12):
|
|
1533
|
+
doc: expand on the SELF_PIPE description
|
|
1534
|
+
fchmod heartbeat flips between 0/1 for compatibility
|
|
1535
|
+
examples/init.sh: remove "set -u"
|
|
1536
|
+
configurator: update with nginx fail_timeout=0 example
|
|
1537
|
+
PHILOSOPHY: clarify experience other deployments
|
|
1538
|
+
PHILOSOPHY: plug the Rainbows! spin-off project
|
|
1539
|
+
README: remove unnecessary and extraneous dash
|
|
1540
|
+
DESIGN: clarification and possibly improve HTML validity
|
|
1541
|
+
README: remove the "non-existent" part
|
|
1542
|
+
README: emphasize the "fast clients"-only part
|
|
1543
|
+
drop the whitespace cleaner for Ragel->C
|
|
1544
|
+
unicorn 0.93.3
|
|
1545
|
+
|
|
1546
|
+
=== unicorn 0.93.2 / 2009-10-07 08:45 UTC
|
|
1547
|
+
|
|
1548
|
+
Avoid truncated POST bodies from with URL-encoded forms in Rails
|
|
1549
|
+
by switching TeeInput to use read-in-full semantics (only) when
|
|
1550
|
+
a Content-Length: header exists. Chunked request bodies
|
|
1551
|
+
continue to exhibit readpartial semantics to support
|
|
1552
|
+
simultaneous bidirectional chunking.
|
|
1553
|
+
|
|
1554
|
+
The lack of return value checking in Rails to protect against a
|
|
1555
|
+
short ios.read(length) is entirely reasonable even if not
|
|
1556
|
+
pedantically correct. Most ios.read(length) implementations
|
|
1557
|
+
return the full amount requested except right before EOF.
|
|
1558
|
+
|
|
1559
|
+
Also there are some minor documentation improvements.
|
|
1560
|
+
|
|
1561
|
+
Eric Wong (8):
|
|
1562
|
+
Fix NEWS generation on single-paragraph tag messages
|
|
1563
|
+
Include GPLv2 in docs
|
|
1564
|
+
doc: make it clear contributors retain copyrights
|
|
1565
|
+
TODO: removed Rainbows! (see rainbows.rubyforge.org)
|
|
1566
|
+
Document the START_CTX hash contents
|
|
1567
|
+
more-compatible TeeInput#read for POSTs with Content-Length
|
|
1568
|
+
tests for read-in-full vs readpartial semantics
|
|
1569
|
+
unicorn 0.93.2
|
|
1570
|
+
|
|
1571
|
+
=== unicorn 0.93.1 / 2009-10-03 01:17 UTC
|
|
1572
|
+
|
|
1573
|
+
Fix permissions for release tarballs/gems, no other changes.
|
|
1574
|
+
Thanks to Jay Reitz for reporting this.
|
|
1575
|
+
|
|
1576
|
+
=== unicorn 0.93.0 / 2009-10-02 21:04 UTC
|
|
1577
|
+
|
|
1578
|
+
The one minor bugfix is only for Rails 2.3.x+ users who set the
|
|
1579
|
+
RAILS_RELATIVE_URL_ROOT environment variable in a config file.
|
|
1580
|
+
Users of the "--path" switch or those who set the environment
|
|
1581
|
+
variable in the shell were unaffected by this bug. Note that we
|
|
1582
|
+
still don't have relative URL root support for Rails < 2.3, and
|
|
1583
|
+
are unlikely to bother with it unless there is visible demand
|
|
1584
|
+
for it.
|
|
1585
|
+
|
|
1586
|
+
New features includes support for :tries and :delay when
|
|
1587
|
+
specifying a "listen" in an after_fork hook. This was inspired
|
|
1588
|
+
by Chris Wanstrath's example of binding per-worker listen
|
|
1589
|
+
sockets in a loop while migrating (or upgrading) Unicorn.
|
|
1590
|
+
Setting a negative value for :tries means we'll retry the listen
|
|
1591
|
+
indefinitely until the socket becomes available.
|
|
1592
|
+
|
|
1593
|
+
So you can do something like this in an after_fork hook:
|
|
1594
|
+
|
|
1595
|
+
after_fork do |server, worker|
|
|
1596
|
+
addr = "127.0.0.1:#{9293 + worker.nr}"
|
|
1597
|
+
server.listen(addr, :tries => -1, :delay => 5)
|
|
1598
|
+
end
|
|
1599
|
+
|
|
1600
|
+
There's also the usual round of added documentation, packaging
|
|
1601
|
+
fixes, code cleanups, small fixes and minor performance
|
|
1602
|
+
improvements that are viewable in the "git log" output.
|
|
1603
|
+
|
|
1604
|
+
Eric Wong (55):
|
|
1605
|
+
build: hardcode the canonical git URL
|
|
1606
|
+
build: manifest dropped manpages
|
|
1607
|
+
build: smaller ChangeLog
|
|
1608
|
+
doc/LATEST: remove trailing newline
|
|
1609
|
+
http: don't force -fPIC if it can't be used
|
|
1610
|
+
.gitignore on *.rbc files Rubinius generates
|
|
1611
|
+
README/gemspec: a better description, hopefully
|
|
1612
|
+
GNUmakefile: add missing .manifest dep on test installs
|
|
1613
|
+
Add HACKING document
|
|
1614
|
+
configurator: fix user switch example in RDoc
|
|
1615
|
+
local.mk.sample: time and perms enforcement
|
|
1616
|
+
unicorn_rails: show "RAILS_ENV" in help message
|
|
1617
|
+
gemspec: compatibility with older Rubygems
|
|
1618
|
+
Split out KNOWN_ISSUES document
|
|
1619
|
+
KNOWN_ISSUES: add notes about the "isolate" gem
|
|
1620
|
+
gemspec: fix test_files regexp match
|
|
1621
|
+
gemspec: remove tests that fork from test_files
|
|
1622
|
+
test_signals: ensure we can parse pids in response
|
|
1623
|
+
GNUmakefile: cleanup test/manifest generation
|
|
1624
|
+
util: remove APPEND_FLAGS constant
|
|
1625
|
+
http_request: simplify and remove handle_body method
|
|
1626
|
+
http_response: simplify and remove const dependencies
|
|
1627
|
+
local.mk.sample: fix .js times
|
|
1628
|
+
TUNING: notes about benchmarking a high :backlog
|
|
1629
|
+
HttpServer#listen accepts :tries and :delay parameters
|
|
1630
|
+
"make install" avoids installing multiple .so objects
|
|
1631
|
+
Use Configurator#expand_addr in HttpServer#listen
|
|
1632
|
+
configurator: move initialization stuff to #initialize
|
|
1633
|
+
Remove "Z" constant for binary strings
|
|
1634
|
+
cgi_wrapper: don't warn about stdoutput usage
|
|
1635
|
+
cgi_wrapper: simplify status handling in response
|
|
1636
|
+
cgi_wrapper: use Array#concat instead of +=
|
|
1637
|
+
server: correctly unset reexec_pid on child death
|
|
1638
|
+
configurator: update and modernize examples
|
|
1639
|
+
configurator: add colons in front of listen() options
|
|
1640
|
+
configurator: remove DEFAULT_LOGGER constant
|
|
1641
|
+
gemspec: clarify commented-out licenses section
|
|
1642
|
+
Add makefile targets for non-release installs
|
|
1643
|
+
cleanup: use question mark op for 1-byte comparisons
|
|
1644
|
+
RDoc for Unicorn::HttpServer::Worker
|
|
1645
|
+
small cleanup to pid file handling + documentation
|
|
1646
|
+
rails: RAILS_RELATIVE_URL_ROOT may be set in Unicorn config
|
|
1647
|
+
unicorn_rails: undeprecate --path switch
|
|
1648
|
+
manpages: document environment variables
|
|
1649
|
+
README: remove reference to different versions
|
|
1650
|
+
Avoid a small window when a pid file can be empty
|
|
1651
|
+
configurator: update some migration examples
|
|
1652
|
+
configurator: listen :delay must be Numeric
|
|
1653
|
+
test: don't rely on .manifest for test install
|
|
1654
|
+
SIGNALS: state that we stole semantics from nginx
|
|
1655
|
+
const: DEFAULT_PORT as a string doesn't make sense
|
|
1656
|
+
test_helper: unused_port rejects 8080 unconditionally
|
|
1657
|
+
GNUmakefile: SINCE variable may be unset
|
|
1658
|
+
tests: GIT-VERSION-GEN is a test install dependency
|
|
1659
|
+
unicorn 0.93.0
|
|
1660
|
+
|
|
1661
|
+
=== unicorn 0.92.0 / 2009-09-18 21:40 UTC
|
|
1662
|
+
|
|
1663
|
+
Small fixes and documentation are the focus of this release.
|
|
1664
|
+
|
|
1665
|
+
James Golick reported and helped me track down a bug that caused
|
|
1666
|
+
SIGHUP to drop the default listener (0.0.0.0:8080) if and only
|
|
1667
|
+
if listeners were completely unspecified in both the
|
|
1668
|
+
command-line and Unicorn config file. The Unicorn config file
|
|
1669
|
+
remains the recommended option for specifying listeners as it
|
|
1670
|
+
allows fine-tuning of the :backlog, :rcvbuf, :sndbuf,
|
|
1671
|
+
:tcp_nopush, and :tcp_nodelay options.
|
|
1672
|
+
|
|
1673
|
+
There are some documentation (and resulting website)
|
|
1674
|
+
improvements. setup.rb users will notice the new section 1
|
|
1675
|
+
manpages for `unicorn` and `unicorn_rails`, Rubygems users
|
|
1676
|
+
will have to install manpages manually or use the website.
|
|
1677
|
+
|
|
1678
|
+
The HTTP parser got a 3rd-party code review which resulted in
|
|
1679
|
+
some cleanups and one insignificant bugfix as a result.
|
|
1680
|
+
|
|
1681
|
+
Additionally, the HTTP parser compiles, runs and passes unit
|
|
1682
|
+
tests under Rubinius. The pure-Ruby parts still do not work yet
|
|
1683
|
+
and we currently lack the resources/interest to pursue this
|
|
1684
|
+
further but help will be gladly accepted.
|
|
1685
|
+
|
|
1686
|
+
The website now has an Atom feed for new release announcements.
|
|
1687
|
+
Those unfamiliar with Atom or HTTP may finger unicorn@bogomips.org
|
|
1688
|
+
for the latest announcements.
|
|
1689
|
+
|
|
1690
|
+
Eric Wong (53):
|
|
1691
|
+
README: update with current version
|
|
1692
|
+
http: cleanup and avoid potential signedness warning
|
|
1693
|
+
http: clarify the setting of the actual header in the hash
|
|
1694
|
+
http: switch to macros for bitflag handling
|
|
1695
|
+
http: refactor keepalive tracking to functions
|
|
1696
|
+
http: use explicit elses for readability
|
|
1697
|
+
http: remove needless goto
|
|
1698
|
+
http: extra assertion when advancing p manually
|
|
1699
|
+
http: verbose assertions
|
|
1700
|
+
http: NIL_P(var) instead of var == Qnil
|
|
1701
|
+
http: rb_gc_mark already ignores immediates
|
|
1702
|
+
http: ignore Host: continuation lines with absolute URIs
|
|
1703
|
+
doc/SIGNALS: fix the no-longer-true bit about socket options
|
|
1704
|
+
"encoding: binary" comments for all sources (1.9)
|
|
1705
|
+
http_response: don't "rescue nil" for body.close
|
|
1706
|
+
CONTRIBUTORS: fix capitalization for why
|
|
1707
|
+
http: support Rubies without the OBJ_FROZEN macro
|
|
1708
|
+
http: define OFFT2NUM macro on Rubies without it
|
|
1709
|
+
http: no-op rb_str_modify() for Rubies without it
|
|
1710
|
+
http: compile with -fPIC
|
|
1711
|
+
http: use rb_str_{update,flush} if available
|
|
1712
|
+
http: create a new string buffer on empty values
|
|
1713
|
+
Update documentation for Rubinius support status
|
|
1714
|
+
http: cleanup assertion for memoized header strings
|
|
1715
|
+
http: add #endif comment labels where appropriate
|
|
1716
|
+
Add .mailmap file for "git shortlog" and other tools
|
|
1717
|
+
Update Manifest with mailmap
|
|
1718
|
+
Fix comment about speculative accept()
|
|
1719
|
+
SIGNALS: use "Unicorn" when referring to the web server
|
|
1720
|
+
Add new Documentation section for manpages
|
|
1721
|
+
test_exec: add extra tests for HUP and preload_app
|
|
1722
|
+
socket_helper: (FreeBSD) don't freeze the accept filter constant
|
|
1723
|
+
Avoid freezing objects that don't benefit from it
|
|
1724
|
+
SIGHUP no longer drops lone, default listener
|
|
1725
|
+
doc: generate ChangeLog and NEWS file for RDoc
|
|
1726
|
+
Remove Echoe and roll our own packaging/release...
|
|
1727
|
+
unicorn_rails: close parentheses in help message
|
|
1728
|
+
launchers: deprecate ambiguous -P/--p* switches
|
|
1729
|
+
man1/unicorn: avoid unnecessary emphasis
|
|
1730
|
+
Add unicorn_rails(1) manpage
|
|
1731
|
+
Documentation: don't force --rsyncable flag with gzip(1)
|
|
1732
|
+
Simplify and standardize manpages build/install
|
|
1733
|
+
GNUmakefile: package .tgz includes all generated files
|
|
1734
|
+
doc: begin integration of HTML manpages into RDoc
|
|
1735
|
+
Update TODO
|
|
1736
|
+
html: add Atom feeds
|
|
1737
|
+
doc: latest news is available through finger
|
|
1738
|
+
NEWS.atom: file timestamp matches latest entry
|
|
1739
|
+
pandoc needs the standalone switch for manpages
|
|
1740
|
+
man1/unicorn: split out RACK ENVIRONMENT section
|
|
1741
|
+
man1/unicorn_rails: fix unescaped underscore
|
|
1742
|
+
NEWS.atom.xml only lists the first 10 entries
|
|
1743
|
+
unicorn 0.92.0
|
|
1744
|
+
|
|
1745
|
+
=== unicorn 0.10.3r / 2009-09-09 00:09 UTC
|
|
1746
|
+
|
|
1747
|
+
Removes the Rev monkey patch, rev 0.3.0 is out now so we can
|
|
1748
|
+
just depend on that instead of monkey patching it. Experimental
|
|
1749
|
+
HTTP keepalive/pipelining support has arrived as well.
|
|
1750
|
+
|
|
1751
|
+
Three features from mainline Unicorn are now working again with
|
|
1752
|
+
this branch:
|
|
1753
|
+
|
|
1754
|
+
* Deadlocked workers can be detected by the master and nuked
|
|
1755
|
+
* multiple (TCP) listeners per process
|
|
1756
|
+
* graceful shutdown
|
|
1757
|
+
|
|
1758
|
+
This (pre-)release does NOT feature HTTP/0.9 support that
|
|
1759
|
+
Unicorn 0.91.0 had, expect that when this branch is ready for
|
|
1760
|
+
merging with mainline.
|
|
1761
|
+
|
|
1762
|
+
=== unicorn 0.91.0 / 2009-09-04 19:04 UTC
|
|
1763
|
+
|
|
1764
|
+
HTTP/0.9 support, multiline header support, small fixes
|
|
1765
|
+
|
|
1766
|
+
18 years too late, Unicorn finally gets HTTP/0.9 support
|
|
1767
|
+
as HTTP was implemented in 1991.
|
|
1768
|
+
|
|
1769
|
+
Eric Wong (16):
|
|
1770
|
+
Documentation updates
|
|
1771
|
+
examples/echo: "Expect:" value is case-insensitive
|
|
1772
|
+
http: make strings independent before modification
|
|
1773
|
+
http: support for multi-line HTTP headers
|
|
1774
|
+
tee_input: fix rdoc
|
|
1775
|
+
unicorn_http: "fix" const warning
|
|
1776
|
+
http: extension-methods allow any tokens
|
|
1777
|
+
http: support for simple HTTP/0.9 GET requests
|
|
1778
|
+
test_http_parser_ng: fix failing HTTP/0.9 test case
|
|
1779
|
+
launcher: defer daemonized redirects until config is read
|
|
1780
|
+
test to ensure stderr goes *somewhere* when daemonized
|
|
1781
|
+
http: SERVER_PROTOCOL matches HTTP_VERSION
|
|
1782
|
+
http: add HttpParser#headers? method
|
|
1783
|
+
Support HTTP/0.9 entity-body-only responses
|
|
1784
|
+
Redirect files in binary mode
|
|
1785
|
+
unicorn 0.91.0
|
|
1786
|
+
|
|
1787
|
+
=== unicorn v0.10.2r --rainbows / 2009-08-18 22:28 UTC
|
|
1788
|
+
|
|
1789
|
+
Two botched releases in one day, hopefully this is the last...
|
|
1790
|
+
|
|
1791
|
+
Eric Wong (3):
|
|
1792
|
+
rainbows: monkey-patch Rev::TCPListener for now
|
|
1793
|
+
rainbows: make the embedded SHA1 app Rack::Lint-safe
|
|
1794
|
+
unicorn 0.10.2r
|
|
1795
|
+
|
|
1796
|
+
=== unicorn 0.10.1r --rainbows / 2009-08-18 22:01 UTC
|
|
1797
|
+
|
|
1798
|
+
Ruby 1.9 only, again
|
|
1799
|
+
|
|
1800
|
+
Eric Wong (2):
|
|
1801
|
+
Actually hook up Rainbows to the rest of the beast
|
|
1802
|
+
unicorn 0.10.1r
|
|
1803
|
+
|
|
1804
|
+
=== unicorn 0.10.0r -- rainbows! / 2009-08-18 21:41 UTC
|
|
1805
|
+
|
|
1806
|
+
This "release" is for Ruby 1.9 only
|
|
1807
|
+
|
|
1808
|
+
=== unicorn 0.90.0 / 2009-08-17 00:24 UTC
|
|
1809
|
+
|
|
1810
|
+
switch chunking+trailer handling to Ragel, v0.8.4 fixes
|
|
1811
|
+
|
|
1812
|
+
Moved chunked decoding and trailer parsing over to C/Ragel.
|
|
1813
|
+
Minor bug fixes, internal code cleanups, and API changes.
|
|
1814
|
+
|
|
1815
|
+
Eric Wong (55):
|
|
1816
|
+
README: update version numbers for website
|
|
1817
|
+
Update Rails tests to run on Rails 2.3.3.1
|
|
1818
|
+
README: latest stable version is 0.8.4
|
|
1819
|
+
unicorn_http: small cleanups and size reduction
|
|
1820
|
+
Remove Ragel-generated file from version control
|
|
1821
|
+
unicorn_http: remove typedef from http_parser
|
|
1822
|
+
unicorn_http: update copyright
|
|
1823
|
+
unicorn_http: change "global_" prefix to "g_"
|
|
1824
|
+
unicorn_http: add helpful macros
|
|
1825
|
+
extconf: SIZEOF_OFF_T should be a ruby.h macro
|
|
1826
|
+
Refactoring unicorn_http C/Ragel code
|
|
1827
|
+
http: find_common_field_value => find_common_field
|
|
1828
|
+
http: split uncommon_field into a separate function
|
|
1829
|
+
http: remove some redundant functions
|
|
1830
|
+
http: "hp" denotes http_parser structs for consistency
|
|
1831
|
+
http: small cleanup in "https" detection
|
|
1832
|
+
http: minor cleanup of http_field handling
|
|
1833
|
+
http: split out server params handling
|
|
1834
|
+
http: move global initialization code
|
|
1835
|
+
http: cleanup setting for common values => globals
|
|
1836
|
+
http: remove noise functions
|
|
1837
|
+
http: move non-Ruby-specific macros c_util.h
|
|
1838
|
+
http: prepare http_parser struct for body processing
|
|
1839
|
+
http: generic C string vs VALUEs comparison function
|
|
1840
|
+
http: process Content-Length and Transfer-Encoding
|
|
1841
|
+
http: preliminary chunk decoding
|
|
1842
|
+
test_upload: extra CRLF is needed
|
|
1843
|
+
Switch to Ragel/C-based chunk/trailer parser
|
|
1844
|
+
http: unit tests for overflow and bad lengths
|
|
1845
|
+
http: add test for invalid trailer
|
|
1846
|
+
http: join repeated headers with a comma
|
|
1847
|
+
test_util: explicitly close tempfiles for GC-safety
|
|
1848
|
+
test_exec: wait for worker readiness
|
|
1849
|
+
Documentation updates
|
|
1850
|
+
test_signals: unlink log files of KILL-ed process
|
|
1851
|
+
http: rename read_body to filter_body
|
|
1852
|
+
http: add CONST_MEM_EQ macro
|
|
1853
|
+
http: add "HttpParser#keepalive?" method
|
|
1854
|
+
http: freeze fields when creating them, always
|
|
1855
|
+
README: everybody loves Ruby DSLs
|
|
1856
|
+
http_request: reinstate empty StringIO optimization
|
|
1857
|
+
tee_input: make interface more usable outside of Unicorn
|
|
1858
|
+
Drop the micro benchmarks
|
|
1859
|
+
http: fix warning when sizeof(off_t) == sizeof(long long)
|
|
1860
|
+
GNUmakefile: Fix "install" target
|
|
1861
|
+
Fix documentation for Util.reopen_logs
|
|
1862
|
+
http_response: pass through unknown status codes
|
|
1863
|
+
const: remove unused constants
|
|
1864
|
+
update TODO
|
|
1865
|
+
http: support for "Connection: keep-alive"
|
|
1866
|
+
TODO: remove keep-alive/pipelining
|
|
1867
|
+
Make launchers __END__-aware
|
|
1868
|
+
Remove explicit requires for Rack things
|
|
1869
|
+
app/inetd: explicitly close pipe descriptors on CatBody#close
|
|
1870
|
+
unicorn 0.90.0
|
|
1871
|
+
|
|
1872
|
+
=== unicorn 0.8.4 / 2009-08-06 22:48 UTC
|
|
1873
|
+
|
|
1874
|
+
pass through unknown HTTP status codes
|
|
1875
|
+
|
|
1876
|
+
This release allows graceful degradation in case a user is using a
|
|
1877
|
+
status code not defined by Rack::Utils::HTTP_STATUS_CODES. A patch has
|
|
1878
|
+
been submitted[1] upstream to Rack but this issue may still affect users
|
|
1879
|
+
of yet-to-be-standardized status codes.
|
|
1880
|
+
|
|
1881
|
+
Eric Wong (2):
|
|
1882
|
+
http_response: pass through unknown status codes
|
|
1883
|
+
unicorn 0.8.4
|
|
1884
|
+
|
|
1885
|
+
[1] - http://rack.lighthouseapp.com/projects/22435-rack/tickets/70
|
|
1886
|
+
|
|
1887
|
+
=== unicorn 0.9.2 / 2009-07-20 01:29 UTC
|
|
1888
|
+
|
|
1889
|
+
Ruby 1.9.2 preview1 compatibility
|
|
1890
|
+
|
|
1891
|
+
This release mainly fixes compatibility issues the Ruby 1.9.2 preview1
|
|
1892
|
+
release (and one existing 1.9.x issue). Note that Rails 2.3.2.1 does
|
|
1893
|
+
NOT appear to work with Ruby 1.9.2 preview1, but that is outside the
|
|
1894
|
+
scope of this project.
|
|
1895
|
+
|
|
1896
|
+
The 0.9.x series (including this release) is only recommended for
|
|
1897
|
+
development/experimental use. This series is NOT recommended for
|
|
1898
|
+
production use, use 0.8.x instead.
|
|
1899
|
+
|
|
1900
|
+
Eric Wong (10):
|
|
1901
|
+
README: add Gmane newsgroup info
|
|
1902
|
+
README: update about development/stable versions
|
|
1903
|
+
Rename unicorn/http11 => unicorn_http
|
|
1904
|
+
move all #gets logic to tee_input out of chunked_reader
|
|
1905
|
+
http_request: don't support apps that close env["rack.input"]
|
|
1906
|
+
HttpRequest: no need for a temporary variable
|
|
1907
|
+
Remove core Tempfile dependency (1.9.2-preview1 compat)
|
|
1908
|
+
fix tests to run correctly under 1.9.2preview1
|
|
1909
|
+
app/exec_cgi: fix 1.9 compatibility
|
|
1910
|
+
unicorn 0.9.2
|
|
1911
|
+
|
|
1912
|
+
=== unicorn 0.8.3 / 2009-07-20 01:26 UTC
|
|
1913
|
+
|
|
1914
|
+
Ruby 1.9.2 preview1 compatibility
|
|
1915
|
+
|
|
1916
|
+
This release fixes compatibility issues the Ruby 1.9.2 preview1
|
|
1917
|
+
release (and one existing 1.9.x issue). Note that Rails 2.3.2.1
|
|
1918
|
+
does NOT appear to work with Ruby 1.9.2 preview1, but that
|
|
1919
|
+
is outside the scope of this project.
|
|
1920
|
+
|
|
1921
|
+
Eric Wong (4):
|
|
1922
|
+
Remove core Tempfile dependency (1.9.2-preview1 compat)
|
|
1923
|
+
fix tests to run correctly under 1.9.2preview1
|
|
1924
|
+
app/exec_cgi: fix 1.9 compatibility
|
|
1925
|
+
unicorn 0.8.3
|
|
1926
|
+
|
|
1927
|
+
=== unicorn 0.8.2 / 2009-07-09 08:59 UTC
|
|
1928
|
+
|
|
1929
|
+
socket handling bugfixes and usability tweaks
|
|
1930
|
+
|
|
1931
|
+
Socket handling bugfixes and socket-related usability and
|
|
1932
|
+
performance tweaks. We no longer trust FD_CLOEXEC to be
|
|
1933
|
+
inherited across accept(); thanks to Paul Sponagl for diagnosing
|
|
1934
|
+
this issue on OSX. There are also minor tweaks backported from
|
|
1935
|
+
0.9.0 to make non-graceful restarts/upgrades go more smoothly.
|
|
1936
|
+
|
|
1937
|
+
Eric Wong (6):
|
|
1938
|
+
Unbind listeners as before stopping workers
|
|
1939
|
+
Retry listen() on EADDRINUSE 5 times every 500ms
|
|
1940
|
+
Re-add support for non-portable socket options
|
|
1941
|
+
Minor cleanups to core
|
|
1942
|
+
always set FD_CLOEXEC on sockets post-accept()
|
|
1943
|
+
unicorn 0.8.2
|
|
1944
|
+
|
|
1945
|
+
=== unicorn 0.9.1 / 2009-07-09 08:49 UTC
|
|
1946
|
+
|
|
1947
|
+
FD_CLOEXEC portability fix (v0.8.2 port)
|
|
1948
|
+
|
|
1949
|
+
Minor cleanups, set FD_CLOEXEC on accepted listen sockets
|
|
1950
|
+
instead of relying on the flag to be inherited across accept.
|
|
1951
|
+
|
|
1952
|
+
The 0.9.x series (including this release) is NOT recommended for
|
|
1953
|
+
production use, try 0.8.x instead.
|
|
1954
|
+
|
|
1955
|
+
Eric Wong (10):
|
|
1956
|
+
Avoid temporary array creation
|
|
1957
|
+
Favor Struct members to instance variables
|
|
1958
|
+
Minor cleanups to core
|
|
1959
|
+
Unbind listeners as before stopping workers
|
|
1960
|
+
Retry listen() on EADDRINUSE 5 times ever 500ms
|
|
1961
|
+
Re-add support for non-portable socket options
|
|
1962
|
+
Minor cleanups to core (cherry picked from commit ec70433f84664af0dff1336845ddd51f50a714a3)
|
|
1963
|
+
always set FD_CLOEXEC on sockets post-accept()
|
|
1964
|
+
unicorn 0.8.2
|
|
1965
|
+
unicorn 0.9.1 (merge 0.8.2)
|
|
1966
|
+
|
|
1967
|
+
=== unicorn 0.9.0 / 2009-07-01 22:24 UTC
|
|
1968
|
+
|
|
1969
|
+
bodies: "Transfer-Encoding: chunked", rewindable streaming
|
|
1970
|
+
|
|
1971
|
+
We now have support for "Transfer-Encoding: chunked" bodies in
|
|
1972
|
+
requests. Not only that, Rack applications reading input bodies
|
|
1973
|
+
get that data streamed off to the client socket on an as-needed
|
|
1974
|
+
basis. This allows the application to do things like upload
|
|
1975
|
+
progress notification and even tunneling of arbitrary stream
|
|
1976
|
+
protocols via bidirectional chunked encoding.
|
|
1977
|
+
|
|
1978
|
+
See Unicorn::App::Inetd and examples/git.ru (including the
|
|
1979
|
+
comments) for an example of tunneling the git:// protocol over
|
|
1980
|
+
HTTP.
|
|
1981
|
+
|
|
1982
|
+
This release also gives applications the ability to respond
|
|
1983
|
+
positively to "Expect: 100-continue" headers before being rerun
|
|
1984
|
+
without closing the socket connection. See Unicorn::App::Inetd
|
|
1985
|
+
for an example of how this is used.
|
|
1986
|
+
|
|
1987
|
+
This release is NOT recommended for production use.
|
|
1988
|
+
|
|
1989
|
+
Eric Wong (43):
|
|
1990
|
+
http_request: no need to reset the request
|
|
1991
|
+
http_request: StringIO is binary for empty bodies (1.9)
|
|
1992
|
+
http_request: fix typo for 1.9
|
|
1993
|
+
Transfer-Encoding: chunked streaming input support
|
|
1994
|
+
Unicorn::App::Inetd: reinventing Unix, poorly :)
|
|
1995
|
+
README: update with mailing list info
|
|
1996
|
+
local.mk.sample: publish_doc gzips all html, js, css
|
|
1997
|
+
Put copyright text in new files, include GPL2 text
|
|
1998
|
+
examples/cat-chunk-proxy: link to proposed curl(1) patch
|
|
1999
|
+
Update TODO
|
|
2000
|
+
Avoid duplicating the "Z" constant
|
|
2001
|
+
Optimize body-less GET/HEAD requests (again)
|
|
2002
|
+
tee_input: Don't expose the @rd object as a return value
|
|
2003
|
+
exec_cgi: small cleanups
|
|
2004
|
+
README: another note about older Sinatra
|
|
2005
|
+
tee_input: avoid defining a @rd.size method
|
|
2006
|
+
Make TeeInput easier to use
|
|
2007
|
+
test_upload: add tests for chunked encoding
|
|
2008
|
+
GNUmakefile: more stringent error checking in tests
|
|
2009
|
+
test_upload: fix ECONNRESET with 1.9
|
|
2010
|
+
GNUmakefile: allow TRACER= to be specified for tests
|
|
2011
|
+
test_rails: workaround long-standing 1.9 bug
|
|
2012
|
+
tee_input: avoid rereading fresh data
|
|
2013
|
+
"Fix" tests that break with stream_input=false
|
|
2014
|
+
inetd: fix broken constant references
|
|
2015
|
+
configurator: provide stream_input (true|false) option
|
|
2016
|
+
chunked_reader: simpler interface
|
|
2017
|
+
http_request: force BUFFER to be Encoding::BINARY
|
|
2018
|
+
ACK clients on "Expect: 100-continue" header
|
|
2019
|
+
Only send "100 Continue" when no body has been sent
|
|
2020
|
+
http_request: tighter Transfer-Encoding: "chunked" check
|
|
2021
|
+
Add trailer_parser for parsing trailers
|
|
2022
|
+
chunked_reader: Add test for chunk parse failure
|
|
2023
|
+
TeeInput: use only one IO for tempfile
|
|
2024
|
+
trailer_parser: set keys with "HTTP_" prefix
|
|
2025
|
+
TrailerParser integration into ChunkedReader
|
|
2026
|
+
Unbind listeners as before stopping workers
|
|
2027
|
+
Retry listen() on EADDRINUSE 5 times ever 500ms
|
|
2028
|
+
Re-add support for non-portable socket options
|
|
2029
|
+
Move "Expect: 100-continue" handling to the app
|
|
2030
|
+
tee_input: avoid ignoring initial body blob
|
|
2031
|
+
Force streaming input onto apps by default
|
|
2032
|
+
unicorn 0.9.0
|
|
2033
|
+
|
|
2034
|
+
=== unicorn 0.8.1 / 2009-05-28 21:45 UTC
|
|
2035
|
+
|
|
2036
|
+
safer timeout handling, more consistent reload behavior
|
|
2037
|
+
|
|
2038
|
+
This release features safer, more descriptive timeout handling, more
|
|
2039
|
+
consistent reload behavior, and is a miniscule amount faster on
|
|
2040
|
+
"Hello World" benchmarks
|
|
2041
|
+
|
|
2042
|
+
Eric Wong (7):
|
|
2043
|
+
doc: cleanup summary/description
|
|
2044
|
+
Fix potential race condition in timeout handling
|
|
2045
|
+
SIGHUP reloads app even if preload_app is true
|
|
2046
|
+
Make our HttpRequest object a global constant
|
|
2047
|
+
Avoid instance variables lookups in a critical path
|
|
2048
|
+
Consistent logger assignment for multiple objects
|
|
2049
|
+
unicorn 0.8.1
|
|
2050
|
+
|
|
2051
|
+
=== unicorn 0.8.0 / 2009-05-26 22:59 UTC
|
|
2052
|
+
|
|
2053
|
+
enforce Rack dependency, minor performance improvements and fixes
|
|
2054
|
+
|
|
2055
|
+
The RubyGem now has a hard dependency on Rack. Minor performance
|
|
2056
|
+
improvements and code cleanups. If RubyGems are in use, the Gem index
|
|
2057
|
+
is refreshed when SIGHUP is issued.
|
|
2058
|
+
|
|
2059
|
+
Eric Wong (66):
|
|
2060
|
+
test_request: enable with Ruby 1.9 now Rack 1.0.0 is out
|
|
2061
|
+
Small cleanup
|
|
2062
|
+
test_upload: still uncomfortable with 1.9 IO encoding...
|
|
2063
|
+
Add example init script
|
|
2064
|
+
app/exec_cgi: GC prevention
|
|
2065
|
+
Add TUNING document
|
|
2066
|
+
Make speculative accept() faster for the common case
|
|
2067
|
+
app/old_rails: correctly log errors in output
|
|
2068
|
+
http_request: avoid StringIO.new for GET/HEAD requests
|
|
2069
|
+
http_response: luserspace buffering is barely faster
|
|
2070
|
+
benchmark/*: updates for newer versions of Unicorn
|
|
2071
|
+
http_request: switch to readpartial over sysread
|
|
2072
|
+
No point in unsetting the O_NONBLOCK flag
|
|
2073
|
+
Merge commit 'origin/benchmark'
|
|
2074
|
+
Safer timeout handling and test case
|
|
2075
|
+
Ignore unhandled master signals in the workers
|
|
2076
|
+
TUNING: add a note about somaxconn with UNIX sockets
|
|
2077
|
+
Remove redundant socket closing/checking
|
|
2078
|
+
Instant shutdown signals really mean instant shutdown
|
|
2079
|
+
test_signals: ready workers before connecting
|
|
2080
|
+
Speed up the worker accept loop
|
|
2081
|
+
Fix a warning about @pid being uninitialized
|
|
2082
|
+
Inline and remove the HttpRequest#reset method
|
|
2083
|
+
Preserve 1.9 IO encodings in reopen_logs
|
|
2084
|
+
configurator: fix rdoc formatting
|
|
2085
|
+
http_request: use Rack::InputWrapper-compatible methods
|
|
2086
|
+
app/exec_cgi: use explicit buffers for read/sysread
|
|
2087
|
+
Enforce minimum timeout at 3 seconds
|
|
2088
|
+
Avoid killing sleeping workers
|
|
2089
|
+
Remove trickletest
|
|
2090
|
+
HttpRequest::DEF_PARAMS => HttpRequest::DEFAULTS
|
|
2091
|
+
exec_cgi: don't assume the body#each consumer is a socket
|
|
2092
|
+
Reopen master logs on SIGHUP, too
|
|
2093
|
+
Require Rack for HTTP Status codes
|
|
2094
|
+
http_response: allow string status codes
|
|
2095
|
+
test_response: correct OFS test
|
|
2096
|
+
privatize constants only used by old_rails/static
|
|
2097
|
+
Disable formatting for command-line switches
|
|
2098
|
+
GNUmakefile: glob all files in bin/*
|
|
2099
|
+
test_request: enable with Ruby 1.9 now Rack 1.0.0 is out
|
|
2100
|
+
test_upload: still uncomfortable with 1.9 IO encoding...
|
|
2101
|
+
Add example init script
|
|
2102
|
+
app/exec_cgi: GC prevention
|
|
2103
|
+
Add TUNING document
|
|
2104
|
+
app/old_rails: correctly log errors in output
|
|
2105
|
+
Safer timeout handling and test case
|
|
2106
|
+
Ignore unhandled master signals in the workers
|
|
2107
|
+
TUNING: add a note about somaxconn with UNIX sockets
|
|
2108
|
+
Fix a warning about @pid being uninitialized
|
|
2109
|
+
Preserve 1.9 IO encodings in reopen_logs
|
|
2110
|
+
configurator: fix rdoc formatting
|
|
2111
|
+
Enforce minimum timeout at 3 seconds
|
|
2112
|
+
http_response: allow string status codes
|
|
2113
|
+
test_response: correct OFS test
|
|
2114
|
+
Disable formatting for command-line switches
|
|
2115
|
+
GNUmakefile: glob all files in bin/*
|
|
2116
|
+
Merge branch '0.7.x-stable'
|
|
2117
|
+
Define HttpRequest#reset if missing
|
|
2118
|
+
Merge branch 'benchmark'
|
|
2119
|
+
unicorn 0.7.1
|
|
2120
|
+
Merge commit 'v0.7.1'
|
|
2121
|
+
Refresh Gem list when building the app
|
|
2122
|
+
Only refresh the gem list when building the app
|
|
2123
|
+
Switch to autoload to defer requires
|
|
2124
|
+
remove trickletest from Manifest
|
|
2125
|
+
unicorn 0.8.0
|
|
2126
|
+
|
|
2127
|
+
=== unicorn 0.7.1 / 2009-05-22 09:06 UTC
|
|
2128
|
+
|
|
2129
|
+
minor fixes, cleanups and documentation improvements
|
|
2130
|
+
|
|
2131
|
+
Eric Wong (18):
|
|
2132
|
+
test_request: enable with Ruby 1.9 now Rack 1.0.0 is out
|
|
2133
|
+
test_upload: still uncomfortable with 1.9 IO encoding...
|
|
2134
|
+
Add example init script
|
|
2135
|
+
app/exec_cgi: GC prevention
|
|
2136
|
+
Add TUNING document
|
|
2137
|
+
app/old_rails: correctly log errors in output
|
|
2138
|
+
Safer timeout handling and test case
|
|
2139
|
+
Ignore unhandled master signals in the workers
|
|
2140
|
+
TUNING: add a note about somaxconn with UNIX sockets
|
|
2141
|
+
Fix a warning about @pid being uninitialized
|
|
2142
|
+
Preserve 1.9 IO encodings in reopen_logs
|
|
2143
|
+
configurator: fix rdoc formatting
|
|
2144
|
+
Enforce minimum timeout at 3 seconds
|
|
2145
|
+
http_response: allow string status codes
|
|
2146
|
+
test_response: correct OFS test
|
|
2147
|
+
Disable formatting for command-line switches
|
|
2148
|
+
GNUmakefile: glob all files in bin/*
|
|
2149
|
+
unicorn 0.7.1
|
|
2150
|
+
|
|
2151
|
+
=== unicorn 0.7.0 / 2009-04-25 18:59 UTC
|
|
2152
|
+
|
|
2153
|
+
rack.version is 1.0
|
|
2154
|
+
|
|
2155
|
+
Rack 1.0.0 compatibility, applications are now passed
|
|
2156
|
+
env["rack.version"] == [1, 0]
|
|
2157
|
+
|
|
2158
|
+
Eric Wong (5):
|
|
2159
|
+
doc: formatting changes for SIGNALS doc
|
|
2160
|
+
configurator: "listen" directive more nginx-like
|
|
2161
|
+
Fix log rotation being delayed in workers when idle
|
|
2162
|
+
Rack 1.0.0 compatibility
|
|
2163
|
+
unicorn 0.7.0
|
|
2164
|
+
|
|
2165
|
+
=== unicorn 0.6.0 / 2009-04-24 21:47 UTC
|
|
2166
|
+
|
|
2167
|
+
cleanups + optimizations, signals to {in,de}crement processes
|
|
2168
|
+
|
|
2169
|
+
* Mostly OCD-induced yak-shaving changes
|
|
2170
|
+
|
|
2171
|
+
* SIGTTIN and SIGTTOU are now used to control incrementing and
|
|
2172
|
+
decrementing of worker processes without needing to change
|
|
2173
|
+
the config file and SIGHUP.
|
|
2174
|
+
|
|
2175
|
+
Eric Wong (46):
|
|
2176
|
+
test_upload: ensure StringIO objects are binary
|
|
2177
|
+
http11: cleanup #includes and whitespace
|
|
2178
|
+
GNUmakefile: Fix ragel dependencies
|
|
2179
|
+
GNUmakefile: kill trailing whitespace after ragel
|
|
2180
|
+
Move absolute URI parsing into HTTP parser
|
|
2181
|
+
http11: remove unused variables/elements
|
|
2182
|
+
http_request: freeze modifiable elements
|
|
2183
|
+
HttpParser: set QUERY_STRING for Rack-compliance
|
|
2184
|
+
GNUmakefile: mark test_signals as a slow test
|
|
2185
|
+
const: remove unused QUERY_STRING constant
|
|
2186
|
+
http11: formatting cleanups
|
|
2187
|
+
http11: remove callbacks from structure
|
|
2188
|
+
replace DATA_GET macro with a function
|
|
2189
|
+
http11: minor cleanups in return types
|
|
2190
|
+
http11: make parser obey HTTP_HOST with empty port
|
|
2191
|
+
http11: cleanup some CPP macros
|
|
2192
|
+
http11: rfc2616 handling of absolute URIs
|
|
2193
|
+
http_response: small speedup by eliminating loop
|
|
2194
|
+
Stop extending core classes
|
|
2195
|
+
rename socket.rb => socket_helper.rb
|
|
2196
|
+
Remove @start_ctx instance variable
|
|
2197
|
+
http11: support underscores in URI hostnames
|
|
2198
|
+
test: empty port test for absolute URIs
|
|
2199
|
+
Cleanup some unnecessary requires
|
|
2200
|
+
Cleanup GNUmakefile and fix dependencies
|
|
2201
|
+
Fix data corruption with small uploads via browsers
|
|
2202
|
+
Get rid of UNICORN_TMP_BASE constant
|
|
2203
|
+
GNUmakefile: mark test_upload as a slow test
|
|
2204
|
+
unicorn_rails: avoid nesting lambdas
|
|
2205
|
+
test_exec: cleanup stale socket on exit
|
|
2206
|
+
Merge commit 'v0.5.4'
|
|
2207
|
+
http_request: micro optimizations
|
|
2208
|
+
IO_PURGATORY should be a global constant
|
|
2209
|
+
Make LISTENERS and WORKERS global constants, too
|
|
2210
|
+
test_socket_helper: disable GC for this test
|
|
2211
|
+
http_response: just barely faster
|
|
2212
|
+
http_response: minor performance gains
|
|
2213
|
+
make SELF_PIPE is a global constant
|
|
2214
|
+
Describe the global constants we use.
|
|
2215
|
+
Fixup reference to a dead variable
|
|
2216
|
+
Avoid getppid() if serving heavy traffic
|
|
2217
|
+
minor cleanups and save a few variables
|
|
2218
|
+
Allow std{err,out}_path to be changed via HUP
|
|
2219
|
+
SIGTT{IN,OU} {in,de}crements worker_processes
|
|
2220
|
+
cleanup: avoid duped self-pipe init/replacement logic
|
|
2221
|
+
unicorn 0.6.0
|
|
2222
|
+
|
|
2223
|
+
=== unicorn 0.5.4 / 2009-04-24 01:41 UTC
|
|
2224
|
+
|
|
2225
|
+
fix data corruption with some small uploads (not curl)
|
|
2226
|
+
|
|
2227
|
+
Eric Wong (2):
|
|
2228
|
+
Fix data corruption with small uploads via browsers
|
|
2229
|
+
unicorn 0.5.4
|
|
2230
|
+
|
|
2231
|
+
=== unicorn 0.5.3 / 2009-04-17 05:32 UTC
|
|
2232
|
+
|
|
2233
|
+
fix 100% CPU usage when idle, small cleanups
|
|
2234
|
+
|
|
2235
|
+
fix 100% CPU usage when idle
|
|
2236
|
+
|
|
2237
|
+
Eric Wong (7):
|
|
2238
|
+
update Manifest (add test_signals.rb)
|
|
2239
|
+
Fix forgotten Rails tests
|
|
2240
|
+
Fix my local.mk file to always run Rails tests
|
|
2241
|
+
fix 100% CPU usage when idle
|
|
2242
|
+
remove DATE constant
|
|
2243
|
+
Small garbage reduction in HttpResponse
|
|
2244
|
+
unicorn 0.5.3
|
|
2245
|
+
|
|
2246
|
+
=== unicorn 0.5.2 / 2009-04-16 23:32 UTC
|
|
2247
|
+
|
|
2248
|
+
force Status: header for compat, small cleanups
|
|
2249
|
+
|
|
2250
|
+
* Ensure responses always have the "Status:" header. This
|
|
2251
|
+
is needed for compatibility with some broken clients.
|
|
2252
|
+
|
|
2253
|
+
* Other small and minor cleanups
|
|
2254
|
+
|
|
2255
|
+
Eric Wong (10):
|
|
2256
|
+
Explicitly trap SIGINT/SIGTERM again
|
|
2257
|
+
s/rotating/reopening/g in log messages
|
|
2258
|
+
before_commit and before_exec can never be nil/false
|
|
2259
|
+
worker_loop cleanups, var golf, and yak-shaving
|
|
2260
|
+
http11: default server port is 443 for https
|
|
2261
|
+
ensure responses always have the "Status:" header
|
|
2262
|
+
test: fix dependency issue with "make test-unit"
|
|
2263
|
+
GNUmakefile: small dependency cleanups
|
|
2264
|
+
unicorn/const: kill trailing whitespace
|
|
2265
|
+
unicorn 0.5.2
|
|
2266
|
+
|
|
2267
|
+
=== unicorn 0.5.1 / 2009-04-13 21:24 UTC
|
|
2268
|
+
|
|
2269
|
+
exit correctly on INT/TERM, QUIT is still recommended, however
|
|
2270
|
+
|
|
2271
|
+
We now exit correctly on INT/TERM signals, QUIT is still
|
|
2272
|
+
recommended as it does graceful shutdowns.
|
|
2273
|
+
|
|
2274
|
+
Eric Wong (2):
|
|
2275
|
+
Fix SIGINT/SIGTERM handling (broken in 0.5.0)
|
|
2276
|
+
unicorn 0.5.1
|
|
2277
|
+
|
|
2278
|
+
=== unicorn 0.5.0 / 2009-04-13 19:08 UTC
|
|
2279
|
+
|
|
2280
|
+
{after,before}_fork API change, small tweaks/fixes
|
|
2281
|
+
|
|
2282
|
+
* There is an API change in the {after,before}_fork hooks
|
|
2283
|
+
so now the entire Worker struct is exposed to the user.
|
|
2284
|
+
This allows Unicorn to unofficially support user/group
|
|
2285
|
+
privilege changing.
|
|
2286
|
+
|
|
2287
|
+
* The "X-Forwarded-Proto:" header can be set by proxies
|
|
2288
|
+
to ensure rack.url_scheme is "https" for SSL-enabled
|
|
2289
|
+
sites.
|
|
2290
|
+
|
|
2291
|
+
* Small cleanups and tweaks throughout, see shortlog (below)
|
|
2292
|
+
or changelog for details.
|
|
2293
|
+
|
|
2294
|
+
Eric Wong (32):
|
|
2295
|
+
test_helper: redirect_io uses append and sync
|
|
2296
|
+
configurator: allow hooks to be passed callable objects
|
|
2297
|
+
Add a test for signal recovery
|
|
2298
|
+
Documentation updates
|
|
2299
|
+
Enforce umask 0000 with UNIX domain sockets
|
|
2300
|
+
local.mk: touch files after set-file-times
|
|
2301
|
+
Add test for :preload_app config option
|
|
2302
|
+
GNUmakefile: remove unnecessary asterisks in output
|
|
2303
|
+
GNUmakefile: allow "make V=1 ..." for verbosity
|
|
2304
|
+
test_configurator: rename test name that never ran
|
|
2305
|
+
cleanup some log messages
|
|
2306
|
+
test_request: tests esoteric/rare REQUEST_URIs
|
|
2307
|
+
http11: Remove qsort/bsearch code paths
|
|
2308
|
+
http11: handle "X-Forwarded-Proto: https"
|
|
2309
|
+
close listeners when removing them from our array
|
|
2310
|
+
config: handle listener unbind/replace in config file
|
|
2311
|
+
README: doc updates
|
|
2312
|
+
Restore unlinked UNIX sockets on SIGHUP
|
|
2313
|
+
listen backlog, sndbuf, rcvbuf are always changeable
|
|
2314
|
+
Remove _all_ non-POSIX socket options
|
|
2315
|
+
http11: cleanup+safer rack.url_scheme handling
|
|
2316
|
+
test_exec: fix potential races in fd leak test
|
|
2317
|
+
test_http_parser: fix broken URL in comment
|
|
2318
|
+
Save one fcntl() syscall on every request
|
|
2319
|
+
Remove unnecessary sync assignment
|
|
2320
|
+
Don't bother restoring ENV or umask across reexec
|
|
2321
|
+
old_rails: try harder to ensure valid responses
|
|
2322
|
+
small cleanups in signal handling and worker init
|
|
2323
|
+
Remove unnecessary local variables in process_client
|
|
2324
|
+
Expose worker to {before,after}_fork hooks
|
|
2325
|
+
Configurator: add example for user/group switching
|
|
2326
|
+
unicorn 0.5.0
|
|
2327
|
+
|
|
2328
|
+
=== unicorn 0.4.2 / 2009-04-02 19:14 UTC
|
|
2329
|
+
|
|
2330
|
+
fix Rails ARStore, FD leak prevention, descriptive proctitles
|
|
2331
|
+
|
|
2332
|
+
Eric Wong (16):
|
|
2333
|
+
Manifest: updates
|
|
2334
|
+
Merge unicorn
|
|
2335
|
+
test_exec: add test case for per-worker listeners
|
|
2336
|
+
Remove set_cloexec wrapper and require FD_CLOEXEC
|
|
2337
|
+
All IOs created in workers have FD_CLOEXEC set
|
|
2338
|
+
FD_CLOEXEC all non-listen descriptors before exec
|
|
2339
|
+
Close std{err,out} redirection targets
|
|
2340
|
+
test_upload: fix a race condition in unlink test
|
|
2341
|
+
More descriptive process titles
|
|
2342
|
+
unicorn_rails: cleanup redundant bits
|
|
2343
|
+
test/rails: v2.1.2 + ActiveRecordStore all around
|
|
2344
|
+
Use File.basename instead of a regexp
|
|
2345
|
+
Add log directories to tests
|
|
2346
|
+
unicorn: remove unnecessary lambda generation
|
|
2347
|
+
GNUmakefile: "install" preserves unicorn_rails
|
|
2348
|
+
unicorn 0.4.2
|
|
2349
|
+
|
|
2350
|
+
=== unicorn v0.4.1 / 2009-04-01 10:52 UTC
|
|
2351
|
+
|
|
2352
|
+
Rails support, per-listener backlog and {snd,rcv}buf
|
|
2353
|
+
|
|
2354
|
+
Eric Wong (50):
|
|
2355
|
+
All new benchmarks, old ones removed
|
|
2356
|
+
benchmark: header values must be strings
|
|
2357
|
+
Merge commit 'origin/benchmark' into release
|
|
2358
|
+
HttpResponse: speed up non-multivalue headers
|
|
2359
|
+
Streamline rack environment generation
|
|
2360
|
+
Don't bother unlinking UNIX sockets
|
|
2361
|
+
unicorn_rails: support non-Rack versions of Rails
|
|
2362
|
+
HttpRequest: small improvement for GET requests
|
|
2363
|
+
simplify the HttpParser interface
|
|
2364
|
+
Socket: add {snd,rcv}buf opts to bind_listen
|
|
2365
|
+
Merge commit 'v0.2.3'
|
|
2366
|
+
Don't allow failed log rotation to to break app
|
|
2367
|
+
Deferred log rotation in workers
|
|
2368
|
+
style: symbols instead of strings for signal names
|
|
2369
|
+
No need to disable luserspace buffering on client socket
|
|
2370
|
+
test_server: quieter tests
|
|
2371
|
+
Remove needless line break
|
|
2372
|
+
Always try to send a valid HTTP response back
|
|
2373
|
+
test_response: ensure closed socket after write
|
|
2374
|
+
test_response: ensure response body is closed
|
|
2375
|
+
TODO: update roadmap to 1.0.0
|
|
2376
|
+
configurator: per-listener backlog, {rcv,snd}buf config
|
|
2377
|
+
configurator: favor "listen" directive over "listeners"
|
|
2378
|
+
http11: use :http_body instead of "HTTP_BODY"
|
|
2379
|
+
Avoid having two pid files pointing to the same pid
|
|
2380
|
+
test_exec: fix race conditions
|
|
2381
|
+
test_exec: fix response bodies
|
|
2382
|
+
Fix default listener setup
|
|
2383
|
+
test_exec: fix another race condition
|
|
2384
|
+
bin/*: parse CLI switches in config.ru sooner
|
|
2385
|
+
app/old_rails/static: define missing constant
|
|
2386
|
+
unicorn_rails: give more info when aborting
|
|
2387
|
+
GNUmakefile: add test-exec and test-unit targets
|
|
2388
|
+
cgi_wrapper: ensure "Status:" header is not set
|
|
2389
|
+
Better canonicalization of listener paths + tests
|
|
2390
|
+
configurator: remove unnecessary SocketHelper include
|
|
2391
|
+
unicorn_rails: minor cleanup for dead variable
|
|
2392
|
+
Use {read,write}_nonblock on the pipe
|
|
2393
|
+
unicorn_rails: cleanup path mapping usage
|
|
2394
|
+
Rails stack tests for unicorn_rails
|
|
2395
|
+
test: factor out exec helpers into common code for Rails tests
|
|
2396
|
+
cgi_wrapper: fix cookies and other headers
|
|
2397
|
+
GNUmakefile: prefix errors with $(extra) variable
|
|
2398
|
+
cgi_wrapper: HTTP status code cleanups
|
|
2399
|
+
Add more tests for Rails
|
|
2400
|
+
test_rails: 4x speedup
|
|
2401
|
+
Manifest update
|
|
2402
|
+
Documentation updates, prep for 0.4.1 release
|
|
2403
|
+
Add local.mk.sample file that I use
|
|
2404
|
+
unicorn 0.4.1
|
|
2405
|
+
|
|
2406
|
+
=== unicorn v0.2.3 / 2009-03-25 23:31 UTC
|
|
2407
|
+
|
|
2408
|
+
Unlink Tempfiles after use (they were closed, just not unlinked)
|
|
2409
|
+
|
|
2410
|
+
Eric Wong (3):
|
|
2411
|
+
Don't bother unlinking UNIX sockets
|
|
2412
|
+
Ensure Tempfiles are unlinked after every request
|
|
2413
|
+
unicorn 0.2.3
|
|
2414
|
+
|
|
2415
|
+
=== unicorn v0.2.2 / 2009-03-22 23:45 UTC
|
|
2416
|
+
|
|
2417
|
+
small bug fixes, fix Rack multi-value headers (Set-Cookie:)
|
|
2418
|
+
|
|
2419
|
+
Eric Wong (19):
|
|
2420
|
+
Fix link to Rubyforge releases page
|
|
2421
|
+
start libifying common launcher code
|
|
2422
|
+
unicorn_rails: fix standard pid path setup
|
|
2423
|
+
Move listen path and address expansion to Configurator
|
|
2424
|
+
Trap WINCH to QUIT children without respawning
|
|
2425
|
+
Remove Mongrel stuff from CHANGELOG
|
|
2426
|
+
HttpResponse: close body if it can close
|
|
2427
|
+
Add Unicorn::App::ExecCgi
|
|
2428
|
+
Process management cleanups
|
|
2429
|
+
documentation/disclaimer updates
|
|
2430
|
+
unicorn_rails: remove unnecessary Rack-loading logic
|
|
2431
|
+
unicorn/http11: remove GATEWAY_INTERFACE
|
|
2432
|
+
http11: don't set headers Rack doesn't like
|
|
2433
|
+
HttpRequest test so our requests pass Rack::Lint
|
|
2434
|
+
HttpRequest: correctly reference logger
|
|
2435
|
+
Rotate master logs before workers.
|
|
2436
|
+
Simplify code for sleeping/waking up the master
|
|
2437
|
+
Handle Rack multivalue headers correctly
|
|
2438
|
+
unicorn 0.2.2
|
|
2439
|
+
|
|
2440
|
+
=== unicorn v0.2.1 / 2009-03-19 03:20 UTC
|
|
2441
|
+
|
|
2442
|
+
Fix broken Manifest that cause unicorn_rails to not be bundled
|
|
2443
|
+
|
|
2444
|
+
Eric Wong (1):
|
|
2445
|
+
unicorn v0.2.1, fix the Manifest
|
|
2446
|
+
|
|
2447
|
+
=== unicorn v0.2.0 / 2009-03-19 03:16 UTC
|
|
2448
|
+
|
|
2449
|
+
unicorn_rails launcher script.
|
|
2450
|
+
|
|
2451
|
+
Eric Wong (8):
|
|
2452
|
+
Start _Known Issues_ section in README
|
|
2453
|
+
Allow binding to UNIX sockets relative to "~"
|
|
2454
|
+
tests: do not trust (our correct use of) 1.9 encodings
|
|
2455
|
+
gracefully die if working dir is invalid at fork
|
|
2456
|
+
Add signal queueing for test reliability
|
|
2457
|
+
Add unicorn_rails script for Rails 2.3.2
|
|
2458
|
+
Documentation updates, prepare for 0.2.0
|
|
2459
|
+
unicorn 0.2.0
|
|
2460
|
+
|
|
2461
|
+
=== unicorn v0.1.0 / 2009-03-11 01:50 UTC
|
|
2462
|
+
|
|
2463
|
+
Unicorn - UNIX-only fork of Mongrel free of threading
|
|
2464
|
+
|
|
2465
|
+
|