Skip to content

Commit

Permalink
doc: update support status for Ruby versions
Browse files Browse the repository at this point in the history
unicorn 5 will not support Ruby 1.8 anymore.

Drop mentions of Rubinius, too, it's too difficult to support due to
the proprietary and registration-required nature of its bug tracker.
The smaller memory footprint and CoW-friendly memory allocator in
mainline Ruby is a better fit for unicorn, anyways.

Since Ruby 1.9+ bundles RubyGems and gem startup is faster nowadays,
we'll just depend on that instead of not loading RubyGems.

Drop the local.mk.sample file, too, since it's way out-of-date
and probably isn't useful (I have not used it in a while).
  • Loading branch information
Eric Wong committed Feb 6, 2015
1 parent 8f7c396 commit 8956796
Show file tree
Hide file tree
Showing 9 changed files with 22 additions and 97 deletions.
23 changes: 4 additions & 19 deletions HACKING
Expand Up @@ -19,13 +19,6 @@ RubyGems.
Users of GNU-based systems (such as GNU/Linux) usually have GNU make
installed as "make" instead of "gmake".

Since we don't load RubyGems by default, loading Rack properly requires
setting up RUBYLIB to point to where Rack is located. Not loading
RubyGems drastically lowers the time to run the full test suite. You
may setup a "local.mk" file in the top-level working directory to setup
your RUBYLIB and any other environment variables. A "local.mk.sample"
file is provided for reference.

Running the entire test suite with 4 tests in parallel:

gmake -j4 check
Expand Down Expand Up @@ -70,10 +63,9 @@ becomes unavailable.

=== Ruby/C Compatibility

We target Ruby 1.8.6+, 1.9 and will target Rubinius as it becomes
production-ready. We need the Ruby implementation to support fork,
exec, pipe, UNIX signals, access to integer file descriptors and
ability to use unlinked files.
We target mainline Ruby 1.9.3 and later. We need the Ruby
implementation to support fork, exec, pipe, UNIX signals, access to
integer file descriptors and ability to use unlinked files.

All of our C code is OS-independent and should run on compilers
supported by the versions of Ruby we target.
Expand Down Expand Up @@ -123,13 +115,6 @@ You can build the Unicorn gem with the following command:

It is easy to install the contents of your git working directory:

Via RubyGems (RubyGems 1.3.5+ recommended for prerelease versions):
Via RubyGems

gmake install-gem

Without RubyGems (via setup.rb):

gmake install

It is not at all recommended to mix a RubyGems installation with an
installation done without RubyGems, however.
20 changes: 10 additions & 10 deletions KNOWN_ISSUES
Expand Up @@ -17,16 +17,6 @@ acceptable solution. Those issues are documented here.
have builtin workarounds for Kernel#rand and OpenSSL::Random users,
but applications may use other PRNGs.

* Under some versions of Ruby 1.8, it is necessary to call +srand+ in an
after_fork hook to get correct random number generation. We have a builtin
workaround for this starting with \Unicorn 3.6.1

See http://redmine.ruby-lang.org/issues/show/4338

* On Ruby 1.8 prior to Ruby 1.8.7-p248, *BSD platforms have a broken
stdio that causes failure for file uploads larger than 112K. Upgrade
your version of Ruby or continue using Unicorn 1.x/3.4.x.

* For notes on sandboxing tools such as Bundler or Isolate,
see the {Sandbox}[link:Sandbox.html] page.

Expand All @@ -44,6 +34,16 @@ acceptable solution. Those issues are documented here.

== Known Issues (Old)

* Under some versions of Ruby 1.8, it is necessary to call +srand+ in an
after_fork hook to get correct random number generation. We have a builtin
workaround for this starting with \Unicorn 3.6.1

See http://redmine.ruby-lang.org/issues/show/4338

* On Ruby 1.8 prior to Ruby 1.8.7-p248, *BSD platforms have a broken
stdio that causes failure for file uploads larger than 112K. Upgrade
your version of Ruby or continue using Unicorn 1.x/3.4.x.

