From c3271c2eb26578316d7cecad1a2b99e1814a5fa3 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 6 Feb 2015 20:09:19 +0000 Subject: doc: update support status for Ruby versions 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). [reinstate 1.9 version check for listener_fds in backport] --- HACKING | 23 +++------------- KNOWN_ISSUES | 20 +++++++------- README | 3 ++- Sandbox | 2 +- lib/unicorn/configurator.rb | 2 -- lib/unicorn/http_server.rb | 2 +- local.mk.sample | 59 ----------------------------------------- t/README | 2 +- test/unit/test_socket_helper.rb | 4 +-- 9 files changed, 21 insertions(+), 96 deletions(-) delete mode 100644 local.mk.sample diff --git a/HACKING b/HACKING index 9b4da1b..6c5f897 100644 --- a/HACKING +++ b/HACKING @@ -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 @@ -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. @@ -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. diff --git a/KNOWN_ISSUES b/KNOWN_ISSUES index 38263e7..69e4f57 100644 --- a/KNOWN_ISSUES +++ b/KNOWN_ISSUES @@ -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. @@ -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 diff --git a/README b/README index 02d01e1..f084d0c 100644 --- a/README +++ b/README @@ -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 diff --git a/Sandbox b/Sandbox index 3c7f226..f662b27 100644 --- a/Sandbox +++ b/Sandbox @@ -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 diff --git a/lib/unicorn/configurator.rb b/lib/unicorn/configurator.rb index 9406223..0658c81 100644 --- a/lib/unicorn/configurator.rb +++ b/lib/unicorn/configurator.rb @@ -309,8 +309,6 @@ class Unicorn::Configurator # 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\"] diff --git a/lib/unicorn/http_server.rb b/lib/unicorn/http_server.rb index a0ca302..509fb36 100644 --- a/lib/unicorn/http_server.rb +++ b/lib/unicorn/http_server.rb @@ -69,7 +69,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, diff --git a/local.mk.sample b/local.mk.sample deleted file mode 100644 index 25bca5d..0000000 --- a/local.mk.sample +++ /dev/null @@ -1,59 +0,0 @@ -# this is the local.mk file used by Eric Wong on his dev boxes. -# GNUmakefile will source local.mk in the top-level source tree -# if it is present. -# -# This is depends on a bunch of GNU-isms from bash, sed, touch. - -DLEXT := so - -# Avoid loading rubygems to speed up tests because gmake is -# fork+exec heavy with Ruby. -prefix = $(HOME) - -# XXX clean this up -ifeq ($(r192),) - ifeq ($(r19),) - ifeq ($(rbx),) - ifeq ($(r186),) - RUBY := $(prefix)/bin/ruby - else - prefix := $(prefix)/r186-p114 - export PATH := $(prefix)/bin:$(PATH) - RUBY := $(prefix)/bin/ruby - endif - else - prefix := $(prefix)/rbx - export PATH := $(prefix)/bin:$(PATH) - RUBY := $(prefix)/bin/rbx - endif - else - prefix := $(prefix)/ruby-1.9 - export PATH := $(prefix)/bin:$(PATH) - RUBY := $(prefix)/bin/ruby --disable-gems - endif -else - prefix := $(prefix)/ruby-1.9.2 - export PATH := $(prefix)/bin:$(PATH) - RUBY := $(prefix)/bin/ruby --disable-gems -endif - -# pipefail is THE reason to use bash (v3+) or never revisions of ksh93 -# SHELL := /bin/bash -e -o pipefail -SHELL := /bin/ksh93 -e -o pipefail - -full-test: test-18 test-191 test-192 test-rbx test-186 - -# FIXME: keep eye on Rubinius activity and wait for fixes from upstream -# so we don't need RBX_SKIP anymore -test-rbx: export RBX_SKIP := 1 -test-rbx: export RUBY := $(RUBY) -test-rbx: - $(MAKE) test test-integration rbx=T 2>&1 |sed -e 's!^!rbx !' -test-186: - $(MAKE) test-all r186=1 2>&1 |sed 's!^!1.8.6 !' -test-18: - $(MAKE) test-all 2>&1 |sed 's!^!1.8 !' -test-191: - $(MAKE) test-all r19=1 2>&1 |sed 's!^!1.9.1 !' -test-192: - $(MAKE) test-all r192=1 2>&1 |sed 's!^!1.9.2 !' diff --git a/t/README b/t/README index 095f106..bcaf3ce 100644 --- a/t/README +++ b/t/README @@ -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/] diff --git a/test/unit/test_socket_helper.rb b/test/unit/test_socket_helper.rb index 8992757..7135928 100644 --- a/test/unit/test_socket_helper.rb +++ b/test/unit/test_socket_helper.rb @@ -182,8 +182,8 @@ class TestSocketHelper < Test::Unit::TestCase 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 -- cgit v1.2.3-24-ge0c7