[erlang-questions] [ANN] Cowboy 0.2.0 - HTTP server and acceptor pool
Mon Sep 5 18:11:07 CEST 2011
On Sep 5, 2011, at 5:11 PM, Loïc Hoguin wrote:
> Hello guys.
> I would like to formally announce Cowboy here today with the first
> tagged version: 0.2.0. This is a stable build of a development HTTP
> server and pool acceptor. It is released under the ISC license, which is
> a BSD license with deprecated clauses removed.
> Cowboy cuts network communication into three parts: transport (tcp,
> ssl), protocol (http, ftp...) and application handlers for handling and
> responding to client requests. It comes with an acceptor pool that takes
> transport and protocol modules and use them to listen, accept and
> process requests. Each listener come with its own supervision tree that
> can be started and stopped independently.
> The current features include:
> * TCP and SSL transport handlers
> * HTTP protocol handler
> * Optional dispatcher for HTTP requests
> * WebSocket support (all recent browsers supported)
> * Cookie support (adapted from mochiweb by Tom Burdick)
> * OTP-like handler API for HTTP: init/3, handle/2, terminate/2
> * And for WebSocket: websocket_init/3, websocket_handle/3,
> * EUnit, common_test and PropEr tests
> * No dialyzer warnings! http://dialyzer.softlab.ntua.gr/nowarn/cowboy/
> Cowboy also uses binaries instead of lists, largely reducing memory
> usage. It also only uses one process per request a la gen_server,
> catching and outputting a stacktrace when errors occur.
> Note that WebSocket is still a draft and that changes still occur in its
> specifications. Browsers do not fully implement the specs either, so we
> are just aiming for supporting browsers for now.
> While this release is fairly stable, keep in mind that Cowboy is still a
> work in progress and that its features and API may change at some point.
> Me and others are already using it in production however.
> Future developments include:
> * FastCGI support (Anthony Ramine)
> * Sendfile support (Magnus Klaar)
> * Webmachine-like REST handler
> * Multipart support for file upload and compression (Anthony Ramine)
> * Allow reloading a listener's options without restarting it
> * More PropEr tests!
> Finally, I'll be setting up a benchmarking environment of 4 servers to
> properly test performance improvements and make sure unrelated changes
> don't have a negative impact on performance. This should happen in the
> next few weeks and it will have a public URL. We might also setup the
> tests for other servers including C ones later on.
> If you are interested in helping out, using it or have questions I'm
> available by email, on the issues tracker on github or on IRC on
> #erlounge or #erlang.
> Thanks for reading.
More information about the erlang-questions