diff options
author | Loïc Hoguin <[email protected]> | 2025-09-18 12:33:10 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2025-09-18 12:33:10 +0200 |
commit | e713a630f384f861fa396048f9c881ca183aeda9 (patch) | |
tree | 7955a4dd6d168f95be14e9242eb7c542d4e3d288 | |
parent | b7b5dc929dd5908e38b1a1df9e9dc4df1e485f2b (diff) | |
download | cowboy-e713a630f384f861fa396048f9c881ca183aeda9.tar.gz cowboy-e713a630f384f861fa396048f9c881ca183aeda9.tar.bz2 cowboy-e713a630f384f861fa396048f9c881ca183aeda9.zip |
-rw-r--r-- | Makefile | 10 | ||||
-rw-r--r-- | README.asciidoc | 4 | ||||
-rw-r--r-- | doc/src/guide/book.asciidoc | 2 | ||||
-rw-r--r-- | doc/src/guide/getting_started.asciidoc | 2 | ||||
-rw-r--r-- | doc/src/guide/migrating_from_2.13.asciidoc | 63 | ||||
-rw-r--r-- | ebin/cowboy.app | 2 | ||||
-rw-r--r-- | rebar.config | 2 |
7 files changed, 75 insertions, 10 deletions
@@ -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]}. |