From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-2.9 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00 shortcircuit=no autolearn=unavailable version=3.3.2 X-Original-To: yahns-public@yhbt.net Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 4B79020102; Sun, 1 Nov 2015 09:20:53 +0000 (UTC) Date: Sun, 1 Nov 2015 09:20:53 +0000 From: Eric Wong To: yahns-public@yhbt.net Subject: yahns vs unicorn, part 1: overview Message-ID: <20151101092053.GA5328@dcvr.yhbt.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20151101-yahns-vs-unicorn-p@rt1> List-Id: yahns and unicorns are complete opposites in terms of design. Unfortunately, comparisons between yahns and unicorn may be inevitable since they are implemented and maintained by the same BDFL, and even share the common HTTP parser and some code. unicorn was only introduced in 2009, with a design which would have been considered obsolete in 1999. But even in 2015, implementations (even non-Ruby ones) based on one-shot epoll/kqueue notifications like yahns are barely used and can probably be counted on one hand. Overview of differences: * blocking vs non-blocking accept (yahns does the former(!)) * blocking vs non-blocking read/write * "timeout" configurator directive can only be supported in unicorn * slow vs fast client handling * thread-safety, async-signal safety More to come...