summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2026-05-12 17:41:05 +0200
committerLoïc Hoguin <[email protected]>2026-05-12 17:41:05 +0200
commitff5dee6af5eb49e784d1a053d583f5c848bcd8ca (patch)
treee919132797aee06cec6a873776091ebf9812ce47
parentc0ff63c6d9fc116c8ee7bfb5fe1b73894a4f8e22 (diff)
downloadninenines.eu-master.tar.gz
ninenines.eu-master.tar.bz2
ninenines.eu-master.zip
Announce Cowboy 2.15, Gun 2.3, Cowlib 2.16.1HEADmaster
-rw-r--r--_build/content/articles/cowboy-2.15.0.asciidoc31
-rw-r--r--_build/data/projects/cowboy.toml2
-rw-r--r--articles/asciideck/index.html4
-rw-r--r--articles/cowboy-2.0.0-pre.4/index.html4
-rw-r--r--articles/cowboy-2.0.0-rc.1/index.html4
-rw-r--r--articles/cowboy-2.0.0-rc.2/index.html4
-rw-r--r--articles/cowboy-2.0.0/index.html4
-rw-r--r--articles/cowboy-2.1.0/index.html4
-rw-r--r--articles/cowboy-2.11.0/index.html4
-rw-r--r--articles/cowboy-2.12.0/index.html4
-rw-r--r--articles/cowboy-2.13.0-performance/index.html4
-rw-r--r--articles/cowboy-2.13.0/index.html4
-rw-r--r--articles/cowboy-2.14.0/index.html4
-rw-r--r--articles/cowboy-2.15.0/index.html383
-rw-r--r--articles/cowboy-2.2.0/index.html4
-rw-r--r--articles/cowboy-2.3.0/index.html4
-rw-r--r--articles/cowboy-2.4.0/index.html4
-rw-r--r--articles/cowboy-2.5.0/index.html4
-rw-r--r--articles/cowboy-2.6.0/index.html4
-rw-r--r--articles/cowboy-2.7.0/index.html4
-rw-r--r--articles/cowboy-2.8.0/index.html4
-rw-r--r--articles/cowboy-2.9.0/index.html4
-rw-r--r--articles/cowboy2-qs/index.html4
-rw-r--r--articles/discord-server/index.html4
-rw-r--r--articles/dont-let-it-crash/index.html4
-rw-r--r--articles/erlang-meetup-10-septembre-2019/index.html4
-rw-r--r--articles/erlang-scalability/index.html4
-rw-r--r--articles/erlang-validate-utf8/index.html4
-rw-r--r--articles/erlang.mk-and-relx/index.html4
-rw-r--r--articles/erlanger-playbook-september-2015-update/index.html4
-rw-r--r--articles/erlanger-playbook/index.html4
-rw-r--r--articles/farwest-funded/index.html4
-rw-r--r--articles/github-sponsors/index.html4
-rw-r--r--articles/gun-1.0.0-rc.1/index.html4
-rw-r--r--articles/gun-1.0.0/index.html4
-rw-r--r--articles/gun-1.2.0/index.html4
-rw-r--r--articles/gun-1.3.0/index.html4
-rw-r--r--articles/gun-2.0.0-pre.1/index.html4
-rw-r--r--articles/gun-2.0.0-pre.2/index.html4
-rw-r--r--articles/gun-2.0.0-rc.1/index.html4
-rw-r--r--articles/gun-2.0.0/index.html4
-rw-r--r--articles/gun-2.2.0/index.html4
-rw-r--r--articles/index.html35
-rw-r--r--articles/index.xml13
-rw-r--r--articles/january-2014-status/index.html4
-rw-r--r--articles/joe_the_rubber_duck/index.html4
-rw-r--r--articles/merry-christmas-2018/index.html4
-rw-r--r--articles/merry-christmas-2019/index.html4
-rw-r--r--articles/ml-archives/index.html4
-rw-r--r--articles/on-open-source/index.html4
-rw-r--r--articles/otp-26/index.html4
-rw-r--r--articles/page/2/index.html36
-rw-r--r--articles/page/3/index.html37
-rw-r--r--articles/page/4/index.html18
-rw-r--r--articles/ranch-1.3/index.html4
-rw-r--r--articles/ranch-1.6.0/index.html4
-rw-r--r--articles/ranch-1.7.0/index.html4
-rw-r--r--articles/ranch-2.0.0-rc.1/index.html4
-rw-r--r--articles/ranch-2.0.0/index.html4
-rw-r--r--articles/ranch-2.1.0/index.html4
-rw-r--r--articles/ranch-2.2.0/index.html4
-rw-r--r--articles/ranch-ftp/index.html4
-rw-r--r--articles/the-elephant-in-the-room/index.html4
-rw-r--r--articles/the-gateway-trilogy/index.html4
-rw-r--r--articles/the-story-so-far/index.html4
-rw-r--r--articles/tictactoe/index.html4
-rw-r--r--articles/website-update/index.html4
-rw-r--r--articles/xerl-0.1-empty-modules/index.html4
-rw-r--r--articles/xerl-0.2-two-modules/index.html4
-rw-r--r--articles/xerl-0.3-atomic-expressions/index.html4
-rw-r--r--articles/xerl-0.4-expression-separator/index.html4
-rw-r--r--articles/xerl-0.5-intermediate-module/index.html4
-rw-r--r--docs/en/cowboy/2.15/guide/index.html2
-rw-r--r--docs/index.xml2
-rw-r--r--donate/index.html2
-rw-r--r--erlanger-playbook/index.html2
-rw-r--r--index.html2
-rw-r--r--index.xml13
-rw-r--r--services/index.html2
-rw-r--r--sitemap.xml7
80 files changed, 783 insertions, 60 deletions
diff --git a/_build/content/articles/cowboy-2.15.0.asciidoc b/_build/content/articles/cowboy-2.15.0.asciidoc
new file mode 100644
index 00000000..04af5c78
--- /dev/null
+++ b/_build/content/articles/cowboy-2.15.0.asciidoc
@@ -0,0 +1,31 @@
++++
+date = "2026-05-12T07:00:00+01:00"
+title = "Cowboy 2.15, Gun 2.3, Cowlib 2.16.1"
+
++++
+
+Cowboy `2.15.0` has been released! Gun `2.3.0`
+has also been released! And finally so has
+Cowlib `2.16.1`.
+
+They address a number of security vulnerabilities
+so all users are encouraged to upgrade.
+
+Expect a few more security oriented releases in the
+near future (or minors with security fixes or
+harnesses). They will be meant to address increased
+threats from AI agents usage. I will have a post
+explaining the strategy in a few days.
+
+Please refer to the relevant migration guides for
+a more complete list of changes: either
+https://ninenines.eu/docs/en/cowboy/2.15/guide/migrating_from_2.14/[Cowboy] and
+https://ninenines.eu/docs/en/gun/2.3/guide/migrating_from_2.2/[Gun].
+
+You can donate to these projects via
+https://github.com/sponsors/essen[GitHub Sponsors].
+
+As usual, feedback is appreciated, and issues or
+questions should be sent via Github tickets or
+discussions. We also have a Discord server.
+https://discord.gg/x25nNq2fFE[Join Erlang OSS Discord now!]
diff --git a/_build/data/projects/cowboy.toml b/_build/data/projects/cowboy.toml
index ba43545b..f3068a98 100644
--- a/_build/data/projects/cowboy.toml
+++ b/_build/data/projects/cowboy.toml
@@ -4,7 +4,7 @@ description = "Cowboy is the ultimate server for the modern Web with support for
name = "cowboy"
repository = "https://github.com/ninenines/cowboy"
versions = ["2.15", "2.14", "2.13", "2.12", "2.11", "2.10", "2.9", "2.8", "2.7", "2.6"]
-branches = ["2.15.0", "2.14.2", "2.13.0", "2.12.0", "2.11.0", "22adc4de517bf54661795f6e18b6b2e62aec4140", "2.9.0", "2.8.0", "2.7.0", "2.6.3"]
+branches = ["5bc909b", "2.14.2", "2.13.0", "2.12.0", "2.11.0", "22adc4de517bf54661795f6e18b6b2e62aec4140", "2.9.0", "2.8.0", "2.7.0", "2.6.3"]
has_source = true
has_guide = true
has_manual = true
diff --git a/articles/asciideck/index.html b/articles/asciideck/index.html
index cd64c41a..18094e20 100644
--- a/articles/asciideck/index.html
+++ b/articles/asciideck/index.html
@@ -109,6 +109,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.0.0-pre.4/index.html b/articles/cowboy-2.0.0-pre.4/index.html
index d004dcad..a4190fba 100644
--- a/articles/cowboy-2.0.0-pre.4/index.html
+++ b/articles/cowboy-2.0.0-pre.4/index.html
@@ -128,6 +128,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.0.0-rc.1/index.html b/articles/cowboy-2.0.0-rc.1/index.html
index 3ebdf2c3..054b1543 100644
--- a/articles/cowboy-2.0.0-rc.1/index.html
+++ b/articles/cowboy-2.0.0-rc.1/index.html
@@ -99,6 +99,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.0.0-rc.2/index.html b/articles/cowboy-2.0.0-rc.2/index.html
index 24dc8dc5..7ee7a3bb 100644
--- a/articles/cowboy-2.0.0-rc.2/index.html
+++ b/articles/cowboy-2.0.0-rc.2/index.html
@@ -92,6 +92,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.0.0/index.html b/articles/cowboy-2.0.0/index.html
index b9570b28..f1c33a6d 100644
--- a/articles/cowboy-2.0.0/index.html
+++ b/articles/cowboy-2.0.0/index.html
@@ -98,6 +98,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.1.0/index.html b/articles/cowboy-2.1.0/index.html
index bfe913f2..44f44d77 100644
--- a/articles/cowboy-2.1.0/index.html
+++ b/articles/cowboy-2.1.0/index.html
@@ -95,6 +95,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.11.0/index.html b/articles/cowboy-2.11.0/index.html
index 1d52aac4..d503c6d9 100644
--- a/articles/cowboy-2.11.0/index.html
+++ b/articles/cowboy-2.11.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.12.0/index.html b/articles/cowboy-2.12.0/index.html
index a7773661..cd3b1264 100644
--- a/articles/cowboy-2.12.0/index.html
+++ b/articles/cowboy-2.12.0/index.html
@@ -89,6 +89,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.13.0-performance/index.html b/articles/cowboy-2.13.0-performance/index.html
index a8f4b9b5..7d1bbfc7 100644
--- a/articles/cowboy-2.13.0-performance/index.html
+++ b/articles/cowboy-2.13.0-performance/index.html
@@ -103,6 +103,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.13.0/index.html b/articles/cowboy-2.13.0/index.html
index 9c3fbeac..99c311d6 100644
--- a/articles/cowboy-2.13.0/index.html
+++ b/articles/cowboy-2.13.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.14.0/index.html b/articles/cowboy-2.14.0/index.html
index bbc7e298..42a40453 100644
--- a/articles/cowboy-2.14.0/index.html
+++ b/articles/cowboy-2.14.0/index.html
@@ -86,6 +86,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.15.0/index.html b/articles/cowboy-2.15.0/index.html
new file mode 100644
index 00000000..0093ff90
--- /dev/null
+++ b/articles/cowboy-2.15.0/index.html
@@ -0,0 +1,383 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="">
+ <meta name="author" content="Loïc Hoguin based on a design from (Soft10) Pol Cámara">
+
+ <title>Nine Nines: Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</title>
+
+ <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
+ <link href="/css/99s.css?r=7" rel="stylesheet">
+
+ <link rel="shortcut icon" href="/img/ico/favicon.ico">
+ <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
+ <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png">
+ <link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png">
+
+ </head>
+
+
+<body class="">
+ <header id="page-head">
+ <div id="topbar" class="container">
+ <div class="row">
+ <div class="span2">
+ <h1 id="logo"><a href="/" title="99s">99s</a></h1>
+ </div>
+ <div class="span10">
+
+ <div id="side-header">
+ <nav>
+ <ul>
+ <li class="active"><a title="Hear my thoughts" href="/articles">Articles</a></li>
+ <li><a title="Watch my talks" href="/talks">Talks</a></li>
+ <li><a title="Read the docs" href="/docs">Documentation</a></li>
+ <li><a title="Request my services" href="/services">Consulting & Training</a></li>
+ </ul>
+ </nav>
+ <ul id="social">
+ <li>
+ <a href="https://github.com/ninenines" title="Check my Github repositories"><img src="/img/ico_github.png" data-hover="/img/ico_github_alt.png" alt="Github"></a>
+ </li>
+ <li>
+ <a title="Contact me" href="mailto:[email protected]"><img src="/img/ico_mail.png" data-hover="/img/ico_mail_alt.png"></a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+</header>
+
+<div id="contents">
+<div class="container">
+<div class="row">
+<div class="span9 maincol">
+
+<article class="blog_item">
+<header>
+ <h1 class="lined-header"><span>Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</span></h1>
+ <p class="date">
+ <span class="year">2026</span>
+ <span class="day-month">12 May</span>
+ </p>
+</header>
+
+<p>Cowboy <code>2.15.0</code> has been released! Gun <code>2.3.0</code> has also been released! And finally so has Cowlib <code>2.16.1</code>.</p>
+<p>They address a number of security vulnerabilities so all users are encouraged to upgrade.</p>
+<p>Expect a few more security oriented releases in the near future (or minors with security fixes or harnesses). They will be meant to address increased threats from AI agents usage. I will have a post explaining the strategy in a few days.</p>
+<p>Please refer to the relevant migration guides for a more complete list of changes: either <a href="https://ninenines.eu/docs/en/cowboy/2.15/guide/migrating_from_2.14/">Cowboy</a> and <a href="https://ninenines.eu/docs/en/gun/2.3/guide/migrating_from_2.2/">Gun</a>.</p>
+<p>You can donate to these projects via <a href="https://github.com/sponsors/essen">GitHub Sponsors</a>.</p>
+<p>As usual, feedback is appreciated, and issues or questions should be sent via Github tickets or discussions. We also have a Discord server. <a href="https://discord.gg/x25nNq2fFE">Join Erlang OSS Discord now!</a></p>
+
+
+</article>
+</div>
+
+<div class="span3 sidecol">
+<h3>More articles</h3>
+<ul id="articles-nav" class="extra_margin">
+
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0-performance/">Performance improvements in Cowboy 2.13</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/discord-server/">Erlang OSS Discord server</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.12.0/">Cowboy 2.12</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.11.0/">Cowboy 2.11</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/otp-26/">Erlang/OTP 26</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0/">Gun 2.0</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-2.1.0/">Ranch 2.1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.9.0/">Cowboy 2.9</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-rc.1/">Gun 2.0 release candidate 1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-2.0.0/">Ranch 2.0</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.8.0/">Cowboy 2.8</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/the-gateway-trilogy/">The Gateway Trilogy</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.2/">Gun 2.0 pre-release 2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/merry-christmas-2019/">Merry Christmas 2019: New Beginnings</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/github-sponsors/">GitHub Sponsors</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.7.0/">Cowboy 2.7</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-2.0.0-rc.1/">Ranch 2.0 release candidate 1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/joe_the_rubber_duck/">Joe Armstrong the rubber duck</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/merry-christmas-2018/">Merry Christmas 2018: A Recap</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.6.0/">Cowboy 2.6</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-1.7.0/">Ranch 1.7</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.5.0/">Cowboy 2.5</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-1.3.0/">Gun 1.3</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-1.2.0/">Gun 1.2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-1.6.0/">Ranch 1.6</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-1.0.0/">Gun 1.0</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/asciideck/">Asciideck: Asciidoc for Erlang</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-1.0.0-rc.1/">Gun 1.0 release candidate 1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.4.0/">Cowboy 2.4</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.3.0/">Cowboy 2.3</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.2.0/">Cowboy 2.2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.1.0/">Cowboy 2.1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0/">Cowboy 2.0</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-pre.4/">Cowboy 2.0 pre-release 4</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-1.3/">Ranch 1.3</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ml-archives/">Mailing list archived</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/website-update/">Website update</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlanger-playbook-september-2015-update/">The Erlanger Playbook September 2015 Update</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlanger-playbook/">The Erlanger Playbook</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlang-validate-utf8/">Validating UTF-8 binaries with Erlang</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/on-open-source/">On open source</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/the-story-so-far/">The story so far</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy2-qs/">Cowboy 2.0 and query strings</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/january-2014-status/">January 2014 status</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/farwest-funded/">Farwest got funded!</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlang.mk-and-relx/">Build Erlang releases with Erlang.mk and Relx</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.5-intermediate-module/">Xerl: intermediate module</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.4-expression-separator/">Xerl: expression separator</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlang-scalability/">Erlang Scalability</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.3-atomic-expressions/">Xerl: atomic expressions</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Xerl: two modules</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.1-empty-modules/">Xerl: empty modules</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-ftp/">Build an FTP Server with Ranch in 30 Minutes</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/tictactoe/">Erlang Tic Tac Toe</a></li>
+
+
+</ul>
+
+<h3>Feedback</h3>
+<p>Feel free to <a href="mailto:[email protected]">email us</a>
+if you found any mistake or need clarification on any of the
+articles.</p>
+
+</div>
+</div>
+</div>
+</div>
+
+ <footer>
+ <div class="container">
+ <div class="row">
+ <div class="span6">
+ <p id="scroll-top"><a href="#">↑ Scroll to top</a></p>
+ <nav>
+ <ul>
+ <li><a href="mailto:[email protected]" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="span6 credits">
+ <p><img src="/img/footer_logo.png"></p>
+ <p>Copyright &copy; Loïc Hoguin 2012-2018</p>
+ </div>
+ </div>
+ </div>
+ </footer>
+
+
+ <script src="/js/custom.js"></script>
+ </body>
+</html>
+
diff --git a/articles/cowboy-2.2.0/index.html b/articles/cowboy-2.2.0/index.html
index 92fe36f3..7ad82e7a 100644
--- a/articles/cowboy-2.2.0/index.html
+++ b/articles/cowboy-2.2.0/index.html
@@ -93,6 +93,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.3.0/index.html b/articles/cowboy-2.3.0/index.html
index b87d64a0..487e8117 100644
--- a/articles/cowboy-2.3.0/index.html
+++ b/articles/cowboy-2.3.0/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.4.0/index.html b/articles/cowboy-2.4.0/index.html
index 3df22472..7cc4196c 100644
--- a/articles/cowboy-2.4.0/index.html
+++ b/articles/cowboy-2.4.0/index.html
@@ -87,6 +87,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.5.0/index.html b/articles/cowboy-2.5.0/index.html
index 587829d1..58079f87 100644
--- a/articles/cowboy-2.5.0/index.html
+++ b/articles/cowboy-2.5.0/index.html
@@ -91,6 +91,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.6.0/index.html b/articles/cowboy-2.6.0/index.html
index 31301ed9..46fee57d 100644
--- a/articles/cowboy-2.6.0/index.html
+++ b/articles/cowboy-2.6.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.7.0/index.html b/articles/cowboy-2.7.0/index.html
index 6d5f74cf..2f9abe4d 100644
--- a/articles/cowboy-2.7.0/index.html
+++ b/articles/cowboy-2.7.0/index.html
@@ -89,6 +89,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.8.0/index.html b/articles/cowboy-2.8.0/index.html
index 1e720769..a0c5e6a5 100644
--- a/articles/cowboy-2.8.0/index.html
+++ b/articles/cowboy-2.8.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy-2.9.0/index.html b/articles/cowboy-2.9.0/index.html
index 8266aa58..901b83e6 100644
--- a/articles/cowboy-2.9.0/index.html
+++ b/articles/cowboy-2.9.0/index.html
@@ -87,6 +87,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/cowboy2-qs/index.html b/articles/cowboy2-qs/index.html
index a26a471b..b04841f3 100644
--- a/articles/cowboy2-qs/index.html
+++ b/articles/cowboy2-qs/index.html
@@ -129,6 +129,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/discord-server/index.html b/articles/discord-server/index.html
index 9a3f32db..32f78f39 100644
--- a/articles/discord-server/index.html
+++ b/articles/discord-server/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/dont-let-it-crash/index.html b/articles/dont-let-it-crash/index.html
index 792c9c88..5bc2d8a9 100644
--- a/articles/dont-let-it-crash/index.html
+++ b/articles/dont-let-it-crash/index.html
@@ -104,6 +104,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/erlang-meetup-10-septembre-2019/index.html b/articles/erlang-meetup-10-septembre-2019/index.html
index 55270218..95ed4c48 100644
--- a/articles/erlang-meetup-10-septembre-2019/index.html
+++ b/articles/erlang-meetup-10-septembre-2019/index.html
@@ -84,6 +84,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/erlang-scalability/index.html b/articles/erlang-scalability/index.html
index 92478f9e..7b5ccbe6 100644
--- a/articles/erlang-scalability/index.html
+++ b/articles/erlang-scalability/index.html
@@ -116,6 +116,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/erlang-validate-utf8/index.html b/articles/erlang-validate-utf8/index.html
index 77a6de93..9a2892e6 100644
--- a/articles/erlang-validate-utf8/index.html
+++ b/articles/erlang-validate-utf8/index.html
@@ -232,6 +232,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/erlang.mk-and-relx/index.html b/articles/erlang.mk-and-relx/index.html
index 56a0fa70..19ed4eaa 100644
--- a/articles/erlang.mk-and-relx/index.html
+++ b/articles/erlang.mk-and-relx/index.html
@@ -118,6 +118,10 @@ cowboy-0.8.5 erlydtl-0.7.0 ninenines-0.2.0 stdlib-1.19.1</pre></div></div>
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/erlanger-playbook-september-2015-update/index.html b/articles/erlanger-playbook-september-2015-update/index.html
index e39cd0a0..e0203e10 100644
--- a/articles/erlanger-playbook-september-2015-update/index.html
+++ b/articles/erlanger-playbook-september-2015-update/index.html
@@ -87,6 +87,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/erlanger-playbook/index.html b/articles/erlanger-playbook/index.html
index 307fedaa..3a6f0e5c 100644
--- a/articles/erlanger-playbook/index.html
+++ b/articles/erlanger-playbook/index.html
@@ -128,6 +128,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/farwest-funded/index.html b/articles/farwest-funded/index.html
index 5e39de37..3c2ffdde 100644
--- a/articles/farwest-funded/index.html
+++ b/articles/farwest-funded/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/github-sponsors/index.html b/articles/github-sponsors/index.html
index e3d926fb..2531b980 100644
--- a/articles/github-sponsors/index.html
+++ b/articles/github-sponsors/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/gun-1.0.0-rc.1/index.html b/articles/gun-1.0.0-rc.1/index.html
index b6f104ce..b5e80b82 100644
--- a/articles/gun-1.0.0-rc.1/index.html
+++ b/articles/gun-1.0.0-rc.1/index.html
@@ -89,6 +89,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/gun-1.0.0/index.html b/articles/gun-1.0.0/index.html
index 6f0064ee..f0174fba 100644
--- a/articles/gun-1.0.0/index.html
+++ b/articles/gun-1.0.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/gun-1.2.0/index.html b/articles/gun-1.2.0/index.html
index 9ec9c086..7fb59d64 100644
--- a/articles/gun-1.2.0/index.html
+++ b/articles/gun-1.2.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/gun-1.3.0/index.html b/articles/gun-1.3.0/index.html
index b3ef0b15..398071bc 100644
--- a/articles/gun-1.3.0/index.html
+++ b/articles/gun-1.3.0/index.html
@@ -86,6 +86,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/gun-2.0.0-pre.1/index.html b/articles/gun-2.0.0-pre.1/index.html
index 6631f589..42209c5d 100644
--- a/articles/gun-2.0.0-pre.1/index.html
+++ b/articles/gun-2.0.0-pre.1/index.html
@@ -93,6 +93,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/gun-2.0.0-pre.2/index.html b/articles/gun-2.0.0-pre.2/index.html
index c3411cfe..2fa7f68a 100644
--- a/articles/gun-2.0.0-pre.2/index.html
+++ b/articles/gun-2.0.0-pre.2/index.html
@@ -91,6 +91,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/gun-2.0.0-rc.1/index.html b/articles/gun-2.0.0-rc.1/index.html
index b3629de1..4ed1664e 100644
--- a/articles/gun-2.0.0-rc.1/index.html
+++ b/articles/gun-2.0.0-rc.1/index.html
@@ -96,6 +96,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/gun-2.0.0/index.html b/articles/gun-2.0.0/index.html
index af2888d9..1804d4e1 100644
--- a/articles/gun-2.0.0/index.html
+++ b/articles/gun-2.0.0/index.html
@@ -98,6 +98,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/gun-2.2.0/index.html b/articles/gun-2.2.0/index.html
index a0eb5d90..df130dec 100644
--- a/articles/gun-2.2.0/index.html
+++ b/articles/gun-2.2.0/index.html
@@ -92,6 +92,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/index.html b/articles/index.html
index c99c2eaf..26a44819 100644
--- a/articles/index.html
+++ b/articles/index.html
@@ -65,6 +65,24 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></h2>
+ <p class="date">
+ <span class="year">2026</span>
+ <span class="day-month">12 May</span>
+ </p>
+ </header>
+
+ <p>Cowboy 2.15.0 has been released! Gun 2.3.0 has also been released! And finally so has Cowlib 2.16.1.
+They address a number of security vulnerabilities so all users are encouraged to upgrade.
+Expect a few more security oriented releases in the near future (or minors with security fixes or harnesses). They will be meant to address increased threats from AI agents usage. I will have a post explaining the strategy in a few days.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/cowboy-2.15.0/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></h2>
<p class="date">
<span class="year">2025</span>
@@ -413,23 +431,6 @@ Head on to my GitHub Sponsors page now!</p>
</p>
</article>
- <article class="blog_item">
- <header>
- <h2><a href="https://ninenines.eu/articles/cowboy-2.7.0/">Cowboy 2.7</a></h2>
- <p class="date">
- <span class="year">2019</span>
- <span class="day-month">16 Oct</span>
- </p>
- </header>
-
- <p>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.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/cowboy-2.7.0/">Read More</a>
- </p>
- </article>
-
<nav class="pagination" role="pagination">
diff --git a/articles/index.xml b/articles/index.xml
index 26f2f807..662eef3d 100644
--- a/articles/index.xml
+++ b/articles/index.xml
@@ -6,12 +6,23 @@
<description>Recent content in Articles on Nine Nines</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Thu, 18 Sep 2025 07:00:00 +0100</lastBuildDate>
+ <lastBuildDate>Tue, 12 May 2026 07:00:00 +0100</lastBuildDate>
<atom:link href="https://ninenines.eu/articles/index.xml" rel="self" type="application/rss+xml" />
<item>
+ <title>Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</title>
+ <link>https://ninenines.eu/articles/cowboy-2.15.0/</link>
+ <pubDate>Tue, 12 May 2026 07:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/articles/cowboy-2.15.0/</guid>
+ <description>Cowboy 2.15.0 has been released! Gun 2.3.0 has also been released! And finally so has Cowlib 2.16.1.
+They address a number of security vulnerabilities so all users are encouraged to upgrade.
+Expect a few more security oriented releases in the near future (or minors with security fixes or harnesses). They will be meant to address increased threats from AI agents usage. I will have a post explaining the strategy in a few days.</description>
+ </item>
+
+ <item>
<title>Cowboy 2.14</title>
<link>https://ninenines.eu/articles/cowboy-2.14.0/</link>
<pubDate>Thu, 18 Sep 2025 07:00:00 +0100</pubDate>
diff --git a/articles/january-2014-status/index.html b/articles/january-2014-status/index.html
index fde12856..a8fb655b 100644
--- a/articles/january-2014-status/index.html
+++ b/articles/january-2014-status/index.html
@@ -114,6 +114,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/joe_the_rubber_duck/index.html b/articles/joe_the_rubber_duck/index.html
index 9e05123e..612d35c1 100644
--- a/articles/joe_the_rubber_duck/index.html
+++ b/articles/joe_the_rubber_duck/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/merry-christmas-2018/index.html b/articles/merry-christmas-2018/index.html
index 79d0a8ae..8715f677 100644
--- a/articles/merry-christmas-2018/index.html
+++ b/articles/merry-christmas-2018/index.html
@@ -95,6 +95,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/merry-christmas-2019/index.html b/articles/merry-christmas-2019/index.html
index f6270b34..651767b4 100644
--- a/articles/merry-christmas-2019/index.html
+++ b/articles/merry-christmas-2019/index.html
@@ -91,6 +91,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/ml-archives/index.html b/articles/ml-archives/index.html
index cae19be1..ed9f9bd3 100644
--- a/articles/ml-archives/index.html
+++ b/articles/ml-archives/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/on-open-source/index.html b/articles/on-open-source/index.html
index 3ca79b69..b07739d3 100644
--- a/articles/on-open-source/index.html
+++ b/articles/on-open-source/index.html
@@ -97,6 +97,10 @@ much left to look at today</a>. This was followed by a <a href="https://github.c
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/otp-26/index.html b/articles/otp-26/index.html
index 42799384..229cd5cb 100644
--- a/articles/otp-26/index.html
+++ b/articles/otp-26/index.html
@@ -92,6 +92,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/page/2/index.html b/articles/page/2/index.html
index 0c7063bd..71e093b4 100644
--- a/articles/page/2/index.html
+++ b/articles/page/2/index.html
@@ -65,6 +65,23 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/cowboy-2.7.0/">Cowboy 2.7</a></h2>
+ <p class="date">
+ <span class="year">2019</span>
+ <span class="day-month">16 Oct</span>
+ </p>
+ </header>
+
+ <p>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.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/cowboy-2.7.0/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></h2>
<p class="date">
<span class="year">2019</span>
@@ -416,25 +433,6 @@ HTTP/2 support! Websocket compression! Much simpler, cleaner interface. No mor
</p>
</article>
- <article class="blog_item">
- <header>
- <h2><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></h2>
- <p class="date">
- <span class="year">2017</span>
- <span class="day-month">23 Aug</span>
- </p>
- </header>
-
- <p>Cowboy 2.0.0-rc.2 has been released!
-This is the new recommended version of Cowboy. Its API should not change before release. While you probably should not use it in production yet, many do successfully. Use at your own risk.
-This new version contains fixes for the following issues:
-HTTP/2 server push was using the wrong header compression context. HTTP/2 flow control could end up queueing data in the wrong order when resuming the sending of data.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Read More</a>
- </p>
- </article>
-
<nav class="pagination" role="pagination">
diff --git a/articles/page/3/index.html b/articles/page/3/index.html
index 9ddc5f22..0da3706e 100644
--- a/articles/page/3/index.html
+++ b/articles/page/3/index.html
@@ -65,6 +65,25 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></h2>
+ <p class="date">
+ <span class="year">2017</span>
+ <span class="day-month">23 Aug</span>
+ </p>
+ </header>
+
+ <p>Cowboy 2.0.0-rc.2 has been released!
+This is the new recommended version of Cowboy. Its API should not change before release. While you probably should not use it in production yet, many do successfully. Use at your own risk.
+This new version contains fixes for the following issues:
+HTTP/2 server push was using the wrong header compression context. HTTP/2 flow control could end up queueing data in the wrong order when resuming the sending of data.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></h2>
<p class="date">
<span class="year">2017</span>
@@ -404,24 +423,6 @@ This will be in the form of a series of hints, which may or may not be accompani
</p>
</article>
- <article class="blog_item">
- <header>
- <h2><a href="https://ninenines.eu/articles/xerl-0.3-atomic-expressions/">Xerl: atomic expressions</a></h2>
- <p class="date">
- <span class="year">2013</span>
- <span class="day-month">18 Feb</span>
- </p>
- </header>
-
- <p>We will be adding atomic integer expressions to our language. These look as follow in Erlang:
-42. And the result of this expression is of course 42.
-We will be running this expression at compile time, since we don&apos;t have the means to run code at runtime yet. This will of course result in no module being compiled, but that&apos;s OK, it will allow us to discuss a few important things we&apos;ll have to plan for later on.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/xerl-0.3-atomic-expressions/">Read More</a>
- </p>
- </article>
-
<nav class="pagination" role="pagination">
diff --git a/articles/page/4/index.html b/articles/page/4/index.html
index 5b0847ce..2fb439aa 100644
--- a/articles/page/4/index.html
+++ b/articles/page/4/index.html
@@ -65,6 +65,24 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/xerl-0.3-atomic-expressions/">Xerl: atomic expressions</a></h2>
+ <p class="date">
+ <span class="year">2013</span>
+ <span class="day-month">18 Feb</span>
+ </p>
+ </header>
+
+ <p>We will be adding atomic integer expressions to our language. These look as follow in Erlang:
+42. And the result of this expression is of course 42.
+We will be running this expression at compile time, since we don&apos;t have the means to run code at runtime yet. This will of course result in no module being compiled, but that&apos;s OK, it will allow us to discuss a few important things we&apos;ll have to plan for later on.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/xerl-0.3-atomic-expressions/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Xerl: two modules</a></h2>
<p class="date">
<span class="year">2013</span>
diff --git a/articles/ranch-1.3/index.html b/articles/ranch-1.3/index.html
index f2610396..da0f55ca 100644
--- a/articles/ranch-1.3/index.html
+++ b/articles/ranch-1.3/index.html
@@ -126,6 +126,10 @@ Primary key fingerprint<font color="#990000">:</font> F19F 189C ECC7 <font color
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/ranch-1.6.0/index.html b/articles/ranch-1.6.0/index.html
index 4184bb54..07f3a3f7 100644
--- a/articles/ranch-1.6.0/index.html
+++ b/articles/ranch-1.6.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/ranch-1.7.0/index.html b/articles/ranch-1.7.0/index.html
index 8bee41bb..00df02b5 100644
--- a/articles/ranch-1.7.0/index.html
+++ b/articles/ranch-1.7.0/index.html
@@ -87,6 +87,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/ranch-2.0.0-rc.1/index.html b/articles/ranch-2.0.0-rc.1/index.html
index 5ae3c7d6..8ce9b33a 100644
--- a/articles/ranch-2.0.0-rc.1/index.html
+++ b/articles/ranch-2.0.0-rc.1/index.html
@@ -96,6 +96,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/ranch-2.0.0/index.html b/articles/ranch-2.0.0/index.html
index 4bc957bd..9d14a139 100644
--- a/articles/ranch-2.0.0/index.html
+++ b/articles/ranch-2.0.0/index.html
@@ -95,6 +95,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/ranch-2.1.0/index.html b/articles/ranch-2.1.0/index.html
index 8474057a..e4034300 100644
--- a/articles/ranch-2.1.0/index.html
+++ b/articles/ranch-2.1.0/index.html
@@ -90,6 +90,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/ranch-2.2.0/index.html b/articles/ranch-2.2.0/index.html
index efb88033..d88b9d19 100644
--- a/articles/ranch-2.2.0/index.html
+++ b/articles/ranch-2.2.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/ranch-ftp/index.html b/articles/ranch-ftp/index.html
index eb0d0453..34e180fa 100644
--- a/articles/ranch-ftp/index.html
+++ b/articles/ranch-ftp/index.html
@@ -228,6 +228,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/the-elephant-in-the-room/index.html b/articles/the-elephant-in-the-room/index.html
index 7c72dffb..c5a1afaf 100644
--- a/articles/the-elephant-in-the-room/index.html
+++ b/articles/the-elephant-in-the-room/index.html
@@ -110,6 +110,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/the-gateway-trilogy/index.html b/articles/the-gateway-trilogy/index.html
index b28fe602..77b827b2 100644
--- a/articles/the-gateway-trilogy/index.html
+++ b/articles/the-gateway-trilogy/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/the-story-so-far/index.html b/articles/the-story-so-far/index.html
index 6de610da..ba3551f3 100644
--- a/articles/the-story-so-far/index.html
+++ b/articles/the-story-so-far/index.html
@@ -101,6 +101,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/tictactoe/index.html b/articles/tictactoe/index.html
index bc66bc13..64c45a1d 100644
--- a/articles/tictactoe/index.html
+++ b/articles/tictactoe/index.html
@@ -133,6 +133,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/website-update/index.html b/articles/website-update/index.html
index 983d0b42..016f0dcd 100644
--- a/articles/website-update/index.html
+++ b/articles/website-update/index.html
@@ -90,6 +90,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/xerl-0.1-empty-modules/index.html b/articles/xerl-0.1-empty-modules/index.html
index d43c777d..1f037be5 100644
--- a/articles/xerl-0.1-empty-modules/index.html
+++ b/articles/xerl-0.1-empty-modules/index.html
@@ -168,6 +168,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/xerl-0.2-two-modules/index.html b/articles/xerl-0.2-two-modules/index.html
index 2bb876d4..057bc692 100644
--- a/articles/xerl-0.2-two-modules/index.html
+++ b/articles/xerl-0.2-two-modules/index.html
@@ -196,6 +196,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/xerl-0.3-atomic-expressions/index.html b/articles/xerl-0.3-atomic-expressions/index.html
index 2c367396..f2e3e24f 100644
--- a/articles/xerl-0.3-atomic-expressions/index.html
+++ b/articles/xerl-0.3-atomic-expressions/index.html
@@ -165,6 +165,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/xerl-0.4-expression-separator/index.html b/articles/xerl-0.4-expression-separator/index.html
index 2a1bc1ca..222f48c5 100644
--- a/articles/xerl-0.4-expression-separator/index.html
+++ b/articles/xerl-0.4-expression-separator/index.html
@@ -117,6 +117,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/articles/xerl-0.5-intermediate-module/index.html b/articles/xerl-0.5-intermediate-module/index.html
index a0f7db81..d61bfee0 100644
--- a/articles/xerl-0.5-intermediate-module/index.html
+++ b/articles/xerl-0.5-intermediate-module/index.html
@@ -161,6 +161,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.15.0/">Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li>
diff --git a/docs/en/cowboy/2.15/guide/index.html b/docs/en/cowboy/2.15/guide/index.html
index 15d383ec..23cf72cf 100644
--- a/docs/en/cowboy/2.15/guide/index.html
+++ b/docs/en/cowboy/2.15/guide/index.html
@@ -130,7 +130,7 @@
</li>
</ul>
<h2 id="_additional_information">Additional information</h2>
-<ul><li><a href="migrating_from_2.14/">Changes since Cowboy 2.14</a>
+<ul><li><a href="migrating_from_2.14/">Migrating from Cowboy 2.14 to 2.15</a>
</li>
<li><a href="migrating_from_2.13/">Migrating from Cowboy 2.13 to 2.14</a>
</li>
diff --git a/docs/index.xml b/docs/index.xml
index 725f5570..e148a35b 100644
--- a/docs/index.xml
+++ b/docs/index.xml
@@ -6246,7 +6246,7 @@ cowboy(3) - Listener management cowboy_req(3) - Request and response cowboy_ro
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://ninenines.eu/docs/en/cowboy/2.15/guide/</guid>
- <description>Rationale The modern Web Erlang and the Web Introduction Introduction Getting started Flow diagram Configuration Listeners Routing Constraints Handlers Handlers Loop handlers Static files Request and response Request details Reading the request body Sending a response Using cookies Multipart REST REST principles Handling REST requests REST flowcharts Designing a resource handler Websocket The Websocket protocol Websocket handlers Advanced Streams Middlewares Performance Additional information Changes since Cowboy 2.</description>
+ <description>Rationale The modern Web Erlang and the Web Introduction Introduction Getting started Flow diagram Configuration Listeners Routing Constraints Handlers Handlers Loop handlers Static files Request and response Request details Reading the request body Sending a response Using cookies Multipart REST REST principles Handling REST requests REST flowcharts Designing a resource handler Websocket The Websocket protocol Websocket handlers Advanced Streams Middlewares Performance Additional information Migrating from Cowboy 2.</description>
</item>
<item>
diff --git a/donate/index.html b/donate/index.html
index 11f2ef5e..28617341 100644
--- a/donate/index.html
+++ b/donate/index.html
@@ -1197,6 +1197,8 @@
+
+
<h3 id="_like_my_work__donate">Like my work? Donate!</h3>
<p>Donate to Loïc Hoguin because his work on Cowboy, Ranch, Gun and Erlang.mk is fantastic:</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline">
diff --git a/erlanger-playbook/index.html b/erlanger-playbook/index.html
index 4e7fdcc0..ff133368 100644
--- a/erlanger-playbook/index.html
+++ b/erlanger-playbook/index.html
@@ -1237,6 +1237,8 @@
+
+
<h3 id="_like_my_work__donate">Like my work? Donate!</h3>
<p>Donate to Loïc Hoguin because his work on Cowboy, Ranch, Gun and Erlang.mk is fantastic:</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline">
diff --git a/index.html b/index.html
index f017d61f..81d9b817 100644
--- a/index.html
+++ b/index.html
@@ -1337,6 +1337,8 @@
+
+
<p>Reward my work via <a href="https://github.com/sponsors/essen">GitHub Sponsors</a> and<br/>GitHub will double the funds I receive!</p>
diff --git a/index.xml b/index.xml
index 8e5299ec..6bb6e922 100644
--- a/index.xml
+++ b/index.xml
@@ -5513,6 +5513,17 @@ HTTP IANA Registries HTTP Method Registry HTTP Status Code Registry Message He
</item>
<item>
+ <title>Cowboy 2.15, Gun 2.3, Cowlib 2.16.1</title>
+ <link>https://ninenines.eu/articles/cowboy-2.15.0/</link>
+ <pubDate>Tue, 12 May 2026 07:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/articles/cowboy-2.15.0/</guid>
+ <description>Cowboy 2.15.0 has been released! Gun 2.3.0 has also been released! And finally so has Cowlib 2.16.1.
+They address a number of security vulnerabilities so all users are encouraged to upgrade.
+Expect a few more security oriented releases in the near future (or minors with security fixes or harnesses). They will be meant to address increased threats from AI agents usage. I will have a post explaining the strategy in a few days.</description>
+ </item>
+
+ <item>
<title>Cowboy 2.14</title>
<link>https://ninenines.eu/articles/cowboy-2.14.0/</link>
<pubDate>Thu, 18 Sep 2025 07:00:00 +0100</pubDate>
@@ -7033,7 +7044,7 @@ cowboy(3) - Listener management cowboy_req(3) - Request and response cowboy_ro
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://ninenines.eu/docs/en/cowboy/2.15/guide/</guid>
- <description>Rationale The modern Web Erlang and the Web Introduction Introduction Getting started Flow diagram Configuration Listeners Routing Constraints Handlers Handlers Loop handlers Static files Request and response Request details Reading the request body Sending a response Using cookies Multipart REST REST principles Handling REST requests REST flowcharts Designing a resource handler Websocket The Websocket protocol Websocket handlers Advanced Streams Middlewares Performance Additional information Changes since Cowboy 2.</description>
+ <description>Rationale The modern Web Erlang and the Web Introduction Introduction Getting started Flow diagram Configuration Listeners Routing Constraints Handlers Handlers Loop handlers Static files Request and response Request details Reading the request body Sending a response Using cookies Multipart REST REST principles Handling REST requests REST flowcharts Designing a resource handler Websocket The Websocket protocol Websocket handlers Advanced Streams Middlewares Performance Additional information Migrating from Cowboy 2.</description>
</item>
<item>
diff --git a/services/index.html b/services/index.html
index 0854962c..15b0a573 100644
--- a/services/index.html
+++ b/services/index.html
@@ -1223,6 +1223,8 @@
+
+
<h3 id="_like_my_work__donate">Like my work? Donate!</h3>
<p>Donate to Loïc Hoguin because his work on Cowboy, Ranch, Gun and Erlang.mk is fantastic:</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline">
diff --git a/sitemap.xml b/sitemap.xml
index 0c377014..6be4249e 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2024,7 +2024,12 @@
<url>
<loc>https://ninenines.eu/articles/</loc>
- <lastmod>2025-09-18T07:00:00+01:00</lastmod>
+ <lastmod>2026-05-12T07:00:00+01:00</lastmod>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/articles/cowboy-2.15.0/</loc>
+ <lastmod>2026-05-12T07:00:00+01:00</lastmod>
</url>
<url>