+++
date = "2019-10-16T07:00:00+01:00"
title = "Cowboy 2.7"

+++

Cowboy `2.7.0` has been released!

Cowboy 2.7 improves the HTTP/2 code with optimizations
around the sending of DATA and WINDOW_UPDATE frames;
graceful shutdown of the connection when the client is
going away; and rate limiting mechanisms. New options
and mechanisms have also been added to control the
amount of memory Cowboy ends up using with both HTTP/1.1
and HTTP/2. Much of this work was done to address
HTTP/2 CVEs about potential denial of service.

In addition, many of the experimental features introduced
in previous releases have been marked stable and are now
documented. These include the commands-based Websocket
handler interface; the metrics and tracer stream handlers;
and the ability to change options on a per-stream basis
(for example idle timeouts).

This is the first Cowboy version that is compatible with
the upcoming Ranch 2.0. Cowboy 2.7 will use Ranch 1.7.1
by default.

Cowboy 2.7 requires Erlang/OTP 20 or above and is tested
and supported on Linux, FreeBSD, macOS and Windows.

A complete
list of changes can be found in the migration guide:
https://ninenines.eu/docs/en/cowboy/2.7/guide/migrating_from_2.6/[Migrating from Cowboy 2.6 to 2.7].

I have more free time available for consulting or for
paid open source development at the moment. If you
are interested, drop me an email at mailto:contact@ninenines.eu[contact@ninenines.eu].
I have gathered that there's interest in a pure Erlang GRPC
implementation, and there's also QUIC and HTTP/3 that will
be ready soon, for examples of projects I'd be interested in
working on.

You can donate to this project via
https://salt.bountysource.com/teams/ninenines[BountySource].
These funds are used to pay for additional servers for
testing.

As usual, feedback is appreciated, and issues or
questions should be sent via Github tickets. Thanks!
