This release reduces CPU usage for Linux 4.5+ in most cases. See "[PATCH 6/6] use EPOLLEXCLUSIVE on Linux 4.5+" for more details: https://yhbt.net/unicorn-public/20211001030923.26705-7-bofh@yhbt.net/ There's a couple of updates for Ruby 3.1, but we've finally started relying on Ruby 2.0.0 features after 9 years :P (so Ruby 1.9.3 users are stuck with older versions). And the usual round of doc updates and some build speedups. 13 changes by the Bozo Doofus maintainer since v6.0.0: test_util: less excessive encoding tests drop Ruby 1.9.3 support, require 2.0+ for now drop unnecessary IO#close_on_exec=true assignment extconf.rb: get rid of unnecessary checks makefile: reduce unnecessary rebuilds HACKING: drop outdated information about pandoc http_server: get rid of Process.ppid check worker_loop: get rid of select() avoidance hack use EPOLLEXCLUSIVE on Linux 4.5+ allow Ruby to deduplicate remaining globals epollexclusive: remove rb_gc_force_recycle call drop Ruby version warning, fix speling errer doc: v3 .onion updates, nntp => nntps, minor wording changes
This release allocates a new Rack `env' hash for every request. This is done for safety with internally-(thread|event)-using Rack apps which expect to use `env' after the normal Rack response is complete, but without relying on rack.hijack[1]. Thanks to Dirkjan Bussink <d.bussink@gmail.com> for the patch: https://yhbt.net/unicorn-public/66A68DD8-83EF-4C7A-80E8-3F1F7AB31670@github.com/ The major version is bumped since: 1) there are performance regressions for some simple Rack apps 2) unsupported 3rd-party monkey patches which previously relied on this behavior may be broken (our version of OobGC was). The test suite is also more reliable on multi-core systems and Ruby 3.x. [1] thread from 2017 around rack.hijack safety: https://yhbt.net/unicorn-public/CAAtdryPG3nLuyo0jxfYW1YHu1Q+ZpkLkd4KdWC8vA46B5haZxw@mail.gmail.com/
This release supports env['rack.after_reply'] which allows rack middleware to pass lambdas to be executed after the client connection is closed, matching functionality in Puma. Thanks to Blake Williams for this patch: https://yhbt.net/unicorn-public/9873E53C-04D3-4759-9678-CA17DBAEF7B7@blakewilliams.me/ The top-level of our website is now simpler and no longer redundant with the contents of https://yhbt.net/unicorn/README.html (which contains the old content)
Relaxed Ruby version requirements for Ruby 3.0.0dev. Thanks to Jean Boussier for testing
This release adds support for the early_hints configurator directive for the 'rack.early_hints' API used by Rails 5.2+. Thanks to Jean Boussier for the patch. Link: https://yhbt.net/unicorn-public/242F0859-0F83-4F14-A0FF-5BE392BB01E6@shopify.com/
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. Link: https://yhbt.net/unicorn-public/CAMBWrQ=Yh42MPtzJCEO7XryVknDNetRMuA87irWfqVuLdJmiBQ@mail.gmail.com/
One change to improve RFC 7230 conformance in the HTTP parser: https://yhbt.net/unicorn-public/20200319022823.32472-1-bofh@yhbt.net/
Documentation updates to switch bogomips.org to yhbt.net since the .org TLD won't be affordable in the near future. There's also a few minor test cleanups.
Thanks to Terry Scheingeld, we now workaround a Ruby bug and can now run with taint checks enabled: <https://bugs.ruby-lang.org/issues/14485> <https://bogomips.org/unicorn-public/CABg1sXrvGv9G6CDQxePDUqTe6N-5UpLXm7eG3YQO=dda-Cgg7A@mail.gmail.com/> There's also a few documentation updates and building packages from source is easier since pandoc is no longer a dependency (and I can no longer afford the bandwidth or space to install it). Eric Wong (7): test/benchmark/ddstream: demo for slowly reading clients test/benchmark/readinput: demo for slowly uploading clients test/benchmark/uconnect: test for accept loop speed examples/unicorn@.service: note the NonBlocking flag Merge remote-tracking branch 'origin/ts/tmpio' test_util: get rid of some unused variables in tests doc: replace pandoc-"Markdown" with real manpages Terry Scheingeld (1): tmpio: workaround File#path being tainted on unlink
This release fixes and works around issues from v5.5.0 (2019-03-04) Stephen Demjanenko worked around a pipe resource accounting bug present in old Linux kernels. Linux 3.x users from 3.16.57 and on are unaffected. Linux 4.x users from 4.9 and on are unaffected. https://bogomips.org/unicorn-public/1556922018-24096-1-git-send-email-sdemjanenko@gmail.com/ Stan Pitucha reported a bug with the old `unicorn_rails' wrapper (intended for Rails 2.x users) which was promptly fixed by Jeremy Evans: https://bogomips.org/unicorn-public/CAJ2_uEPifcv_ux4sX=t0C4zHTHGhqVfcLcSB2kTU3Rb_6pQ3nw@mail.gmail.com/ There's also some doc updates to warn users off `unicorn_rails'; the homepage is now energy-efficient for OLEDs and CRTs; and I'm no longer advertising mailing list subscriptions (because I hate centralization and mail archives are the priority) Eric Wong (3): doc: unicorn_rails: clarify that it is intended for rails <= 2.x doc: stop advertising mailing list subscription doc: switch homepage to dark216 Jeremy Evans (1): unicorn_rails: fix regression with Rails >= 3.x in app build Stephen Demjanenko (1): Rescue failed pipe resizes due to permissions