summaryrefslogtreecommitdiffstats
path: root/articles
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2019-07-18 09:59:28 +0200
committerLoïc Hoguin <[email protected]>2019-07-18 10:08:46 +0200
commit136d443b5c38bee96f5d995dfea3629ef07564c3 (patch)
tree1d31540baebc43ca0b2dceeda212c44f5da7e7a8 /articles
parente031713c0e8bd871248dbbbbdec1ea28609f4431 (diff)
downloadninenines.eu-136d443b5c38bee96f5d995dfea3629ef07564c3.tar.gz
ninenines.eu-136d443b5c38bee96f5d995dfea3629ef07564c3.tar.bz2
ninenines.eu-136d443b5c38bee96f5d995dfea3629ef07564c3.zip
Announce Ranch 2.0.0-rc.1
Adds Ranch 2.0 documentation and removes documentation for very old Cowboy and Ranch, along with Erlang.mk documentation which is available on its own website.
Diffstat (limited to 'articles')
-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.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/cowboy2-qs/index.html4
-rw-r--r--articles/dont-let-it-crash/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/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/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/ml-archives/index.html4
-rw-r--r--articles/on-open-source/index.html4
-rw-r--r--articles/page/2/index.html34
-rw-r--r--articles/page/3/index.html17
-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.html302
-rw-r--r--articles/ranch-ftp/index.html4
-rw-r--r--articles/the-elephant-in-the-room/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
46 files changed, 530 insertions, 35 deletions
diff --git a/articles/asciideck/index.html b/articles/asciideck/index.html
index 84ddd17d..0c509a79 100644
--- a/articles/asciideck/index.html
+++ b/articles/asciideck/index.html
@@ -110,6 +110,10 @@ http://www.gnu.org/software/src-highlite -->
+ <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>
diff --git a/articles/cowboy-2.0.0-pre.4/index.html b/articles/cowboy-2.0.0-pre.4/index.html
index 9eac8c92..7845f771 100644
--- a/articles/cowboy-2.0.0-pre.4/index.html
+++ b/articles/cowboy-2.0.0-pre.4/index.html
@@ -129,6 +129,10 @@
+ <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>
diff --git a/articles/cowboy-2.0.0-rc.1/index.html b/articles/cowboy-2.0.0-rc.1/index.html
index 9f0f1bbe..72a8239c 100644
--- a/articles/cowboy-2.0.0-rc.1/index.html
+++ b/articles/cowboy-2.0.0-rc.1/index.html
@@ -100,6 +100,10 @@
+ <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>
diff --git a/articles/cowboy-2.0.0-rc.2/index.html b/articles/cowboy-2.0.0-rc.2/index.html
index 0f4bd464..12aeadec 100644
--- a/articles/cowboy-2.0.0-rc.2/index.html
+++ b/articles/cowboy-2.0.0-rc.2/index.html
@@ -93,6 +93,10 @@
+ <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>
diff --git a/articles/cowboy-2.0.0/index.html b/articles/cowboy-2.0.0/index.html
index 31a04dec..afd24565 100644
--- a/articles/cowboy-2.0.0/index.html
+++ b/articles/cowboy-2.0.0/index.html
@@ -99,6 +99,10 @@
+ <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>
diff --git a/articles/cowboy-2.1.0/index.html b/articles/cowboy-2.1.0/index.html
index a82c6d23..106d7fb5 100644
--- a/articles/cowboy-2.1.0/index.html
+++ b/articles/cowboy-2.1.0/index.html
@@ -96,6 +96,10 @@
+ <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>
diff --git a/articles/cowboy-2.2.0/index.html b/articles/cowboy-2.2.0/index.html
index 112df4b5..0c754536 100644
--- a/articles/cowboy-2.2.0/index.html
+++ b/articles/cowboy-2.2.0/index.html
@@ -94,6 +94,10 @@
+ <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>
diff --git a/articles/cowboy-2.3.0/index.html b/articles/cowboy-2.3.0/index.html
index 0f48b4ff..1b27db49 100644
--- a/articles/cowboy-2.3.0/index.html
+++ b/articles/cowboy-2.3.0/index.html
@@ -86,6 +86,10 @@
+ <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>
diff --git a/articles/cowboy-2.4.0/index.html b/articles/cowboy-2.4.0/index.html
index 1e7e9dea..80353047 100644
--- a/articles/cowboy-2.4.0/index.html
+++ b/articles/cowboy-2.4.0/index.html
@@ -88,6 +88,10 @@
+ <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>
diff --git a/articles/cowboy-2.5.0/index.html b/articles/cowboy-2.5.0/index.html
index 726a4580..fd6a019a 100644
--- a/articles/cowboy-2.5.0/index.html
+++ b/articles/cowboy-2.5.0/index.html
@@ -92,6 +92,10 @@
+ <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>
diff --git a/articles/cowboy-2.6.0/index.html b/articles/cowboy-2.6.0/index.html
index 498b5785..e6c1838b 100644
--- a/articles/cowboy-2.6.0/index.html
+++ b/articles/cowboy-2.6.0/index.html
@@ -89,6 +89,10 @@
+ <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>
diff --git a/articles/cowboy2-qs/index.html b/articles/cowboy2-qs/index.html
index e0feab88..a21d788d 100644
--- a/articles/cowboy2-qs/index.html
+++ b/articles/cowboy2-qs/index.html
@@ -130,6 +130,10 @@ http://www.gnu.org/software/src-highlite -->
+ <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>
diff --git a/articles/dont-let-it-crash/index.html b/articles/dont-let-it-crash/index.html
index 41ff3ea8..88fb7201 100644
--- a/articles/dont-let-it-crash/index.html
+++ b/articles/dont-let-it-crash/index.html
@@ -105,6 +105,10 @@
+ <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>
diff --git a/articles/erlang-scalability/index.html b/articles/erlang-scalability/index.html
index 314ff313..6fe7b247 100644
--- a/articles/erlang-scalability/index.html
+++ b/articles/erlang-scalability/index.html
@@ -117,6 +117,10 @@
+ <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>
diff --git a/articles/erlang-validate-utf8/index.html b/articles/erlang-validate-utf8/index.html
index 16febad7..003c297e 100644
--- a/articles/erlang-validate-utf8/index.html
+++ b/articles/erlang-validate-utf8/index.html
@@ -233,6 +233,10 @@ http://www.gnu.org/software/src-highlite -->
+ <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>
diff --git a/articles/erlang.mk-and-relx/index.html b/articles/erlang.mk-and-relx/index.html
index 2417d6e5..85ca052f 100644
--- a/articles/erlang.mk-and-relx/index.html
+++ b/articles/erlang.mk-and-relx/index.html
@@ -143,6 +143,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/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>
diff --git a/articles/erlanger-playbook-september-2015-update/index.html b/articles/erlanger-playbook-september-2015-update/index.html
index 17e3955b..a73d2642 100644
--- a/articles/erlanger-playbook-september-2015-update/index.html
+++ b/articles/erlanger-playbook-september-2015-update/index.html
@@ -88,6 +88,10 @@
+ <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>
diff --git a/articles/erlanger-playbook/index.html b/articles/erlanger-playbook/index.html
index 47bb449f..aeadb579 100644
--- a/articles/erlanger-playbook/index.html
+++ b/articles/erlanger-playbook/index.html
@@ -129,6 +129,10 @@
+ <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>
diff --git a/articles/farwest-funded/index.html b/articles/farwest-funded/index.html
index ef4a55ff..b663d9a2 100644
--- a/articles/farwest-funded/index.html
+++ b/articles/farwest-funded/index.html
@@ -89,6 +89,10 @@
+ <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>
diff --git a/articles/gun-1.0.0-rc.1/index.html b/articles/gun-1.0.0-rc.1/index.html
index 1d685869..4d6492e1 100644
--- a/articles/gun-1.0.0-rc.1/index.html
+++ b/articles/gun-1.0.0-rc.1/index.html
@@ -90,6 +90,10 @@
+ <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>
diff --git a/articles/gun-1.0.0/index.html b/articles/gun-1.0.0/index.html
index 77675b5b..74111a89 100644
--- a/articles/gun-1.0.0/index.html
+++ b/articles/gun-1.0.0/index.html
@@ -89,6 +89,10 @@
+ <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>
diff --git a/articles/gun-1.2.0/index.html b/articles/gun-1.2.0/index.html
index b994c292..86152b61 100644
--- a/articles/gun-1.2.0/index.html
+++ b/articles/gun-1.2.0/index.html
@@ -89,6 +89,10 @@
+ <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>
diff --git a/articles/gun-1.3.0/index.html b/articles/gun-1.3.0/index.html
index a8dd474f..3f632633 100644
--- a/articles/gun-1.3.0/index.html
+++ b/articles/gun-1.3.0/index.html
@@ -87,6 +87,10 @@
+ <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>
diff --git a/articles/index.html b/articles/index.html
index 005c857b..05b4ead7 100644
--- a/articles/index.html
+++ b/articles/index.html
@@ -67,6 +67,24 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/ranch-2.0.0-rc.1/">Ranch 2.0 release candidate 1</a></h2>
+ <p class="date">
+ <span class="year">2019</span>
+ <span class="day-month">18 Jul</span>
+ </p>
+ </header>
+
+ <p>Ranch 2.0.0-rc.1 has been released!
+We are getting very close to releasing Ranch 2.0! As most of the tremendous programming work was done by contributor Jan Uhlig, I will yield the floor and let him describe what went into this great release.
+In Ranch 1.x, there is only one supervisor per Ranch listener to start and manage connection processes. Under high load (many clients rapidly connecting and/or disconnecting), the message queue of this one supervisor could becomes congested, leading to declining accept rates or a stalled listener.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/ranch-2.0.0-rc.1/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/joe_the_rubber_duck/">Joe Armstrong the rubber duck</a></h2>
<p class="date">
<span class="year">2019</span>
@@ -419,23 +437,6 @@ You lost them. You know you lost them. They comment on the syntax, or perhaps yo
</p>
</article>
- <article class="blog_item">
- <header>
- <h2><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></h2>
- <p class="date">
- <span class="year">2017</span>
- <span class="day-month">22 Jan</span>
- </p>
- </header>
-
- <p>We have a specific mindset when writing Erlang programs. We focus on the normal execution of the program and don&apos;t handle most of the errors that may occur. We sometimes call this normal execution the happy path.
-The general pattern behind writing only for the happy path, letting the VM catch errors (writing them to a log for future consumption) and then having a supervisor restart the processes that failed from a clean state, has a name.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/dont-let-it-crash/">Read More</a>
- </p>
- </article>
-
<nav class="pagination" role="pagination">
diff --git a/articles/index.xml b/articles/index.xml
index c67b8e35..c2270ff5 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>Tue, 11 Jun 2019 07:00:00 +0100</lastBuildDate>
+ <lastBuildDate>Thu, 18 Jul 2019 07:00:00 +0100</lastBuildDate>
<atom:link href="https://ninenines.eu/articles/index.xml" rel="self" type="application/rss+xml" />
<item>
+ <title>Ranch 2.0 release candidate 1</title>
+ <link>https://ninenines.eu/articles/ranch-2.0.0-rc.1/</link>
+ <pubDate>Thu, 18 Jul 2019 07:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/articles/ranch-2.0.0-rc.1/</guid>
+ <description>Ranch 2.0.0-rc.1 has been released!
+We are getting very close to releasing Ranch 2.0! As most of the tremendous programming work was done by contributor Jan Uhlig, I will yield the floor and let him describe what went into this great release.
+In Ranch 1.x, there is only one supervisor per Ranch listener to start and manage connection processes. Under high load (many clients rapidly connecting and/or disconnecting), the message queue of this one supervisor could becomes congested, leading to declining accept rates or a stalled listener.</description>
+ </item>
+
+ <item>
<title>Joe Armstrong the rubber duck</title>
<link>https://ninenines.eu/articles/joe_the_rubber_duck/</link>
<pubDate>Tue, 11 Jun 2019 07:00:00 +0100</pubDate>
diff --git a/articles/january-2014-status/index.html b/articles/january-2014-status/index.html
index 4acd83e7..7c63472d 100644
--- a/articles/january-2014-status/index.html
+++ b/articles/january-2014-status/index.html
@@ -115,6 +115,10 @@
+ <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>
diff --git a/articles/joe_the_rubber_duck/index.html b/articles/joe_the_rubber_duck/index.html
index 9298e787..7f1de2c8 100644
--- a/articles/joe_the_rubber_duck/index.html
+++ b/articles/joe_the_rubber_duck/index.html
@@ -89,6 +89,10 @@
+ <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>
diff --git a/articles/merry-christmas-2018/index.html b/articles/merry-christmas-2018/index.html
index 32d7f8e4..56ccd34a 100644
--- a/articles/merry-christmas-2018/index.html
+++ b/articles/merry-christmas-2018/index.html
@@ -96,6 +96,10 @@
+ <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>
diff --git a/articles/ml-archives/index.html b/articles/ml-archives/index.html
index 9eacbf0d..9debe397 100644
--- a/articles/ml-archives/index.html
+++ b/articles/ml-archives/index.html
@@ -86,6 +86,10 @@
+ <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>
diff --git a/articles/on-open-source/index.html b/articles/on-open-source/index.html
index 8343bb03..3acd36d1 100644
--- a/articles/on-open-source/index.html
+++ b/articles/on-open-source/index.html
@@ -98,6 +98,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/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>
diff --git a/articles/page/2/index.html b/articles/page/2/index.html
index 6e899f20..ad1fb751 100644
--- a/articles/page/2/index.html
+++ b/articles/page/2/index.html
@@ -67,6 +67,23 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></h2>
+ <p class="date">
+ <span class="year">2017</span>
+ <span class="day-month">22 Jan</span>
+ </p>
+ </header>
+
+ <p>We have a specific mindset when writing Erlang programs. We focus on the normal execution of the program and don&apos;t handle most of the errors that may occur. We sometimes call this normal execution the happy path.
+The general pattern behind writing only for the happy path, letting the VM catch errors (writing them to a log for future consumption) and then having a supervisor restart the processes that failed from a clean state, has a name.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/dont-let-it-crash/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/cowboy-2.0.0-pre.4/">Cowboy 2.0 pre-release 4</a></h2>
<p class="date">
<span class="year">2017</span>
@@ -410,23 +427,6 @@ We are just starting, so let&apos;s no go ahead of ourselves here. We&apos;ll be
</p>
</article>
- <article class="blog_item">
- <header>
- <h2><a href="https://ninenines.eu/articles/ranch-ftp/">Build an FTP Server with Ranch in 30 Minutes</a></h2>
- <p class="date">
- <span class="year">2012</span>
- <span class="day-month">14 Nov</span>
- </p>
- </header>
-
- <p>Last week I was speaking at the London Erlang Factory Lite where I presented a live demonstration of building an FTP server using Ranch. As there was no slide, you should use this article as a reference instead.
-The goal of this article is to showcase how to use Ranch for writing a network protocol implementation, how Ranch gets out of the way to let you write the code that matters, and the common techniques used when writing servers.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/ranch-ftp/">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 b75d31ad..5be66f95 100644
--- a/articles/page/3/index.html
+++ b/articles/page/3/index.html
@@ -67,6 +67,23 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/ranch-ftp/">Build an FTP Server with Ranch in 30 Minutes</a></h2>
+ <p class="date">
+ <span class="year">2012</span>
+ <span class="day-month">14 Nov</span>
+ </p>
+ </header>
+
+ <p>Last week I was speaking at the London Erlang Factory Lite where I presented a live demonstration of building an FTP server using Ranch. As there was no slide, you should use this article as a reference instead.
+The goal of this article is to showcase how to use Ranch for writing a network protocol implementation, how Ranch gets out of the way to let you write the code that matters, and the common techniques used when writing servers.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/ranch-ftp/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/tictactoe/">Erlang Tic Tac Toe</a></h2>
<p class="date">
<span class="year">2012</span>
diff --git a/articles/ranch-1.3/index.html b/articles/ranch-1.3/index.html
index 2e07647a..74f25ab4 100644
--- a/articles/ranch-1.3/index.html
+++ b/articles/ranch-1.3/index.html
@@ -127,6 +127,10 @@ Primary key fingerprint<font color="#990000">:</font> F19F 189C ECC7 <font color
+ <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>
diff --git a/articles/ranch-1.6.0/index.html b/articles/ranch-1.6.0/index.html
index bfe963e2..19efbe3a 100644
--- a/articles/ranch-1.6.0/index.html
+++ b/articles/ranch-1.6.0/index.html
@@ -89,6 +89,10 @@
+ <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>
diff --git a/articles/ranch-1.7.0/index.html b/articles/ranch-1.7.0/index.html
index 938438fc..679208db 100644
--- a/articles/ranch-1.7.0/index.html
+++ b/articles/ranch-1.7.0/index.html
@@ -88,6 +88,10 @@
+ <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>
diff --git a/articles/ranch-2.0.0-rc.1/index.html b/articles/ranch-2.0.0-rc.1/index.html
new file mode 100644
index 00000000..29a987fd
--- /dev/null
+++ b/articles/ranch-2.0.0-rc.1/index.html
@@ -0,0 +1,302 @@
+<!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: Ranch 2.0 release candidate 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=5" 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>Ranch 2.0 release candidate 1</span></h1>
+ <p class="date">
+ <span class="year">2019</span>
+ <span class="day-month">18 Jul</span>
+ </p>
+</header>
+
+<p>Ranch <code>2.0.0-rc.1</code> has been released!</p>
+<p>We are getting very close to releasing Ranch 2.0! As most of the tremendous programming work was done by contributor Jan Uhlig, I will yield the floor and let him describe what went into this great release.</p>
+<p>In Ranch 1.x, there is only one supervisor per Ranch listener to start and manage connection processes. Under high load (many clients rapidly connecting and/or disconnecting), the message queue of this one supervisor could becomes congested, leading to declining accept rates or a stalled listener.</p>
+<p>Ranch 2.0 introduces the <code>num_conns_sups</code> option (defaulting to the number of acceptors), which allows the message load to be divided between the specified number of connection supervisors. This improves accept concurrency at the same time.</p>
+<p>Another bottleneck is a possible congestion of the syn queue of a listening socket. The reason is located within the operating system&apos;s TCP/IP implementation, and on Linux the <code>SO_REUSEPORT</code> socket option was introduced to address it. What it boils down to is that you can have more than just one socket listening on the same port, causing the sockets to be load-balanced when accepting connections.</p>
+<p>Ranch 1.x always uses a single listening socket per listener, shared between the acceptors. With a trick, starting multiple Ranch listeners on the same port, it is already possible to make use of the <code>SO_REUSEPORT</code> feature. But that&apos;s not ideal.</p>
+<p>Ranch 2.0 introduces the <code>num_listen_sockets</code> option, which allows to specify the number of listening sockets a Ranch listener should employ, without having to use this trick. Whether you can use <code>SO_REUSEPORT</code> at all and how to enable it depends on your operating system, though.</p>
+<p>Other changes include proper support for local (Unix Domain) sockets, removing the restriction that a listener be suspended to change its transport options and much needed improvements to embedded listeners.</p>
+<p>In addition we have had patches merged to Erlang/OTP to add support for active N to the <code>ssl</code> application (requires Erlang/OTP 21.3 or above) and fix a number of smaller issues we encountered. We have also helped detect and fix a bug in the Windows implementation of active N that greatly reduced its performance in some cases.</p>
+<p>To ensure that everything works correctly, new tests have been written, and some existing tests were updated. A noteworthy addition in this area is pitting Ranch against <a href="https://github.com/ankhers/havoc">Havoc</a>, a resilience testing tool that kills random processes and ports in the system.</p>
+<p>Cowboy users wishing to try Ranch 2.0.0-rc.1 will need to use Cowboy&apos;s master branch at this time or wait for the upcoming Cowboy 2.7.0. Cowboy has been made compatible with both Ranch 1 and 2.</p>
+<p>Last but not least, aside from the changes mentioned above, we are currently preparing a <a href="https://github.com/juhlig/prometheus_ranch">Prometheus collector</a> for Ranch as well as an accompanying Grafana dashboard.</p>
+<p>Ranch 2.0 requires Erlang/OTP 21 or above and is tested and supported on Linux, FreeBSD, macOS and Windows.</p>
+<p>A complete list of changes can be found in the migration guide: <a href="https://ninenines.eu/docs/en/ranch/2.0/guide/migrating_from_1.7/">Migrating from Ranch 1.7 to 2.0</a>.</p>
+<p>You can donate to this project via <a href="https://salt.bountysource.com/teams/ninenines">BountySource</a>. These funds are used to pay for additional servers for testing. We will soon add two Raspberry Pi 4 in order to have some ARM targets when testing.</p>
+<p>As usual, feedback is appreciated, and issues or questions should be sent via Github tickets. Thanks!</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/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/ranch-ftp/index.html b/articles/ranch-ftp/index.html
index 4f2d4a42..fa6136c0 100644
--- a/articles/ranch-ftp/index.html
+++ b/articles/ranch-ftp/index.html
@@ -229,6 +229,10 @@ http://www.gnu.org/software/src-highlite -->
+ <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>
diff --git a/articles/the-elephant-in-the-room/index.html b/articles/the-elephant-in-the-room/index.html
index 27816ac4..b9b88c92 100644
--- a/articles/the-elephant-in-the-room/index.html
+++ b/articles/the-elephant-in-the-room/index.html
@@ -111,6 +111,10 @@
+ <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>
diff --git a/articles/the-story-so-far/index.html b/articles/the-story-so-far/index.html
index 17e9f5d5..817341ee 100644
--- a/articles/the-story-so-far/index.html
+++ b/articles/the-story-so-far/index.html
@@ -102,6 +102,10 @@
+ <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>
diff --git a/articles/tictactoe/index.html b/articles/tictactoe/index.html
index f83f08cf..456b075a 100644
--- a/articles/tictactoe/index.html
+++ b/articles/tictactoe/index.html
@@ -134,6 +134,10 @@ http://www.gnu.org/software/src-highlite -->
+ <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>
diff --git a/articles/website-update/index.html b/articles/website-update/index.html
index 70837aa7..d8c854b8 100644
--- a/articles/website-update/index.html
+++ b/articles/website-update/index.html
@@ -91,6 +91,10 @@
+ <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>
diff --git a/articles/xerl-0.1-empty-modules/index.html b/articles/xerl-0.1-empty-modules/index.html
index cfb21eaa..971bf6ae 100644
--- a/articles/xerl-0.1-empty-modules/index.html
+++ b/articles/xerl-0.1-empty-modules/index.html
@@ -169,6 +169,10 @@ http://www.gnu.org/software/src-highlite -->
+ <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>
diff --git a/articles/xerl-0.2-two-modules/index.html b/articles/xerl-0.2-two-modules/index.html
index 2a65cfbb..5515501f 100644
--- a/articles/xerl-0.2-two-modules/index.html
+++ b/articles/xerl-0.2-two-modules/index.html
@@ -197,6 +197,10 @@ http://www.gnu.org/software/src-highlite -->
+ <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>
diff --git a/articles/xerl-0.3-atomic-expressions/index.html b/articles/xerl-0.3-atomic-expressions/index.html
index cb8a52eb..93c889e5 100644
--- a/articles/xerl-0.3-atomic-expressions/index.html
+++ b/articles/xerl-0.3-atomic-expressions/index.html
@@ -166,6 +166,10 @@ http://www.gnu.org/software/src-highlite -->
+ <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>
diff --git a/articles/xerl-0.4-expression-separator/index.html b/articles/xerl-0.4-expression-separator/index.html
index 264565ae..acad8209 100644
--- a/articles/xerl-0.4-expression-separator/index.html
+++ b/articles/xerl-0.4-expression-separator/index.html
@@ -118,6 +118,10 @@ http://www.gnu.org/software/src-highlite -->
+ <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>
diff --git a/articles/xerl-0.5-intermediate-module/index.html b/articles/xerl-0.5-intermediate-module/index.html
index b2229f2f..5895c7af 100644
--- a/articles/xerl-0.5-intermediate-module/index.html
+++ b/articles/xerl-0.5-intermediate-module/index.html
@@ -162,6 +162,10 @@ http://www.gnu.org/software/src-highlite -->
+ <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>