From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.0 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 40D582018E; Fri, 5 Aug 2016 07:44:59 +0000 (UTC) Date: Fri, 5 Aug 2016 07:44:59 +0000 From: Eric Wong To: ruby-talk@ruby-lang.org Cc: yahns-public@yhbt.net Subject: [ANN] yahns 1.13.0 -_- sleepy app server for Ruby Message-ID: <20160805-yahns-1.13.0-released@lucky13> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline List-Id: A Free Software, multi-threaded, non-blocking network application server designed for low _idle_ power consumption. It is primarily optimized for applications with occasional users which see little or no traffic. yahns currently hosts Rack/HTTP applications, but may eventually support other application types. Unlike some existing servers, yahns is extremely sensitive to fatal bugs in the applications it hosts. * git clone git://yhbt.net/yahns * https://yahns.yhbt.net/README * https://yahns.yhbt.net/NEWS.atom.xml * we only accept plain-text email yahns-public@yhbt.net * and archive all the mail we receive: https://yhbt.net/yahns-public/ * nntp://news.public-inbox.org/inbox.comp.lang.ruby.yahns lrg nabgure ubeevoyl-anzrq freire :> Changes: yahns 1.13.0 - some user-visible improvements... And probably a billion new regressions! yahns now allows users to skip the Rack::Head, Rack::Chunked and Rack::ContentLength middlewares to ease migrating from/to other real-world Rack HTTP servers. Most notably, our chunked encoding implementation is a bit faster than Rack::Chunked by taking advantage of the writev(2) syscall: https://yhbt.net/yahns-public/20160803031906.14553-4-e@80x24.org/ There's also rack 2.x fixes in the test case and extras/ section (these incompatibilities did not affect existing users unless they use the wonky extras/ section). There's also some graceful shutdown fixes, the process title is now changed to display the number of live FDs. Of course, there's the usual round of documentation improvements which are systemd and OpenSSL setup-related this time around. However, the majority of changes (proxy_*, wbuf_lite), affect currently-unadvertised functionality which is subject to removal or incompatible config changes. However, they are used to serve our mailing list archives at: https://yhbt.net/yahns-public/ 49 changes since yahns 1.12.5: proxy_pass: simplify writing request bodies upstream proxy_pass: hoist out proxy_res_headers method proxy_pass: simplify proxy_http_response proxy_pass: split out body and trailer reading in response proxy_pass: trim down proxy_response_finish, too proxy_pass: split out req_res into a separate file proxy_pass: fix resumes after complete buffering is unblocked proxy_pass: X-Forwarded-For appends to existing list proxy_pass: pass entire object to proxy_http_response proxy_pass: support "proxy_buffering: false" proxy_pass: remove unnecessary rescue req_res: store proxy_pass object here, instead proxy_pass: redo "proxy_buffering: false" wbuf: remove needless "busy" parameter Merge branch 'maint' extras/try_gzip_static: do not show backtrace on syscall errors wbuf: remove tmpdir parameter wbuf_lite: fix write retries for OpenSSL sockets test_proxy_pass_no_buffering: fix racy test queue_*: check for closed IO objects cleanup graceful shutdown handling proxy_pass: more descriptive error messages proxy_pass: fix HTTP/1.0 backends on EOF w/o buffering wbuf_common: reset offset counter when done extras/try_gzip_static: resolve symlinks test_ssl: remove unnecessary priv_key DH parameter openssl_client: wrap shutdown for graceful termination proxy_pass: keep trailer buffer on blocked client writes proxy_pass: avoid TOCTTOU race when unbuffering, too proxy_pass: avoid accessing logger in env after hijacking proxy_pass: avoid stuck responses in "proxy_buffering: false" extras: include status messages in responses update init and add systemd examples test_proxy_pass_no_buffering: exclude rb/ru files, too wbuf_lite: use StringIO instead of TmpIO wbuf_lite: truncate StringIO when done wbuf_lite: prevent clobbering responses wbuf_lite: unify EOF error handling wbuf_lite: reset sf_offset/sf_count consistently wbuf_lite: clear @busy flag when re-arming http_response: drop bodies for non-compliant responses fix rack 2.x compatibility bugs doc: add session cache usage to OpenSSL example test: skip some buffering tests on non-default values response: drop clients after HTTP responses of unknown length response: reduce stack overhead for parameter passing response: support auto-chunking for HTTP/1.1 Revert "document Rack::Chunked/ContentLength semi-requirements" extras/exec_cgi: fix for HTTPoxy vulnerability Please note the disclaimer: yahns is extremely sensitive to fatal bugs in the apps it hosts. There is no (and never will be) any built-in "watchdog"-type feature to kill stuck processes/threads. Each yahns process may be handling thousands of clients; unexpectedly killing the process will abort _all_ of those connections. Lives may be lost! yahns hackers are not responsible for your application/library bugs. Use an application server which is tolerant of buggy applications if you cannot be bothered to fix all your fatal bugs. -- EW