LATEST - unicorn-5.3.0 Documentation

### 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