about summary refs log tree commit homepage
DateCommit message (Collapse)
2011-03-15unicorn 3.5.0 - very minor improvements v3.5.0
A small set of small changes but it's been more than a month since our last release. There are minor memory usage and efficiently improvements (for graceful shutdowns). MRI 1.8.7 users on *BSD should be sure they're using the latest patchlevel (or upgrade to 1.9.x) because we no longer workaround their broken stdio (that's MRI's job :)
2011-03-08gemspec: update kgio dependency to 2.3.2
People reinstalling would've pulled it in anyways, but 2.3.2 is the latest and has no known issues.
2011-03-08gemspec: no need for require_paths
2011-02-25tee_input: remove old *BSD stdio workaround
Ruby 1.8.* users should get the latest Ruby 1.8.7 anyways since they contain critical bugfixes. We don't keep workarounds forever since the root problem is fixed/worked-around in upstream and people have had more than a year to upgrade Ruby.
2011-02-18clear listeners array on SIGQUIT
We don't want to repeatedly reclose the same IOs and keep raising exceptions this way.
2011-02-16README: clarify the versions of "Ruby license"
Ruby 1.9.3dev is now using the 2-clause BSD License, not the GPLv2. Do not mislead people into thinking we will switch to any BSD License, we won't.
2011-02-10Revert "test_helper: simplify random port binding"
This causes conflicts with ports clients may use in the ephemeral range since those do not hold FS locks. This reverts commit e597e594ad88dc02d70f7d3521d0d3bdc23739bb. Conflicts: test/test_helper.rb
2011-02-10remove unnecessary &block usage
They needlessly allocate Proc objects
2011-02-07test_helper: avoid FD leakage/waste
No need to unnecessarily leave file descriptor open.
2011-02-04unicorn 3.4.0 - for people with very big LANs v3.4.0
* IPv6 support in the HTTP hostname parser and configuration language. Configurator syntax for "listen" addresses should be the same as nginx. Even though we support IPv6, we will never support non-LAN/localhost clients connecting to Unicorn. * TCP_NOPUSH/TCP_CORK is enabled by default to optimize for bandwidth usage and avoid unnecessary wakeups in nginx. * Updated KNOWN_ISSUES document for bugs in recent Ruby 1.8.7 (RNG needs reset after fork) and nginx+sendfile()+FreeBSD 8. * examples/nginx.conf updated for modern stable versions of nginx. * "Status" in headers no longer ignored in the response, Rack::Lint already enforces this so we don't duplicate the work. * All tests pass under Ruby 1.9.3dev * various bugfixes in the (mostly unused) ExecCGI class that powers http://bogomips.org/unicorn.git
2011-02-04bump dependency on kgio
This is needed for IPv6 support, and 2.2.0 is nicer all around for Rainbows! users. Updates wrongdoc while we're at it, too.
2011-02-03test/unit: fix tests under Ruby 1.9.3dev
Ugh, one day I'll clean them up, one day...
2011-02-02Fix Ruby 1.9.3dev warnings
for i in `git ls-files '*.rb'`; do ruby -w -c $i; done
2011-02-02test_helper: simplify random port binding
Duh...
2011-02-02socket_helper: cleanup leftover debugging statement
Oops! Ugh, not my day...
2011-02-02socket_helper: export tcp_name as a module_function
Oops!
2011-02-02allow binding on IPv6 sockets with listen "[#{addr}]:#{port}"
This is much like how nginx does it, except we always require a port when explicitly binding to IPv6 using the "listen" directive. This also adds support to listen with an address-only, which can be useful to Rainbows! users.
2011-02-02http: parser handles IPv6 bracketed IP hostnames
Just in case we have people that don't use DNS, we can support folks who enter ugly IPv6 addresses... IPv6 uses brackets around the address to avoid confusing the colons used in the address with the colon used to denote the TCP port number in URIs.
2011-01-31force socket options to defaults if unspecified
This reduces surprise when people (correctly) believe removing an option from the config file will return things back to our internal defaults.
2011-01-31enable TCP_NOPUSH/TCP_CORK by default
It's actually harmless since Unicorn only supports "fast" applications that do not trickle, and we don't do keepalive so we'll always flush-on-close. This should reduce wakeups on the nginx proxy server if nginx is over TCP. Mongrel 1.x had TCP_CORK enabled by default, too.
2011-01-31test_upload: check size in server
The client may not get a proper response with TCP_CORK enabled
2011-01-28KNOWN_ISSUES: document broken RNG+fork in newer Ruby 1.8
Reported by: ghazel@gmail.com ref: <AANLkTimTpPATTpkoD2EYA2eM1+5OzCN=WxnCygQmJdhn@mail.gmail.com>
2011-01-25examples/nginx.conf: use try_files directive
This feature is in nginx 0.7.x and 0.8.x and optimized better than the "if" directive in nginx.conf ref: http://wiki.nginx.org/Pitfalls ref: http://wiki.nginx.org/IfIsEvil
2011-01-25examples/nginx: avoid unnecessary listen directive
There's no need to use listen unless you use non-default port or can enable "deferred" or "httpready" (which you usually want).
2011-01-25KNOWN_ISSUES: split old stuff into its own section
Ruby 1.9.1, Sinatra 0.3.x, and Rails 2.3.2 are not in common use anymore (at least we don't think).
2011-01-25KNOWN_ISSUES: FreeBSD 8 and sendfile can be buggy
Reported by Alexey Bondar.
2011-01-21git.bogomips.org => bogomips.org
bogomips.org is slimming down and losing URL weight :)
2011-01-21exec_cgi: handle Status header in CGI response
We no longer blindly return 200 if the CGI returned another error code. We also don't want two Status headers in our output since we no longer filter it out.
2011-01-21exec_cgi: make output compatible with IO.copy_stream
Rainbows! can then use this to bypass luserspace given the correct offset is set before hand and the file is unlinked.
2011-01-19configurator: undocument trust_x_forwarded_for
This may not be supported in the future...
2011-01-07http_response: do not skip Status header set by app
Rack::Lint already stops apps from using it. If a developer insists on it, then users who inspect their HTTP headers can point and laugh at them for not using Rack::Lint!
2011-01-06unicorn 3.3.1 - one minor, esoteric bugfix v3.3.1
We now close the client socket after closing the response body. This does not affect most applications that run under Unicorn, in fact, it may not affect any. There is also a new v1.1.6 release for users who do not use kgio.
2011-01-05close client socket after closing response body
Response bodies may capture the block passed to each and save it for body.close, so don't close the socket before we have a chance to call body.close
2011-01-05unicorn 3.3.0 - minor optimizations v3.3.0
Certain applications that already serve hundreds/thousands of requests a second should experience performance improvements due to Time.now.httpdate usage being removed and reimplemented in C. There are also minor internal changes and cleanups for Rainbows!
2011-01-05http_parser: add clear method, deprecate reset
But allows small optimizations to be made to avoid constant/instance variable lookups later :)
2011-01-05http_response: simplify the status == 100 comparison
No need to preserve the response tuplet if we're just going to unpack it eventually.
2011-01-05http_server: remove unnecessary 'nil'
2011-01-05socket_helper: expose more defaults in DEFAULTS hash
This will allow Rainbows! to set :tcp_nodelay=>true and possibly other things in the future.
2011-01-04http_response: implement httpdate in C
This can return a static string and be significantly faster as it reduces object allocations and Ruby method calls for the fastest websites that serve thousands of requests a second. It assumes the Ruby runtime is single-threaded, but that is the case of Ruby 1.8 and 1.9 and also what Unicorn is all about. This change is safe for Rainbows! under 1.8 and 1.9.
2010-12-30http_response: do not account for $, being set
It's a minor garbage reduction, but nobody uses "$,", and if they did, they'd break things in the Ruby standard library as well as Rack, so let anybody who uses "$," shoot themselves in the foot.
2010-12-30tests: test parser works with keepalive_requests=0
We use this in Rainbows! to disable keepalive in certain configurations.
2010-12-29http: remove unnecessary dir_config statement
We do not link against any external libraries
2010-12-26Rakefile: fix fm_update task
Oops!
2010-12-26unicorn 3.2.1 - parser improvements for Rainbows! v3.2.1
There are numerous improvements in the HTTP parser for Rainbows!, none of which affect Unicorn-only users. The kgio dependency is incremented to 2.1: this should avoid ENOSYS errors for folks building binaries on newer Linux kernels and then deploying to older ones. There are also minor documentation improvements, the website is now JavaScript-free! (Ignore the 3.2.0 release, I fat-fingered some packaging things)
2010-12-26gemspec: fix gemspec build
Oops
2010-12-26unicorn 3.2.0 - parser improvements for Rainbows! v3.2.0
There are numerous improvements in the HTTP parser for Rainbows!, none of which affect Unicorn-only users. The kgio dependency is incremented to 2.1: this should avoid ENOSYS errors for folks building binaries on newer Linux kernels and then deploying to older ones. There are also minor documentation improvements, the website is now JavaScript-free!
2010-12-26http_server: remove needless lambda
We can just use a begin block at startup, this also makes life easier on RDoc.
2010-12-26http_response: remove TODO item
An unconfigured Rainbows! (e.g. Rainbows! { use :Base }) already does keepalive and supports only a single client per-process.
2010-12-26http: #keepalive? and #headers? work after #next?
We need to preserve our internal flags and only clear them on HttpParser#parse. This allows the async concurrency models in Rainbows! to work properly.
2010-12-26bump kgio dependency to ~> 2.1
The kgio 2.x series will maintain API compatibility until 3.x, so it's safe to use any 2.x release.