* Under Ruby 1.9.1, methods like Array#shuffle and Array#sample will
segfault if called after forking. Upgrade to Ruby 1.9.2 or call
"Kernel.rand" in your after_fork hook to reinitialize the random
Expand Down
3 changes: 2 additions & 1 deletion README
Expand Up @@ -12,7 +12,8 @@ both the the request and response in between \Unicorn and slow clients.
cut out everything that is better supported by the operating system,
{nginx}[http://nginx.net/] or {Rack}[http://rack.github.io/].

* Compatible with Ruby 1.8 and later. Rubinius support is in-progress.
* Compatible with Ruby 1.9.3 and later.
unicorn 4.8.x will remain supported for Ruby 1.8 users.

* Process management: \Unicorn will reap and restart workers that
die from broken apps. There is no need to manage multiple processes
Expand Down
2 changes: 1 addition & 1 deletion Sandbox
Expand Up @@ -86,7 +86,7 @@ For now workarounds include doing one of the following:

3. Explicitly setting RUBYLIB or $LOAD_PATH to include any gem path
where the unicorn gem is installed
(e.g. /usr/lib/ruby/gems/1.9.1/gems/unicorn-VERSION/lib)
(e.g. /usr/lib/ruby/gems/1.9.3/gems/unicorn-VERSION/lib)

=== RUBYOPT pollution from SIGUSR2 upgrades

Expand Down
2 changes: 0 additions & 2 deletions lib/unicorn/configurator.rb
Expand Up @@ -306,8 +306,6 @@ def listeners(addresses) # :nodoc:
# to receive IPv4 queries on dual-stack systems. A separate IPv4-only
# listener is required if this is true.
#
# This option is only available for Ruby 1.9.2 and later.
#
# Enabling this option for the IPv6-only listener and having a
# separate IPv4 listener is recommended if you wish to support IPv6
# on the same TCP port. Otherwise, the value of \env[\"REMOTE_ADDR\"]
Expand Down
4 changes: 2 additions & 2 deletions lib/unicorn/http_server.rb
Expand Up @@ -67,7 +67,7 @@ class Unicorn::HttpServer
# you can set the following in your Unicorn config file, HUP and then
# continue with the traditional USR2 + QUIT upgrade steps:
#
# Unicorn::HttpServer::START_CTX[0] = "/home/bofh/1.9.2/bin/unicorn"
# Unicorn::HttpServer::START_CTX[0] = "/home/bofh/2.2.0/bin/unicorn"
START_CTX = {
:argv => ARGV.map { |arg| arg.dup },
0 => $0.dup,
Expand Down Expand Up @@ -453,7 +453,7 @@ def reexec

# exec(command, hash) works in at least 1.9.1+, but will only be
# required in 1.9.4/2.0.0 at earliest.
cmd << listener_fds if RUBY_VERSION >= "1.9.1"
cmd << listener_fds
logger.info "executing #{cmd.inspect} (in #{Dir.pwd})"
before_exec.call(self)
exec(*cmd)
Expand Down
59 changes: 0 additions & 59 deletions local.mk.sample

This file was deleted.

2 changes: 1 addition & 1 deletion t/README
Expand Up @@ -10,7 +10,7 @@ comfortable writing integration tests with.

== Requirements

* {Ruby 1.8 or 1.9}[http://www.ruby-lang.org/] (duh!)
* {Ruby 1.9.3+}[https://www.ruby-lang.org/] (duh!)
* {GNU make}[http://www.gnu.org/software/make/]
* {socat}[http://www.dest-unreach.org/socat/]
* {curl}[http://curl.haxx.se/]
Expand Down
4 changes: 2 additions & 2 deletions test/unit/test_socket_helper.rb
Expand Up @@ -182,8 +182,8 @@ def test_ipv6only
sock = bind_listen "[#@test6_addr]:#{port}", :ipv6only => true
cur = sock.getsockopt(:IPPROTO_IPV6, :IPV6_V6ONLY).unpack('i')[0]
assert_equal 1, cur
rescue Errno::EAFNOSUPPORT
end if RUBY_VERSION >= "1.9.2"
rescue Errno::EAFNOSUPPORT
end

def test_reuseport
port = unused_port @test_addr
Expand Down

0 comments on commit 8956796

Please sign in to comment.