./www/ruby-unicorn, Rack HTTP server for fast clients and Unix

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 5.5.5, Package name: ruby26-unicorn-5.5.5, Maintainer: pkgsrc-users

Unicorn is an HTTP server for Rack applications designed to only serve
fast clients on low-latency, high-bandwidth connections and take
advantage of features in Unix/Unix-like kernels. Slow clients should
only be served by placing a reverse proxy capable of fully buffering
both the the request and response in between Unicorn and slow clients.


Required to run:
[devel/ruby-kgio] [www/ruby-raindrops] [lang/ruby26-base]

Required to build:
[pkgtools/cwrappers]

Master sites:

SHA1: 328d83d1d296f1af41d7b6bedbe4550bc851f86a
RMD160: 0288b8ffb765f63da2f92a9784df3527ced9e105
Filesize: 218.5 KB

Version history: (Expand)


CVS history: (Expand)


   2020-06-07 17:48:49 by Takahiro Kambe | Files touched by this commit (2) | Package updated
Log message:
www/ruby-unicorn: update to 5.5.5

Update ruby-unicorn to 5.5.5.

5.5.5 (2020-04-27)

This release fixes a bug for users of multiple listeners setups
where a busy listen socket could starve other listeners.

Thanks to Stan Hu for reporting and testing.

No need to upgrade if you're using a single listen socket.

5.5.4 (2020-03-24)

One change to improve RFC 7230 conformance in the HTTP parser:
   2020-03-20 17:04:30 by Takahiro Kambe | Files touched by this commit (3) | Package updated
Log message:
www/ruby-unicorn: update to 5.5.3

Update ruby-unicorn to 5.5.3.

=== unicorn 5.5.0 / 2019-03-04 00:41 UTC

  Mostly identical to 5.5.0.pre1, which I didn't hear any feedback
  from:

    https://bogomips.org/unicorn-public/201 … 7382@dcvr/

  > Jeremy Evans contributed the "default_middleware" configuration \ 
option:
  >
  >   \ 
https://bogomips.org/unicorn-public/201 … ans.local/
  >
  > Jeremy also contributed the ability to use separate groups for the process
  > and log files:
  >
  >   \ 
https://bogomips.org/unicorn-public/201 … ans.local/
  >
  > There's also a couple of uninteresting minor optimizations and
  > documentation additions.

  Otherwise, there's one extra change to use
  rb_gc_register_mark_object which is finally a documented part of
  the Ruby C-API, but has existed since the 1.9 days.

=== unicorn 5.5.0.pre1 / 2018-12-20 20:11 UTC

  Jeremy Evans contributed the "default_middleware" configuration option:

    https://bogomips.org/unicorn-public/201 … ans.local/

  Jeremy also contributed the ability to use separate groups for the process
  and log files:

    https://bogomips.org/unicorn-public/201 … ans.local/

  There's also a couple of uninteresting minor optimizations and
  documentation additions.

  Eric Wong (10):
        remove random seed reset atfork
        use IO#wait instead of kgio_wait_readable
        Merge branch '5.4-stable'
        shrink pipes under Linux
        socket_helper: add hint for FreeBSD users for accf_http(9)
        tests: ensure -N/--no-default-middleware not supported in config.ru
        doc: update more URLs to use HTTPS and avoid redirects
        deduplicate strings VM-wide in Ruby 2.5+
        doc/ISSUES: add links to git clone-able mail archives of our dependencies
        README: minor updates and additional disclaimer

  Jeremy Evans (2):
        Make Worker#user support different process primary group and log file group
        Support default_middleware configuration option
   2018-09-23 19:01:05 by Takahiro Kambe | Files touched by this commit (2) | Package updated
Log message:
www/ruby-unicorn: update to 5.4.1

5.4.1 (2018-07-23)

This release quiets some warnings for Ruby 2.6 preview releases
and enables tests to pass under Ruby 1.9.3.  Otherwise, nothing
interesting for Ruby 2.0..2.5 users.
   2018-03-17 17:07:55 by Takahiro Kambe | Files touched by this commit (2) | Package updated
Log message:
www/ruby-unicorn: update to 5.4.0

unicorn 5.4.0 / 2017-12-23

