about summary refs log tree commit homepage
path: root/unicorn.gemspec
DateCommit message (Collapse)
2020-09-08unicorn 5.7.0 v5.7.0
Relaxed Ruby version requirements for Ruby 3.0.0dev. Thanks to Jean Boussier for testing
2020-09-06Update ruby_version requirement to allow ruby 3.0
Ruby just recently bump the master version to 3.0. This requirement bump is necessary to test unicorn against ruby master. [ew: wrap at <80 columns for hackers with poor eyesight] Acked-by: Eric Wong <bofh@yhbt.net>
2020-07-26unicorn 5.6.0 - early_hints support v5.6.0
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/
2020-04-27unicorn 5.5.5 v5.5.5
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/
2020-03-24unicorn 5.5.4 v5.5.4
One change to improve RFC 7230 conformance in the HTTP parser: https://yhbt.net/unicorn-public/20200319022823.32472-1-bofh@yhbt.net/
2020-01-31unicorn 5.5.3 v5.5.3
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.
2020-01-20doc: s/bogomips.org/yhbt.net/g
bogomips.org is due to expire, soon, and I'm not willing to pay extortionist fees to Ethos Capital/PIR/ICANN to keep a .org. So it's at yhbt.net, for now, but it will change again to whatever's affordable... Identity is overrated. Tor users can use .onions and kick ICANN to the curb: torsocks w3m http://unicorn.ou63pmih66umazou.onion/ torsocks git clone http://ou63pmih66umazou.onion/unicorn.git/ torsocks w3m http://ou63pmih66umazou.onion/unicorn-public/ While we're at it, `s/news.gmane.org/news.gmane.io/g', too. (but I suspect that'll need to be resynched since our mail "List-Id:" header is changing).
2019-03-04unicorn 5.5.0 v5.5.0
Mostly identical to 5.5.0.pre1, which I didn't hear any feedback from: https://bogomips.org/unicorn-public/20181220222842.GA27382@dcvr/ > 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. 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.
2018-12-20unicorn 5.5.0.pre1 v5.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
2018-07-23unicorn 5.4.1 v5.4.1 5.4-stable
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. *YAWN* Eric Wong (1): quiet some mismatched indentation warnings Fumiaki MATSUSHIMA (1): Use IO#wait instead to fix test for Ruby 1.9
2017-12-23unicorn 5.4.0 v5.4.0
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/CAAtdryPG3nLuyo0jxfYW1YHu1Q+ZpkLkd4KdWC8vA46B5haZxw@mail.gmail.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/D6324CB4.7BC3E%25james.robinson3@cigna.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. All commits since v5.3.1 (2017-10-03): reduce method calls with String#start_with? require 'pp' if $DEBUG is set by Rack app avoid reusing env on hijack tests: cleanup some unused variable warnings ISSUES: add a note about Debian BTS interopability Roughly all mailing discussions since the last release: https://bogomips.org/unicorn-public/?q=d:20171004..20171223
2017-04-01unicorn 5.3.0 v5.3.0
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
2017-03-24unicorn 5.3.0.pre1 v5.3.0.pre1
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
2017-03-23gemspec: remove olddoc from build dependency
It's a little less DRY, and there'll be no NEWS file generated, but it's one less thing to install, so perhaps that's worth it. The website at https://bogomips.org/unicorn/ will continue to use olddoc, of course,
2016-01-27rack is optional at runtime, required for dev
We do not want to pull in a newer or older version of rack depending on an the application running under it requires. Furthermore, it has always been possible to use unicorn without any middleware at all. Without rack, we'll be missing descriptive status text in the first response line, but any valid HTTP/1.x parser should be able to handle it properly. ref: http://bogomips.org/unicorn-public/20160121201255.GA6186@dcvr.yhbt.net/t/#u Thanks-to: Adam Duke <adam.v.duke@gmail.com> Thanks-to: Aaron Patterson <tenderlove@ruby-lang.org>
2016-01-09doc: bump olddoc to ~> 1.2 for extra NNTP URL
Additional advertising for the gmane NNTP server makes sense from a robustness standpoint: nntp://news.gmane.org/gmane.comp.lang.ruby.unicorn.general Not advertising other HTTP-based URLs just yet. They could contain images/frames/JS/CSS and add unnecessary clutter to the footer. NNTP puts the client in control of UI.
2015-11-01gemspec: relax Ruby version requirement for old RubyGems
Older RubyGems (1.8.23.2 at least) does not seem to support multiple version requirements for the Ruby version; so drop the lower 1.9.3 requirement for now.
2015-08-22gemspec: limit to 1.9.3 and 2.x
It does not look like we'll be compatible with Ruby 3.0 with the plan for immutable string literals. However, keep in mind 3.0 is still many years away and decisions can change, so it would be premature to stop assuming frozen string literals this year. ref: https://bugs.ruby-lang.org/issues/11473
2015-01-17gemspec: fixup olddoc migration
rdoc_options is no longer necesary with olddoc as olddoc can infer document titles and only generates cgit-compatible URLs to source code.
2015-01-10switch docs + website to olddoc
wrongdoc was difficult to maintain because of the tidy-ffi dependency and the HTML5 changes in Darkfish could not be handled well by Tidy. olddoc is superior as it generates leaner HTML which loads faster, requires less scrolling and less processing power to render. Aesthetic comparisons are subjective of course but completely unimportant compared to speed and accessibility. The presence of images and CSS on the old (Darkfish-based) site probably set unreasonable expectations as to my ability and willingness to view such things. No more, the new website is entirely simple HTML which renders well with even the wimpiest browser.
2014-08-17remove RubyForge and Freecode references
Both sites are gone.
2014-08-17unicorn.gemspec: depend on test-unit 3.0
test-unit 3 and minitest 5 will have equal support status as a bundled gems when Ruby 2.2.0 is released in December 2014. These bundled gems will appear in the user-oriented tarball installations, but do not get installed by "make install" when installing Ruby from SVN or git. test-unit appears to be actively maintained and good at keeping backwards compatibility even on a major version change, so this means no code changes on our end. I am not convinced switching to minitest is worth the effort. Cc: Ken Dreyer <ktdreyer@ktdreyer.com>
2014-08-17dev: remove isolate dependency
It seems unnecessary with current versions of RubyGems supporting development dependencies.
2014-05-06swap out most of the rubyforge.org links
Update the old mailing list info with our new public-inbox info. The old mongrel.rubyforge.org links have been dead for years, oh well. There's only a few days left of RubyForge left...
2013-10-26license: allow all future versions of the GNU GPL
There is currently no GPLv4, so this change has no effect at the moment. In case the GPLv4 arrives and I am not alive to approve/review it, the lesser of evils is have give blanket approval of all future GPL versions (as published by the FSF). The worse evil is to be stuck with a license which cannot guarantee the Free-ness of this project in the future. This unfortunately means the FSF can theoretically come out with license terms I do not agree with, but the GPLv2 and GPLv3 will always be an option to all users.
2012-12-04gemspec: enable licenses metadata attribute
This enables compatibility with metadata scanners such as LicenseFinder[1]. The previously commented-out accessor was commented out in September 2009 when ancient RubyGems were more prevalent. By now (December 2012), those ancient versions of RubyGems are unlikely to be around. [1] https://github.com/pivotal/LicenseFinder [ew: rewritten commit message] Signed-off-by: Eric Wong <normalperson@yhbt.net>
2011-12-05bump dependencies
We should always be testing with the newest available versions to watch for incompatibilities, even if we don't /require/ the latest ones to run.
2011-08-19gemspec: bump wrongdoc dependency for dev
Hopefully it points people towards the mailing list
2011-06-22gemspec: fix raindrops dependency
Oops, I suck at Ruby :x
2011-06-16replace fchmod()-based heartbeat with raindrops
This means we no longer waste an extra file descriptor per worker process in the master. Now there's no need to set a higher file descriptor limit for systems running >= 1024 workers.
2011-06-13gemspec: bump kgio dependency to ~> 2.4
kgio 2.4.1 portability should be better than 2.3, so less user confusion and push them towards 2.4
2011-05-23gemspec: use latest Isolate (3.1)
It's required for RubyGems 1.8.x
2011-03-08gemspec: update kgio dependency to 2.3.2
People reinstalling would've pulled it in anyways, but 2.3.2 is the latest and has no known issues.
2011-03-08gemspec: no need for require_paths
2011-02-04bump dependency on kgio
This is needed for IPv6 support, and 2.2.0 is nicer all around for Rainbows! users. Updates wrongdoc while we're at it, too.
2011-01-05unicorn 3.3.0 - minor optimizations v3.3.0
Certain applications that already serve hundreds/thousands of requests a second should experience performance improvements due to Time.now.httpdate usage being removed and reimplemented in C. There are also minor internal changes and cleanups for Rainbows!
2010-12-26gemspec: fix gemspec build
Oops
2010-12-26bump kgio dependency to ~> 2.1
The kgio 2.x series will maintain API compatibility until 3.x, so it's safe to use any 2.x release.
2010-12-25doc: use wrongdoc for documentation
wrongdoc factors out a bunch of common code from this project into its own and removes JavaScript from RDoc to boot.
2010-11-19update to kgio 2.x series
The Kgio 2.x API is less brain-damaged than the 1.3.x series was, and should solve API-compatibility problems with dalli 0.11.1.
2010-10-27doc: stop using deprecated rdoc CLI options
-N and -a switches no longer exist in rdoc 2.5
2010-10-27gemspec: depend on Isolate 3.0.0 for dev
No reason to not use the latest and greatest!
2010-10-08bump kgio dependency
kgio 1.3.1 fixes some cases for zero-length reads.
2010-10-08bump kgio dependency to 1.3.0
There was a backwards-incompatible API change, but that didn't even affect us.
2010-10-07gemspec: bump kgio version
kgio 1.2.1 works around a bug for some *BSDs, some of which are popular platforms for developers.
2010-10-06gemspec: depend on newer isolate
We use the latest and greatest whenever possible.
2010-10-05upgrade to kgio 1.2.0
This provides the kgio_read! method which is like readpartial, only significantly cheaper when a client disconnects on us.
2010-10-05start using kgio, the kinder, gentler I/O library
This should hopefully make the non-blocking accept() situation more tolerable under Ruby 1.9.2.
2010-06-11doc: cleanup rdoc escaping in title, hopefully
2010-06-10README: more aggressively kill unnecessary links
... And make the gemspec do minor un-RDoc-ing