summaryrefslogtreecommitdiffstats
path: root/_build/content/articles/gun-2.0.0-rc.1.asciidoc
blob: 3d99038f7f9ec3586d3995b466e95aa5f7b85fc5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
+++
date = "2020-11-19T07:00:00+01:00"
title = "Gun 2.0 release candidate 1"

+++

Gun `2.0.0-rc.1` has been released!

Gun 2.0 adds a ton of features along with a small number
of breaking changes.

Gun 2.0 includes state of the art tunnel support. With
Gun 2.0 it is possible to make requests or data go through
any number of proxy endpoints using any combination of
TCP or TLS transports and HTTP/1.1, HTTP/2 or SOCKS5
protocols. All combinations of the scenario Proxy1 ->
Proxy2 -> Origin are tested and known to work.

You can watch a demo of the tunnel support below. This
video is the first of its kind. If you like it, or you
don't like it, please tell me! I intend to continue
producing those on a semi-regular basis. Watch:

++++
<video src="/res/gun2_unlimited_proxy_demo.webm" controls
    width="640" height="360">
</video>
++++

Gun 2.0 can now be used to send and receive raw data,
as if it was just a normal socket. This can be
useful when needing to connect through a number
of HTTP/SOCKS5 proxies, allowing the use of Gun's
great proxying capabilities for non-Web protocols.
This can also be useful when performing HTTP/1.1
Upgrade to custom protocols.

Gun 2.0 adds many more features such as Websocket over
HTTP/2, a built-in cookie store, graceful shutdown, flow
control for data messages, event handlers and more.

Gun 2.0 greatly improves the HTTP/2 performance when it
comes to receiving large response bodies; and when receiving
response bodies from many separate requests concurrently.

Gun now shares much of its HTTP/2 code with Cowboy,
including the HTTP/2 state machine. Numerous issues were
fixed as a result because the Cowboy implementation was
much more advanced.

The Gun connection process is now implemented using `gen_statem`.

Gun 2.0 requires Erlang/OTP 22.0 or greater 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/gun/2.0/guide/migrating_from_1.3/[Migrating from Gun 1.3 to 2.0].

At the time of writing my next big task will be implementing
HTTP/3 and QUIC. In order to maximize the time I spend on
this task I am looking for funds. You can use the sponsors
link below or contact me with offers at
mailto:[email protected][[email protected]]. I am open
to any and all suggestions.

You can donate to this project via
https://github.com/sponsors/essen[GitHub Sponsors].

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