Sun Apr 9 04:12:39 2017 UTC ()
Update to 5.3.0

Upstream changes:
unicorn 5.3.0 / 2017-04-01 08:03 UTC

A couple of portability fixes from Dylan Thacker-Smith and
Jeremy Evans since 5.3.0.pre1 over a week ago, but this looks
ready for a stable release, today.

When I started this over 8 years ago, I wondered if this would
just end up being an April Fools' joke.  Guess not.  I guess I
somehow tricked people into using a terribly marketed web server
that cannot talk directly to untrusted clients :x  Anyways,
unicorn won't be able to handle slow clients 8 years from now,
either, or 80 years from now.  And I vow never to learn to use
new-fangled things like epoll, kqueue, or threads :P

Anyways, this is a largish release with several new features,
and no backwards incompatibilities.

Simon Eskildsen contributed heavily using TCP_INFO under Linux
to implement the (now 5 year old) check_client_connection feature:

  https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-check_client_connection
  https://bogomips.org/unicorn-public/?q=s:check_client_connection&d:..20170401&x=t

This also led to FreeBSD and OpenBSD portability improvements in
one of our dependencies, raindrops:

   https://bogomips.org/raindrops-public/20170323024829.GA5190@dcvr/T/#u

Jeremy Evans contributed several new features.  First he
implemented after_worker_exit to aid debugging:

  https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_exit
  https://bogomips.org/unicorn-public/?q=s:after_worker_exit&d:..20170401&x=t#t

And then security-related features to isolate workers.  Workers
may now chroot to drop access to the master filesystem, and the
new after_worker_ready configuration hook now exists to aid with
chroot support in workers:

  https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_ready
  https://bogomips.org/unicorn/Unicorn/Worker.html#method-i-user
  https://bogomips.org/unicorn-public/?q=s:after_worker_ready&d:..20170401&x=t#t
  https://bogomips.org/unicorn-public/?q=s:chroot&d:..20170401&x=t#t

Additionally, workers may run in a completely different VM space
(nullifying preload_app and any CoW savings) with the new
worker_exec option:

  https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-worker_exec
  https://bogomips.org/unicorn-public/?q=s:worker_exec&d:..20170401&x=t#t

There are also several improvements to FreeBSD and OpenBSD
support with the addition of these features.

shortlog of changes since v5.2.0 (2016-10-31):

Dylan Thacker-Smith (1):
      Check for Socket::TCP_INFO constant before trying to get TCP_INFO

