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. Disclaimer: Due to its ability to tolerate crashes and isolate clients, unicorn is unfortunately known to prolong the existence of bugs in applications and libraries which run on top of it. * https://bogomips.org/unicorn/ * public list: unicorn-public@bogomips.org * mail archives: https://bogomips.org/unicorn-public/ * git clone https://bogomips.org/unicorn.git * https://bogomips.org/unicorn/NEWS.atom.xml * nntp://news.public-inbox.org/inbox.comp.lang.ruby.unicorn This is a pre-release RubyGem intended for testing. Changes: unicorn 5.5.0.pre1 Jeremy Evans contributed the "default_middleware" configuration option: https://bogomips.org/unicorn-public/20180913192055.GD48926@jeremyevans.local/ Jeremy also contributed the ability to use separate groups for the process and log files: https://bogomips.org/unicorn-public/20180913192449.GE48926@jeremyevans.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 --
Nowadays, I mainly rely on systemd (and not USR2) for zero-downtime upgrades. Also, CoW-friendliness is standard in mainline Ruby since 2.0. There also needs to be a disclaimer to point out the unfortunate side-effect of robustness for hosting buggy apps. --- README | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README b/README index 5e5ccf7..89467fc 100644 --- a/README +++ b/README @@ -37,12 +37,15 @@ both the the request and response in between unicorn and slow clients. You can upgrade unicorn, your entire application, libraries and even your Ruby interpreter without dropping clients. +* transparent upgrades using systemd socket activation is + supported since unicorn 5.0 + * before_fork and after_fork hooks in case your application has special needs when dealing with forked processes. These should not be needed when the "preload_app" directive is false (the default). -* Can be used with copy-on-write-friendly memory management +* Can be used with copy-on-write-friendly GC in Ruby 2.0+ to save memory (by setting "preload_app" to true). * Able to listen on multiple interfaces including UNIX sockets, @@ -55,7 +58,7 @@ both the the request and response in between unicorn and slow clients. == License -unicorn is copyright 2009-2016 by all contributors (see logs in git). +unicorn is copyright 2009-2018 by all contributors (see logs in git). It is based on Mongrel 1.1.5. Mongrel is copyright 2007 Zed A. Shaw and contributors. @@ -122,6 +125,10 @@ unicorn is designed to only serve fast clients either on the local host or a fast LAN. See the PHILOSOPHY and DESIGN documents for more details regarding this. +Due to its ability to tolerate crashes and isolate clients, unicorn +is unfortunately known to prolong the existence of bugs in applications +and libraries which run on top of it. + == Contact All feedback (bug reports, user/development dicussion, patches, pull -- EW