+++
date = "2017-01-03T00:00:00+01:00"
title = "Cowboy 2.0 pre-release 4"

+++

Cowboy `2.0.0-pre.4` has been released!

This is the new recommended version of Cowboy.
While I would not recommend putting it in production
just yet, I do recommend you start writing new
applications with this Cowboy version.

The most significant changes in the pre-release are:

* A new architecture: there now is one process per
  connection and one process per request. This was
  done because HTTP/2 allows running requests concurrently.

* Stream handlers. Every request, response and data goes
  through stream handlers. They are meant to replace hooks
  and more. They will be documented in a future pre-release.
  Check `cowboy_stream` and `cowboy_stream_h` if interested.

* Numerous changes to the `cowboy_req` interface. This
  is very close to final. Check the manual for what changed.

* The Req object is no longer passed in Websocket callbacks.

* It is now possible to send frames directly from `websocket_init/1`.

* SPDY support was removed, now that we have HTTP/2.

* Update Ranch to 1.3. We still depend on Cowlib master
  for the time being.

* A much improved manual.

The manual received a lot of love. It now has one page per
function with a detailed description, arguments list, return
value, changelog and examples. It also links to the other
relevant manual pages: https://ninenines.eu/docs/en/cowboy/2.0/manual/

I am quite proud of the manual right now. While more
improvements can be made, what we have now is way better
than before. Feedback for further improvements is welcome!

This is a significant step toward Cowboy 2.0. Almost all
the breaking changes are in. A few more pre-releases are
planned and will be released on a weekly basis (with exceptions).

Cowboy is now tested and supported with Erlang/OTP 18.0 or above
on Arch Linux, FreeBSD, OSX, Ubuntu and Windows 7. Contact me
if you can provide permanent access to another platform for the
purposes of testing.

Cowboy is now available from four locations:

* https://git.ninenines.eu/cowboy.git
* https://github.com/ninenines/cowboy.git
* https://bitbucket.org/ninenines/cowboy.git
* https://gitlab.com/ninenines/cowboy.git

They are updated at the same time so there is no real difference.

Cowboy 2.0 will be released once all the breaking changes
are completed and the temporarily removed features are
added back.

Thanks for your patience. I know it took a long time.

++++
<hr/>
++++

Half-price on all donations because I need a new hat:

++++
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline">
<input type="hidden" name="cmd" value="_donations">
<input type="hidden" name="business" value="essen@ninenines.eu">
<input type="hidden" name="lc" value="FR">
<input type="hidden" name="item_name" value="Loic Hoguin">
<input type="hidden" name="item_number" value="99s">
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="bn" value="PP-DonationsBF:btn_donate_LG.gif:NonHosted">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
</form>
++++
