# 0.0.2 / 2013-11-06 yahns 0.0.2 - barely working! Lots of bugfixes and tweaks, but everything appears to mostly work for Rack and HTTP. We are self-hosting our site: http://yahns.yhbt.net/README (And if you can't access it, I screwed something up!) There is a yahns-rackup(1) wrapper for quick-starting Rack applications without having to read any documentation, as it works exactly like rackup(1) (just leave "-s/--server" out) New manpages: yahns(1), yahns_config(5), yahns-rackup(1) Eric Wong (110): test/helper: correctly handle exit code in test runner log: workaround atomicity issues for stdio vs non-stdio descriptors tests: improve output to show RUBY_DESCRIPTION and full path tests: support disabling parallelization env test_output_buffering: workaround a rbx bug socket_helper: do not log sizes on rbx for now config: do not set cloexec on stdout/stderr test_wbuf: avoid floating point arg to read_nonblock rework shutdown for systems w/o rb_thread_fd_close SIGUSR2 uses fork + exec again instead of Process.spawn wip for EADDRINUSE failure test_bin: shutdown socket when not inheriting README: update with support status for MRI/RBX server: skip killing acceptors on rbx for now server (cleanup): avoid interning word for log message server: abort loudly if we have old threads running reinstate retry delay for binding new listeners test/helper: Dir.mktmpdir works without blocks rework acceptor thread shutdown (again) server (minor cleanup): use Symbol#to_proc test_server: remove skipped multi-process balance test tests: do not lose exceptions on quit timeouts tests: enforce close_on_exec on all client sockets server: switch abort to raise on BUG config: implement atfork handlers test/server_helper: fix undefined variable favor client timeout if lower than desperate timeout tests: enable checks for desperate client expiry implement + test Expect: 100-continue handling quitter: save one syscall and implement for non-eventfd enforce FD_CLOEXEC on all pipes, including tests test_expect_100: cleanup unused var http_client: reduce the size of the yahns_step method output_buffering handles odd EAGAIN cases fix output buffer corner-case for static files tests: increase mkserver use to reduce LoC fix SIGCHLD w/o workers + PID file renames test_client_expire: disable output buffering in test StreamFile and TmpIO attempt expiry on EMFILE/ENFILE server: avoid metaclass for acceptors support SO_REUSEPORT on new listeners (:reuseport) doc: ignore RDoc for all internal classes rack: leave RACK_ENV unset by us associate private/anonymous queues correctly queue_epoll: remove check for closed descriptor config: disallow defining new, named queues inside app doc: preliminary manpages for yahns(1), yahns_config(5) config: comment for atfork_* hook definitions implement user switching configurator: validate :reuseport for boolean-ess config: working_directory is only called at top-level server: fix out-of-date comment regarding bind/pid order config: reject negative float for client_expire_ratio lower client_body_buffer_size to 8K (from 114K) implement client_timeout for streaming inputs gem: install manpages in the RubyGems package stream_input: use thread-local rbuf to avoid some garbage test output_buffering with hijacked responses test_input: close client when we're done with it allow multiple blocking threads per listen socket acceptor: account for inheriting dead descriptors server: fix incorrect receiver of method call socket_helper: account for undefined options test for binding Unix stream sockets Rack hijack issues EPOLL_CTL_DEL config: raise ArgumentError for consistency tests for SIGTTIN and SIGTTOU use Hash#each instead of Hash#each_pair add test for working_directory config parameter test_unix_socket: remember to close IO when done test for overriding rack.errors destination test_server: improve working_directory test robustness fdmap: prevent possible/theoretical race implement shutdown_timeout and expiry on graceful shutdown doc: fix client_timeout documentation in yahns_config implement before_exec hook comment to explain YAHNS_FD env remove "worker_" prefix from atfork hooks remove arity enforcement for atfork_* hooks allow atfork_* hooks inside app blocks for ease-of-management doc: disambiguate threads: option for listen directive yahns-rackup launcher enable client expiry for non-TCP sockets config: allow Float for timeouts tests: more intelligent waiting for output buffering doc: add HACKING/INSTALL docs + minitest dependency wbuf: bypass buffering if buffers are caught up wbuf: reset FS (sendfile) buffer if caught up wbuf: only enable bypass if we've truncated input and output buffers support tmpdir: arguments tests: further speed up output buffering test test trysendfile usage with UNIX sockets client_expire_generic: drop kgio_write wrapper remove unnecessary map(&:to_s) before Array#join account for truncated/expanded static files http: do not drop Content-Range from response headers worker-less server should not waitpid indiscriminately stream_file: only close FDs we opened ourselves tests: smaller buffer for big header test add extras for exec_cgi and try_gzip_static http_response: fix app-controlled close + test examples: flesh out the example configs a bit README: add disclaimer server: improve shutdown messages extras: add README extras: add autoindex module extras: add proxy_pass Rack app rackup_handler: fix ordering of working_directory worker: avoid double SIGQUIT on unexpected parent death server: log error instead of raising for leftover socks # 0.0.1 / 2013-10-20 yahns 0.0.1 - many small fixes and test coverage Just a bunch of improvements found while running tests. It's still incomplete and missing a bunch of features from existing servers, but maybe it works... Clone git://yhbt.net/yahns.git for full details Eric Wong (18): test/helper: fix __covmerge race for forked processes wire up client_max_body_size limits fix and test Rack hijack support SIGUSR2 handling uses Process.spawn + tests fix USR1 log reopening when using worker_processes test_bin: add additional tests for SIGHUP test_server: skip test_mp_balance for now test/server_helper: dump entire log on errors ensure we stop all threads at exit GNUmakefile: avoid calling exit in test-mt test_bin: set close-on-exec for Ruby 1.9.3 compatibility test_server: bigger delays for graceful shutdown test tests: disable $-w on 1.9.3 to quiet down warnings test/helper: prevent minitest at_exit from running in children recheck IO#closed? on thread pools after a short delay test_config: isolate directories with logs test_reopen_logs: workaround timing problem with worker_processes set close-on-exec on all long-lived descriptors # 0.0.0 / 2013-10-18 yahns 0.0.0 - hopefully fix installation problems Installing prrerelease versions are strange on RubyGems. Anyways, new project, no risk of breakage, so maybe this works better... # COPYRIGHT Copyright (C) 2013, Eric Wong and all contributors License: GPLv3 or later (http://www.gnu.org/licenses/gpl-3.0.txt)