Rack hijack support improves as the app code can capture and use
the Rack `env' privately without copying it (to avoid clobbering
by another client).  Thanks to Sam Saffron for reporting and
testing this new feature:

  \ 
https://bogomips.org/unicorn-public/CAA … ail.com/T/

We also now support $DEBUG being set by the Rack app (instead of
relying on the "-d" CLI switch).  Thanks to James P Robinson Jr
for reporting this bug:

  https://bogomips.org/unicorn-public/D63 … gna.com/T/
  (Coincidentally, this fix will be irrelevant for Ruby 2.5
   which requires 'pp' by default)

There's a few minor test cleanups and documentation updates, too.

unicorn 5.3.1 / 2017-10-03

This release fixes an occasional GC problem introduced in v5.3.0
to reduce global variable overhead (commit 979ebcf91705709b)

Thanks to Xuanzhong Wei for the patch which lead to this release:

https://bogomips.org/unicorn-public/201 … l.com/T/#u
https://bogomips.org/unicorn-public/201 … l.com/T/#u

  Xuanzhong Wei (1):
        fix GC issue on rb_global_variable array
   2017-04-09 06:12:39 by Wen Heping | Files touched by this commit (3) | Package updated
Log message:
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/Co … connection
  \ 
https://bogomips.org/unicorn-public/?q= … 01&x=t

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

   https://bogomips.org/raindrops-public/2 … @dcvr/T/#u

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

  https://bogomips.org/unicorn/Unicorn/Co … orker_exit
  \ 
https://bogomips.org/unicorn-public/?q= … &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/Co … rker_ready
  https://bogomips.org/unicorn/Unicorn/Wo … hod-i-user
  \ 
https://bogomips.org/unicorn-public/?q= … &x=t#t
  https://bogomips.org/unicorn-public/?q= … &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/Co … orker_exec
  https://bogomips.org/unicorn-public/?q= … &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/Co … connection
  \ 
https://bogomips.org/unicorn-public/?q= … 24&x=t

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

   https://bogomips.org/raindrops-public/2 … @dcvr/T/#u

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

  https://bogomips.org/unicorn/Unicorn/Co … orker_exit
  \ 
https://bogomips.org/unicorn-public/?q= … &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/Co … rker_ready
  https://bogomips.org/unicorn/Unicorn/Wo … hod-i-user
  \ 
https://bogomips.org/unicorn-public/?q= … &x=t#t
  https://bogomips.org/unicorn-public/?q= … &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/Co … orker_exec
  https://bogomips.org/unicorn-public/?q= … &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
   2016-11-01 18:06:59 by Takahiro Kambe | Files touched by this commit (3) | Package updated
Log message:
Update ruby-unicorn to 5.2.0.

* relocate website to https://bogomips.org/unicorn/
* Add some tolerance (RFC2616 sec. 19.3)
* doc: update gmane URLs to point to our own archives
* examples/logrotate.conf: update example for systemd
* doc: systemd should only kill master in example
* examples/init.sh: update to reduce upgrade racinessjr/init
   2016-10-20 17:25:53 by Takahiro Kambe | Files touched by this commit (3) | Package updated
Log message:
Update ruby-unicorn to 5.1.0.

* http: TypedData C-API conversion
* various documentation updates
* doc: bump olddoc to ~> 1.2 for extra NNTP URL
* rack is optional at runtime, required for dev
* doc update for ClientShutdown exceptions class
* unicorn 5.1.0.pre1 - rack is optional, again
* doc: reference --keep-file-descriptors for "bundle exec"
* doc: further trimming to reduce noise
* use leftpad Linux syscall for speed!
   2015-12-13 17:16:59 by Takahiro Kambe | Files touched by this commit (3) | Package updated
Log message:
Update ruby-unicorn to 5.0.1.

=== unicorn 5.0.0.pre2 - another prerelease! / 2015-07-06 21:37 UTC

  There is a minor TCP socket options are now applied to inherited
  sockets, and we have native support for inheriting sockets from
  systemd (by emulating the sd_listen_fds(3) function).

  Dynamic changes in the application to Rack::Utils::HTTP_STATUS
  codes is now supported, so you can use your own custom status
  lines.

  Ruby 2.2 and later is now favored for performance.
  Optimizations by using constants which made sense in earlier
  versions of Ruby are gone: so users of old Ruby versions
  will see performance regressions.  Ruby 2.2 users should
  see the same or better performance, and we have less code
  as a result.

  * doc: update some invalid URLs
  * apply TCP socket options on inherited sockets
  * reflect changes in Rack::Utils::HTTP_STATUS_CODES
  * reduce constants and optimize for Ruby 2.2
  * http_response: reduce size of multi-line header path
  * emulate sd_listen_fds for systemd support
  * test/unit/test_response.rb: compatibility with older test-unit

  This also includes all changes in unicorn 5.0.0.pre1:

  http://bogomips.org/unicorn-public/m/20 … t.net.html

=== unicorn 5.0.0.pre1 - incompatible changes! / 2015-06-15 22:49 UTC

  This release finally drops Ruby 1.8 support and requires Ruby 1.9.3
  or later.  The horrible "Status:" header in our HTTP response is
  finally gone, saving at least 16 precious bytes in every single HTTP
  response.

  Under Ruby 2.1 and later, the monotonic clock is used for timeout
  handling for better accuracy.

  Several experimental, unused and undocumented features are removed.

  There's also tiny, minor performance and memory improvements from
  dropping 1.8 compatibility, but probably nothing noticeable on a
  typical real-life (bloated) app.

  The biggest performance improvement we made was to our website by
  switching to olddoc.  Depending on connection speed, latency, and
  renderer performance, it typically loads two to four times faster.

  Finally, for the billionth time: unicorn must never be exposed
  to slow clients, as it will never ever use new-fangled things
  like non-blocking socket I/O, threads, epoll or kqueue.  unicorn
  must be used with a fully-buffering reverse proxy such as nginx
  for slow clients.

  * ISSUES: update with mailing list subscription
  * GIT-VERSION-GEN: start 5.0.0 development
  * http: remove xftrust options
  * FAQ: add entry for Rails autoflush_log
  * dev: remove isolate dependency
  * unicorn.gemspec: depend on test-unit 3.0
  * http_response: remove Status: header
  * remove RubyForge and Freecode references
  * remove mongrel.rubyforge.org references
  * http: remove the keepalive requests limit
  * http: reduce parser from 72 to 56 bytes on 64-bit
  * examples: add run_once to before_fork hook example
  * worker: remove old tmp accessor
  * http_server: save 450+ bytes of memory on x86-64
  * t/t0002-parser-error.sh: relax test for rack 1.6.0
  * remove SSL support
  * tmpio: drop the "size" method
  * switch docs + website to olddoc
  * README: clarify/reduce references to unicorn_rails
  * gemspec: fixup olddoc migration
  * use the monotonic clock under Ruby 2.1+
  * http: -Wshorten-64-to-32 warnings on clang
  * remove old inetd+git examples and exec_cgi
  * http: standalone require + reduction in binary size
  * GNUmakefile: fix clean gem build + reduce build cruft
  * socket_helper: reduce constant lookups and caching
  * remove 1.8, <= 1.9.1 fallback for missing IO#autoclose=
  * favor IO#close_on_exec= over fcntl in 1.9+
  * use require_relative to reduce syscalls at startup
  * doc: update support status for Ruby versions
  * fix uninstalled testing and reduce require paths
  * test_socket_helper: do not depend on SO_REUSEPORT
  * favor "a.b(&:c)" form over "a.b { |x| x.c }"
  * ISSUES: add section for bugs in other projects
  * http_server: favor ivars over constants
  * explain 11 byte magic number for self-pipe
  * const: drop constants used by Rainbows!
  * reduce and localize constant string use
  * Links: mark Rainbows! as historical, reference yahns
  * save about 200 bytes of memory on x86-64
  * http: remove deprecated reset method
  * http: remove experimental dechunk! method
  * socket_helper: update comments
  * doc: document UNICORN_FD in manpage
  * doc: document Etc.nprocessors for worker_processes
  * favor more string literals for cold call sites
  * tee_input: support for Rack::TempfileReaper middleware
  * support TempfileReaper in deployment and development envs
  * favor kgio_wait_readable for single FD over select
  * Merge tag 'v4.9.0'
  * http_request: support rack.hijack by default
  * avoid extra allocation for hijack proc creation
  * FAQ: add note about ECONNRESET errors from bodies
  * process SIGWINCH unless stdin is a TTY
  * ISSUES: discourage HTML mail strongly, welcome nyms
  * http: use rb_hash_clear in Ruby 2.0+
  * http_response: avoid special-casing for Rack < 1.5
  * www: install NEWS.atom.xml properly
  * http_server: remove a few more accessors and constants
  * http_response: simplify regular expression
  * move the socket into Rack env for hijacking
  * http: move response_start_sent into the C ext
  * FAQ: reorder bit on Rack 1.1.x and Rails 2.3.x
  * ensure body is closed during hijack