Eric Wong (30):
      drop rb_str_set_len compatibility replacement
      TUNING: document THP caveat for Linux users
      tee_input: simplify condition for IO#write
      remove response_start_sent
      http_request: freeze constant strings passed IO#write
      Revert "remove response_start_sent"
      t/t0012-reload-empty-config.sh: access ivars directly if needed
      t0011-active-unix-socket.sh: fix race condition in test
      new test for check_client_connection
      revert signature change to HttpServer#process_client
      support "struct tcp_info" on non-Linux and Ruby 2.2+
      unicorn_http: reduce rb_global_variable calls
      oob_gc: rely on opt_aref_with optimization on Ruby 2.2+
      http_request: reduce insn size for check_client_connection
      freebsd: avoid EINVAL when setting accept filter
      test-lib: expr(1) portability fix
      tests: keep disabled tests defined
      test_exec: SO_KEEPALIVE value only needs to be true
      doc: fix links to raindrops project
      http_request: support proposed Raindrops::TCP states on non-Linux
      ISSUES: expand on mail archive info + subscription disclaimer
      test_ccc: use a pipe to synchronize test
      doc: remove private email support address
      input: update documentation and hide internals.
      http_server: initialize @pid ivar
      gemspec: remove olddoc from build dependency
      doc: add version annotations for new features
      unicorn 5.3.0.pre1
      doc: note after_worker_exit is also 5.3.0+
      test_exec: SO_KEEPALIVE value only needs to be true (take #2)

Jeremy Evans (7):
      Add after_worker_exit configuration option
      Fix code example in after_worker_exit documentation
      Add support for chroot to Worker#user
      Add after_worker_ready configuration option
      Add worker_exec configuration option
      Don't pass a block for fork when forking workers
      Check for SocketError on first ccc attempt

Simon Eskildsen (1):
      check_client_connection: use tcp state on linux

unicorn 5.3.0.pre1 / 2017-03-24 00:25 UTC

A largish release with several new features.

Simon Eskildsen contributed heavily using TCP_INFO under Linux
to implement the (now 5 year old) check_client_connection feature:

  https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-check_client_connection
  https://bogomips.org/unicorn-public/?q=s:check_client_connection&d:..20170324&x=t

This also led to FreeBSD and OpenBSD portability improvements in
one of our dependencies, raindrops:

   https://bogomips.org/raindrops-public/20170323024829.GA5190@dcvr/T/#u

Jeremy Evans contributed several new features.  First he
implemented after_worker_exit to aid debugging:

  https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_exit
  https://bogomips.org/unicorn-public/?q=s:after_worker_exit&d:..20170324&x=t#t

And then security-related features to isolate workers.  Workers
may now chroot to drop access to the master filesystem, and the
new after_worker_ready configuration hook now exists to aid with
chroot support in workers:

  https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_ready
  https://bogomips.org/unicorn/Unicorn/Worker.html#method-i-user
  https://bogomips.org/unicorn-public/?q=s:after_worker_ready&d:..20170324&x=t#t
  https://bogomips.org/unicorn-public/?q=s:chroot&d:..20170324&x=t#t

Additionally, workers may run in a completely different VM space
(nullifying preload_app and any CoW savings) with the new
worker_exec option:

  https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-worker_exec
  https://bogomips.org/unicorn-public/?q=s:worker_exec&d:..20170324&x=t#t

There are also several improvements to FreeBSD and OpenBSD
support with the addition of these features.

34 changes since 5.2.0 (2016-10-31):

Eric Wong (27):
      drop rb_str_set_len compatibility replacement
      TUNING: document THP caveat for Linux users
      tee_input: simplify condition for IO#write
      remove response_start_sent
      http_request: freeze constant strings passed IO#write
      Revert "remove response_start_sent"
      t/t0012-reload-empty-config.sh: access ivars directly if needed
      t0011-active-unix-socket.sh: fix race condition in test
      new test for check_client_connection
      revert signature change to HttpServer#process_client
      support "struct tcp_info" on non-Linux and Ruby 2.2+
      unicorn_http: reduce rb_global_variable calls
      oob_gc: rely on opt_aref_with optimization on Ruby 2.2+
      http_request: reduce insn size for check_client_connection
      freebsd: avoid EINVAL when setting accept filter
      test-lib: expr(1) portability fix
      tests: keep disabled tests defined
      test_exec: SO_KEEPALIVE value only needs to be true
      doc: fix links to raindrops project
      http_request: support proposed Raindrops::TCP states on non-Linux
      ISSUES: expand on mail archive info + subscription disclaimer
      test_ccc: use a pipe to synchronize test
      doc: remove private email support address
      input: update documentation and hide internals.
      http_server: initialize @pid ivar
      gemspec: remove olddoc from build dependency
      doc: add version annotations for new features

Jeremy Evans (6):
      Add after_worker_exit configuration option
      Fix code example in after_worker_exit documentation
      Add support for chroot to Worker#user
      Add after_worker_ready configuration option
      Add worker_exec configuration option
      Don't pass a block for fork when forking workers

Simon Eskildsen (1):
      check_client_connection: use tcp state on linux


(wen)
diff -r1.11 -r1.12 pkgsrc/www/ruby-unicorn/Makefile
diff -r1.11 -r1.12 pkgsrc/www/ruby-unicorn/PLIST
diff -r1.11 -r1.12 pkgsrc/www/ruby-unicorn/distinfo

cvs diff -r1.11 -r1.12 pkgsrc/www/ruby-unicorn/Makefile (expand / switch to unified diff)

--- pkgsrc/www/ruby-unicorn/Makefile 2016/11/01 17:06:59 1.11
+++ pkgsrc/www/ruby-unicorn/Makefile 2017/04/09 04:12:39 1.12
@@ -1,16 +1,16 @@ @@ -1,16 +1,16 @@
1# $NetBSD: Makefile,v 1.11 2016/11/01 17:06:59 taca Exp $ 1# $NetBSD: Makefile,v 1.12 2017/04/09 04:12:39 wen Exp $
2 2
3DISTNAME= unicorn-5.2.0 3DISTNAME= unicorn-5.3.0
4CATEGORIES= www 4CATEGORIES= www
5 5
6MAINTAINER= pkgsrc-users@NetBSD.org 6MAINTAINER= pkgsrc-users@NetBSD.org
7HOMEPAGE= https://bogomips.org/unicorn/ 7HOMEPAGE= https://bogomips.org/unicorn/
8COMMENT= Rack HTTP server for fast clients and Unix 8COMMENT= Rack HTTP server for fast clients and Unix
9LICENSE= ruby-license OR gnu-gpl-v2 OR gnu-gpl-v3 9LICENSE= ruby-license OR gnu-gpl-v2 OR gnu-gpl-v3
10 10
11DEPENDS+= ${RUBY_PKGPREFIX}-kgio>=2.6<3:../../devel/ruby-kgio 11DEPENDS+= ${RUBY_PKGPREFIX}-kgio>=2.6<3:../../devel/ruby-kgio
12DEPENDS+= ${RUBY_PKGPREFIX}-raindrops>=0.7<1:../../www/ruby-raindrops 12DEPENDS+= ${RUBY_PKGPREFIX}-raindrops>=0.7<1:../../www/ruby-raindrops
13 13
14USE_GCC_RUNTIME= yes 14USE_GCC_RUNTIME= yes
15RUBYGEM_OPTIONS+= --format-executable 15RUBYGEM_OPTIONS+= --format-executable
16 16

cvs diff -r1.11 -r1.12 pkgsrc/www/ruby-unicorn/PLIST (expand / switch to unified diff)

--- pkgsrc/www/ruby-unicorn/PLIST 2016/11/01 17:06:59 1.11
+++ pkgsrc/www/ruby-unicorn/PLIST 2017/04/09 04:12:39 1.12
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1@comment $NetBSD: PLIST,v 1.11 2016/11/01 17:06:59 taca Exp $ 1@comment $NetBSD: PLIST,v 1.12 2017/04/09 04:12:39 wen Exp $
2bin/unicorn${RUBY_SUFFIX} 2bin/unicorn${RUBY_SUFFIX}
3bin/unicorn_rails${RUBY_SUFFIX} 3bin/unicorn_rails${RUBY_SUFFIX}
4${GEM_HOME}/cache/${GEM_NAME}.gem 4${GEM_HOME}/cache/${GEM_NAME}.gem
5${GEM_EXTSDIR}/gem.build_complete 5${GEM_EXTSDIR}/gem.build_complete
6${GEM_EXTSDIR}/unicorn_http.${RUBY_DLEXT} 6${GEM_EXTSDIR}/unicorn_http.${RUBY_DLEXT}
7${GEM_LIBDIR}/.CHANGELOG.old 7${GEM_LIBDIR}/.CHANGELOG.old
8${GEM_LIBDIR}/.document 8${GEM_LIBDIR}/.document
9${GEM_LIBDIR}/.gitattributes 9${GEM_LIBDIR}/.gitattributes
10${GEM_LIBDIR}/.gitignore 10${GEM_LIBDIR}/.gitignore
11${GEM_LIBDIR}/.mailmap 11${GEM_LIBDIR}/.mailmap
12${GEM_LIBDIR}/.manifest 12${GEM_LIBDIR}/.manifest
13${GEM_LIBDIR}/.olddoc.yml 13${GEM_LIBDIR}/.olddoc.yml
14${GEM_LIBDIR}/Application_Timeouts 14${GEM_LIBDIR}/Application_Timeouts
@@ -137,26 +137,27 @@ ${GEM_LIBDIR}/t/t0200-rack-hijack.sh @@ -137,26 +137,27 @@ ${GEM_LIBDIR}/t/t0200-rack-hijack.sh
137${GEM_LIBDIR}/t/t0300-no-default-middleware.sh 137${GEM_LIBDIR}/t/t0300-no-default-middleware.sh
138${GEM_LIBDIR}/t/t9000-preread-input.sh 138${GEM_LIBDIR}/t/t9000-preread-input.sh
139${GEM_LIBDIR}/t/t9001-oob_gc.sh 139${GEM_LIBDIR}/t/t9001-oob_gc.sh
140${GEM_LIBDIR}/t/t9002-oob_gc-path.sh 140${GEM_LIBDIR}/t/t9002-oob_gc-path.sh
141${GEM_LIBDIR}/t/test-lib.sh 141${GEM_LIBDIR}/t/test-lib.sh
142${GEM_LIBDIR}/t/write-on-close.ru 142${GEM_LIBDIR}/t/write-on-close.ru
143${GEM_LIBDIR}/test/aggregate.rb 143${GEM_LIBDIR}/test/aggregate.rb
144${GEM_LIBDIR}/test/benchmark/README 144${GEM_LIBDIR}/test/benchmark/README
145${GEM_LIBDIR}/test/benchmark/dd.ru 145${GEM_LIBDIR}/test/benchmark/dd.ru
146${GEM_LIBDIR}/test/benchmark/stack.ru 146${GEM_LIBDIR}/test/benchmark/stack.ru
147${GEM_LIBDIR}/test/exec/README 147${GEM_LIBDIR}/test/exec/README
148${GEM_LIBDIR}/test/exec/test_exec.rb 148${GEM_LIBDIR}/test/exec/test_exec.rb
149${GEM_LIBDIR}/test/test_helper.rb 149${GEM_LIBDIR}/test/test_helper.rb
 150${GEM_LIBDIR}/test/unit/test_ccc.rb
150${GEM_LIBDIR}/test/unit/test_configurator.rb 151${GEM_LIBDIR}/test/unit/test_configurator.rb
151${GEM_LIBDIR}/test/unit/test_droplet.rb 152${GEM_LIBDIR}/test/unit/test_droplet.rb
152${GEM_LIBDIR}/test/unit/test_http_parser.rb 153${GEM_LIBDIR}/test/unit/test_http_parser.rb
153${GEM_LIBDIR}/test/unit/test_http_parser_ng.rb 154${GEM_LIBDIR}/test/unit/test_http_parser_ng.rb
154${GEM_LIBDIR}/test/unit/test_request.rb 155${GEM_LIBDIR}/test/unit/test_request.rb
155${GEM_LIBDIR}/test/unit/test_response.rb 156${GEM_LIBDIR}/test/unit/test_response.rb
156${GEM_LIBDIR}/test/unit/test_server.rb 157${GEM_LIBDIR}/test/unit/test_server.rb
157${GEM_LIBDIR}/test/unit/test_signals.rb 158${GEM_LIBDIR}/test/unit/test_signals.rb
158${GEM_LIBDIR}/test/unit/test_socket_helper.rb 159${GEM_LIBDIR}/test/unit/test_socket_helper.rb
159${GEM_LIBDIR}/test/unit/test_stream_input.rb 160${GEM_LIBDIR}/test/unit/test_stream_input.rb
160${GEM_LIBDIR}/test/unit/test_tee_input.rb 161${GEM_LIBDIR}/test/unit/test_tee_input.rb
161${GEM_LIBDIR}/test/unit/test_upload.rb 162${GEM_LIBDIR}/test/unit/test_upload.rb
162${GEM_LIBDIR}/test/unit/test_util.rb 163${GEM_LIBDIR}/test/unit/test_util.rb

cvs diff -r1.11 -r1.12 pkgsrc/www/ruby-unicorn/distinfo (expand / switch to unified diff)

--- pkgsrc/www/ruby-unicorn/distinfo 2016/11/01 17:06:59 1.11
+++ pkgsrc/www/ruby-unicorn/distinfo 2017/04/09 04:12:39 1.12
@@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
1$NetBSD: distinfo,v 1.11 2016/11/01 17:06:59 taca Exp $ 1$NetBSD: distinfo,v 1.12 2017/04/09 04:12:39 wen Exp $
2 2
3SHA1 (unicorn-5.2.0.gem) = 1a8d36d928c04269698307b6f2c0b3371c0b4529 3SHA1 (unicorn-5.3.0.gem) = 4f0223516cb2899089eef242896e1a9995bc8add
4RMD160 (unicorn-5.2.0.gem) = e272e55979ac5cd28e794306a504e8b348fc05ab 4RMD160 (unicorn-5.3.0.gem) = 6621ffe05fef37512e91003d394e0c01775f8588
5SHA512 (unicorn-5.2.0.gem) = d60b4ae818444407466815366c09f702863f0d8fd7a3745419dbf01c86f8f67ebe547aa0f76acb364c34c544ef9ed6811e61525573f97e26e489d5166784ae1e 5SHA512 (unicorn-5.3.0.gem) = 5233098910af943041e12c8896a8ec230dec3e5a4115e59c3dcddcf595ed452cdfdee171bba317d8a06349f999046f804edbd16615ac0140e12605a6c971a906
6Size (unicorn-5.2.0.gem) = 212480 bytes 6Size (unicorn-5.3.0.gem) = 216576 bytes