aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2025-09-18 12:33:10 +0200
committerLoïc Hoguin <[email protected]>2025-09-18 12:33:10 +0200
commite713a630f384f861fa396048f9c881ca183aeda9 (patch)
tree7955a4dd6d168f95be14e9242eb7c542d4e3d288
parentb7b5dc929dd5908e38b1a1df9e9dc4df1e485f2b (diff)
downloadcowboy-e713a630f384f861fa396048f9c881ca183aeda9.tar.gz
cowboy-e713a630f384f861fa396048f9c881ca183aeda9.tar.bz2
cowboy-e713a630f384f861fa396048f9c881ca183aeda9.zip
Cowboy 2.14.0HEAD2.14.0master
-rw-r--r--Makefile10
-rw-r--r--README.asciidoc4
-rw-r--r--doc/src/guide/book.asciidoc2
-rw-r--r--doc/src/guide/getting_started.asciidoc2
-rw-r--r--doc/src/guide/migrating_from_2.13.asciidoc63
-rw-r--r--ebin/cowboy.app2
-rw-r--r--rebar.config2
7 files changed, 75 insertions, 10 deletions
diff --git a/Makefile b/Makefile
index 1ac7f2c..f5d8ca9 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@
PROJECT = cowboy
PROJECT_DESCRIPTION = Small, fast, modern HTTP server.
-PROJECT_VERSION = 2.13.0
+PROJECT_VERSION = 2.14.0
PROJECT_REGISTERED = cowboy_clock
# Options.
@@ -16,7 +16,7 @@ CT_OPTS += -ct_hooks cowboy_ct_hook [] # -boot start_sasl
LOCAL_DEPS = crypto
DEPS = cowlib ranch
-dep_cowlib = git https://github.com/ninenines/cowlib master
+dep_cowlib = git https://github.com/ninenines/cowlib 2.16.0
dep_ranch = git https://github.com/ninenines/ranch 1.8.1
ifeq ($(COWBOY_QUICER),1)
@@ -44,8 +44,8 @@ define HEX_TARBALL_EXTRA_METADATA
#{
licenses => [<<"ISC">>],
links => #{
- <<"User guide">> => <<"https://ninenines.eu/docs/en/cowboy/2.13/guide/">>,
- <<"Function reference">> => <<"https://ninenines.eu/docs/en/cowboy/2.13/manual/">>,
+ <<"User guide">> => <<"https://ninenines.eu/docs/en/cowboy/2.14/guide/">>,
+ <<"Function reference">> => <<"https://ninenines.eu/docs/en/cowboy/2.14/manual/">>,
<<"GitHub">> => <<"https://github.com/ninenines/cowboy">>,
<<"Sponsor">> => <<"https://github.com/sponsors/essen">>
}
@@ -53,7 +53,7 @@ define HEX_TARBALL_EXTRA_METADATA
endef
hex_req_ranch = >= 1.8.0 and < 3.0.0
-hex_req_cowlib = >= 2.14.0 and < 3.0.0
+hex_req_cowlib = >= 2.16.0 and < 3.0.0
# Standard targets.
diff --git a/README.asciidoc b/README.asciidoc
index 5721a7b..fc4fb71 100644
--- a/README.asciidoc
+++ b/README.asciidoc
@@ -18,8 +18,8 @@ Cowboy is *clean* and *well tested* Erlang code.
== Online documentation
-* https://ninenines.eu/docs/en/cowboy/2.13/guide[User guide]
-* https://ninenines.eu/docs/en/cowboy/2.13/manual[Function reference]
+* https://ninenines.eu/docs/en/cowboy/2.14/guide[User guide]
+* https://ninenines.eu/docs/en/cowboy/2.14/manual[Function reference]
== Offline documentation
diff --git a/doc/src/guide/book.asciidoc b/doc/src/guide/book.asciidoc
index 58eda34..2679f99 100644
--- a/doc/src/guide/book.asciidoc
+++ b/doc/src/guide/book.asciidoc
@@ -75,6 +75,8 @@ include::performance.asciidoc[Performance]
= Additional information
+include::migrating_from_2.13.asciidoc[Migrating from Cowboy 2.13 to 2.14]
+
include::migrating_from_2.12.asciidoc[Migrating from Cowboy 2.12 to 2.13]
include::migrating_from_2.11.asciidoc[Migrating from Cowboy 2.11 to 2.12]
diff --git a/doc/src/guide/getting_started.asciidoc b/doc/src/guide/getting_started.asciidoc
index 06677ee..749b1d1 100644
--- a/doc/src/guide/getting_started.asciidoc
+++ b/doc/src/guide/getting_started.asciidoc
@@ -69,7 +69,7 @@ fetch and compile Cowboy, and that we will use releases:
PROJECT = hello_erlang
DEPS = cowboy
-dep_cowboy_commit = 2.13.0
+dep_cowboy_commit = 2.14.0
REL_DEPS = relx
diff --git a/doc/src/guide/migrating_from_2.13.asciidoc b/doc/src/guide/migrating_from_2.13.asciidoc
new file mode 100644
index 0000000..8333eb9
--- /dev/null
+++ b/doc/src/guide/migrating_from_2.13.asciidoc
@@ -0,0 +1,63 @@
+[appendix]
+== Migrating from Cowboy 2.13 to 2.14
+
+Cowboy 2.14 adds experimental support for HTTP/3
+WebTransport based on the most recent draft. It
+also has a new data delivery mechanism for HTTP/2
+and HTTP/3 Websocket, providing better performance.
+
+Cowboy 2.14 requires Erlang/OTP 24.0 or greater.
+
+=== Features added
+
+* The `relay` data delivery mechanism has been
+ added to HTTP/2 and HTTP/3 protocols. Using
+ this mechanism lets the Websocket protocol
+ bypass stream handlers to forward data from
+ the connection process to the Websocket
+ session process, as well as better manage
+ HTTP/2's flow control. This results in a
+ noticeable performance improvement. This
+ new mechanism can be used by all sub-protocols
+ built on top of HTTP/2 or HTTP/3 such as
+ Websocket or the upcoming HTTP/2 WebTransport.
+
+* The `last_modified` callback of REST handlers
+ now accepts `undefined` as a return value to
+ allow conditionally providing a timestamp.
+
+=== Experimental features added
+
+* Experimental support for HTTP/3 WebTransport
+ has been added, based on the most recent RFC
+ drafts. The implementation should also be
+ compatible with earlier drafts that are
+ currently in use by some browsers. Both
+ HTTP/3 and HTTP/3 WebTransport are disabled
+ by default; to enable, the environment
+ variable COWBOY_QUICER must be set at
+ compile-time, and a number of options must
+ be provided at run time, including
+ `enable_connect_protocol`, `h3_datagram`,
+ `wt_max_sessions` and for earlier drafts
+ `enable_webtransport`. The test suite is
+ the best place to get started at this time.
+
+=== Optimisation-related changes
+
+* The `dynamic_buffer` option introduced in
+ the previous release has been tweaked to
+ start at 512 bytes and have its value
+ changed less abruptly. This is based on
+ additional work done implementing the same
+ feature in RabbitMQ.
+
+* The static file handler will now use `raw`
+ mode to read file information to avoid a
+ bottleneck when querying the file server.
+
+=== Bugs fixed
+
+* It was possible for Websocket to fail to
+ enable active mode again after it had been
+ disabled. This has been fixed.
diff --git a/ebin/cowboy.app b/ebin/cowboy.app
index 39be200..b797517 100644
--- a/ebin/cowboy.app
+++ b/ebin/cowboy.app
@@ -1,6 +1,6 @@
{application, 'cowboy', [
{description, "Small, fast, modern HTTP server."},
- {vsn, "2.13.0"},
+ {vsn, "2.14.0"},
{modules, ['cowboy','cowboy_app','cowboy_bstr','cowboy_children','cowboy_clear','cowboy_clock','cowboy_compress_h','cowboy_constraints','cowboy_decompress_h','cowboy_handler','cowboy_http','cowboy_http2','cowboy_http3','cowboy_loop','cowboy_metrics_h','cowboy_middleware','cowboy_quicer','cowboy_req','cowboy_rest','cowboy_router','cowboy_static','cowboy_stream','cowboy_stream_h','cowboy_sub_protocol','cowboy_sup','cowboy_tls','cowboy_tracer_h','cowboy_websocket','cowboy_webtransport']},
{registered, [cowboy_sup,cowboy_clock]},
{applications, [kernel,stdlib,crypto,cowlib,ranch]},
diff --git a/rebar.config b/rebar.config
index 146f88f..22040c9 100644
--- a/rebar.config
+++ b/rebar.config
@@ -1,4 +1,4 @@
{deps, [
-{cowlib,".*",{git,"https://github.com/ninenines/cowlib",{branch,"master"}}},{ranch,".*",{git,"https://github.com/ninenines/ranch",{tag,"1.8.1"}}}
+{cowlib,".*",{git,"https://github.com/ninenines/cowlib",{tag,"2.16.0"}}},{ranch,".*",{git,"https://github.com/ninenines/ranch",{tag,"1.8.1"}}}
]}.
{erl_opts, [debug_info,warn_export_vars,warn_shadow_vars,warn_obsolete_guard,warn_missing_spec,warn_untyped_record]}.