You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by gi...@apache.org on 2022/02/15 21:40:44 UTC

[thrift-website] branch asf-staging updated: Automatic Site Publish by Buildbot

This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/thrift-website.git


The following commit(s) were added to refs/heads/asf-staging by this push:
     new 901aa83  Automatic Site Publish by Buildbot
901aa83 is described below

commit 901aa8322754c7cde20538776477d9dfd4c19483
Author: buildbot <us...@infra.apache.org>
AuthorDate: Tue Feb 15 21:40:43 2022 +0000

    Automatic Site Publish by Buildbot
---
 output/about.html                              |   2 +-
 output/developers.html                         |   2 +-
 output/docs/BuildingFromSource.html            |   2 +-
 output/docs/HowToContribute.html               |   2 +-
 output/docs/HowToNewLanguage.html              |   2 +-
 output/docs/Languages.html                     |   6 +-
 output/docs/coding_standards.html              |   2 +-
 output/docs/committers/AdditionalReading.html  |   2 +-
 output/docs/committers/HowToCommit.html        |   2 +-
 output/docs/committers/HowToThriftWebsite.html |   6 +-
 output/docs/committers/ReleaseManagement.html  |   2 +-
 output/docs/committers/index.html              |   2 +-
 output/docs/concepts.html                      |   2 +-
 output/docs/features.html                      |   2 +-
 output/docs/idl.html                           |   4 +-
 output/docs/index.html                         |   6 +-
 output/docs/install/centos.html                |   2 +-
 output/docs/install/debian.html                |   4 +-
 output/docs/install/index.html                 |   6 +-
 output/docs/install/os_x.html                  |   2 +-
 output/docs/install/windows.html               |   2 +-
 output/docs/types.html                         |   2 +-
 output/download.html                           |  12 +-
 output/index.html                              |  12 +-
 output/lib/c_glib.html                         |   2 +-
 output/lib/cl.html                             |   2 +-
 output/lib/cpp.html                            |   2 +-
 output/lib/csharp.html                         |   2 +-
 output/lib/d.html                              |   2 +-
 output/lib/delphi.html                         |   2 +-
 output/lib/erl.html                            |   2 +-
 output/lib/go.html                             |   2 +-
 output/lib/haxe.html                           |   2 +-
 output/lib/hs.html                             | 125 -----------------
 output/lib/index.html                          |   8 +-
 output/lib/java.html                           |   2 +-
 output/lib/js.html                             |   2 +-
 output/lib/netstd.html                         |   2 +-
 output/lib/nodejs.html                         |   2 +-
 output/lib/ocaml.html                          |   2 +-
 output/lib/perl.html                           |   2 +-
 output/lib/php.html                            |   2 +-
 output/lib/py.html                             |   2 +-
 output/lib/rb.html                             |   2 +-
 output/lib/st.html                             |   2 +-
 output/mailing.html                            |   2 +-
 output/sitemap.html                            |  10 +-
 output/test/ThriftTest.thrift                  |   2 +-
 output/test/index.html                         |   2 +-
 output/test/keys.html                          |   2 +-
 output/tutorial/c_glib.html                    |   2 +-
 output/tutorial/cpp.html                       |   2 +-
 output/tutorial/csharp.html                    |   2 +-
 output/tutorial/d.html                         |   2 +-
 output/tutorial/dart.html                      |   2 +-
 output/tutorial/delphi.html                    |   2 +-
 output/tutorial/go.html                        |   2 +-
 output/tutorial/graphviz.html                  |   2 +-
 output/tutorial/haxe.html                      |   2 +-
 output/tutorial/hs.html                        | 182 -------------------------
 output/tutorial/index.html                     |   8 +-
 output/tutorial/java.html                      |   2 +-
 output/tutorial/js.html                        |   2 +-
 output/tutorial/netstd.html                    | 166 +++++++++++-----------
 output/tutorial/nodejs.html                    |   2 +-
 output/tutorial/ocaml.html                     |   2 +-
 output/tutorial/perl.html                      |   2 +-
 output/tutorial/php.html                       |   2 +-
 output/tutorial/py.html                        |   2 +-
 output/tutorial/rb.html                        |   2 +-
 70 files changed, 166 insertions(+), 501 deletions(-)

diff --git a/output/about.html b/output/about.html
index a86b699..3e5aee3 100644
--- a/output/about.html
+++ b/output/about.html
@@ -442,7 +442,7 @@ Strive for performance first, elegance second.</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/developers.html b/output/developers.html
index 0d77cac..2f0e3c7 100644
--- a/output/developers.html
+++ b/output/developers.html
@@ -113,7 +113,7 @@
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/BuildingFromSource.html b/output/docs/BuildingFromSource.html
index ff954b2..4b8e8e4 100644
--- a/output/docs/BuildingFromSource.html
+++ b/output/docs/BuildingFromSource.html
@@ -167,7 +167,7 @@ better suited to those languages (this applies to Java, Ruby, PHP).</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/HowToContribute.html b/output/docs/HowToContribute.html
index 7523b25..765f67b 100644
--- a/output/docs/HowToContribute.html
+++ b/output/docs/HowToContribute.html
@@ -221,7 +221,7 @@ git push -u origin THRIFT-9999-take-2:THRIFT-9999
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/HowToNewLanguage.html b/output/docs/HowToNewLanguage.html
index c907611..1758d62 100644
--- a/output/docs/HowToNewLanguage.html
+++ b/output/docs/HowToNewLanguage.html
@@ -152,7 +152,7 @@
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/Languages.html b/output/docs/Languages.html
index aad5691..971265b 100644
--- a/output/docs/Languages.html
+++ b/output/docs/Languages.html
@@ -204,9 +204,9 @@ Thrift&#8217;s core protocol is TBinary, supported by all languages except for J
 <td align="left"><a href="https://github.com/apache/thrift/blob/master/lib/go/README.md">Go</a></td>
 <!-- Since -----------------><td>0.7.0</td>
 <!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cred.png" alt="" /></td>
-<!-- Language Levels -------><td>1.16.7</td><td>1.17</td>
+<!-- Language Levels -------><td>1.16.13</td><td>1.17.6</td>
 <!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td>
-<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td>
+<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td>
 <!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td>
 <!-- Servers ---------------><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cgrn.png" alt="Yes" /></td><td><img src="doc/images/cred.png" alt="" /></td><td><img src="doc/images/cred.png" alt="" /></td>
 <td align="left"><a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20THRIFT%20AND%20component%20in%20(%22Go%20-%20Compiler%22%2C%20%22Go%20-%20Library%22)%20and%20status%20not%20in%20(fixed%2C%20resolved%2C%20closed)">Go</a></td>
@@ -433,7 +433,7 @@ table&gt;
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/coding_standards.html b/output/docs/coding_standards.html
index a5af21d..582e2ad 100644
--- a/output/docs/coding_standards.html
+++ b/output/docs/coding_standards.html
@@ -134,7 +134,7 @@ Code review is the best way to improve readability.</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/committers/AdditionalReading.html b/output/docs/committers/AdditionalReading.html
index faf5cd1..3e3f8db 100644
--- a/output/docs/committers/AdditionalReading.html
+++ b/output/docs/committers/AdditionalReading.html
@@ -83,7 +83,7 @@
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/committers/HowToCommit.html b/output/docs/committers/HowToCommit.html
index 6c8fd98..78cc674 100644
--- a/output/docs/committers/HowToCommit.html
+++ b/output/docs/committers/HowToCommit.html
@@ -168,7 +168,7 @@ git push origin master
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/committers/HowToThriftWebsite.html b/output/docs/committers/HowToThriftWebsite.html
index ee8c72d..147dd2b 100644
--- a/output/docs/committers/HowToThriftWebsite.html
+++ b/output/docs/committers/HowToThriftWebsite.html
@@ -101,8 +101,8 @@ consistent experience with the various markdown parsers deployed by the CMS.</p>
 file” <a href="https://svn.apache.org/repos/asf/thrift/cms-site/trunk/lib/path.pm">lib/path.pm</a>. Update
 the following values and then following <b>Updating the Website</b> section below</p>
 
-<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>current_release: "0.15.0"
-current_release_date: "2021-SEP-11"
+<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>current_release: "0.16.0"
+current_release_date: "2022-FEB-15"
 </code></pre></div></div>
 
 <h3 id="updating-the-website">Updating the website</h3>
@@ -140,7 +140,7 @@ rendering correctly on the staging site.</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/committers/ReleaseManagement.html b/output/docs/committers/ReleaseManagement.html
index c988feb..c5e43df 100644
--- a/output/docs/committers/ReleaseManagement.html
+++ b/output/docs/committers/ReleaseManagement.html
@@ -78,7 +78,7 @@
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/committers/index.html b/output/docs/committers/index.html
index 76acdbf..5030bc1 100644
--- a/output/docs/committers/index.html
+++ b/output/docs/committers/index.html
@@ -77,7 +77,7 @@
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/concepts.html b/output/docs/concepts.html
index 3da5b00..c913fe4 100644
--- a/output/docs/concepts.html
+++ b/output/docs/concepts.html
@@ -205,7 +205,7 @@ delegates processing to the handler (implemented by the user) and writes the res
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/features.html b/output/docs/features.html
index 53b7660..90193a6 100644
--- a/output/docs/features.html
+++ b/output/docs/features.html
@@ -124,7 +124,7 @@
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/idl.html b/output/docs/idl.html
index 2dbef98..48c89f6 100644
--- a/output/docs/idl.html
+++ b/output/docs/idl.html
@@ -52,7 +52,7 @@
       
 <h2 id="thrift-interface-description-language">Thrift interface description language</h2>
 
-<p>For Thrift version 0.16.0.</p>
+<p>For Thrift version 0.17.0.</p>
 
 <p>The Thrift interface definition language (IDL) allows for the definition of <a href="/docs/types">Thrift Types</a>. A Thrift IDL file is processed by the Thrift code generator to produce code for the various target languages to support the defined structs and services in the IDL file.</p>
 
@@ -375,7 +375,7 @@
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/index.html b/output/docs/index.html
index afdcb72..4c927e9 100644
--- a/output/docs/index.html
+++ b/output/docs/index.html
@@ -144,10 +144,6 @@
 
 
 
-
-
-
-
   <li><a href="/docs/idl.html">Interface Description Language (IDL)</a></li>
 
 
@@ -255,7 +251,7 @@ The book comes with a lot of inside knowlegde and is packed with practical examp
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/install/centos.html b/output/docs/install/centos.html
index 1484865..a2f012f 100644
--- a/output/docs/install/centos.html
+++ b/output/docs/install/centos.html
@@ -166,7 +166,7 @@ You can use the ./configure &#8211;enable-libs=no switch to build the Apache Thr
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/install/debian.html b/output/docs/install/debian.html
index 27d5aa6..c6b718f 100644
--- a/output/docs/install/debian.html
+++ b/output/docs/install/debian.html
@@ -110,7 +110,7 @@ sudo ./b2 install
   </li>
   <li>NetStd
     <ul>
-      <li>apt-transport-https dotnet-sdk-5.0 aspnetcore-runtime-5.0</li>
+      <li>apt-transport-https dotnet-sdk-6.0 aspnetcore-runtime-6.0</li>
     </ul>
   </li>
   <li>Thrift Compiler for Windows
@@ -202,7 +202,7 @@ sudo ./b2 install
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/install/index.html b/output/docs/install/index.html
index 30535a1..34a2e30 100644
--- a/output/docs/install/index.html
+++ b/output/docs/install/index.html
@@ -168,10 +168,6 @@
 
 
 
-
-
-
-
   <li><a href="/docs/install/os_x.html">OS X Install</a></li>
 
 
@@ -301,7 +297,7 @@
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/install/os_x.html b/output/docs/install/os_x.html
index f0fc405..a0d8ffb 100644
--- a/output/docs/install/os_x.html
+++ b/output/docs/install/os_x.html
@@ -111,7 +111,7 @@ sudo make install
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/install/windows.html b/output/docs/install/windows.html
index 8b065d6..179440d 100644
--- a/output/docs/install/windows.html
+++ b/output/docs/install/windows.html
@@ -287,7 +287,7 @@ LTHRIFT=$(THRIFT_O)/Thrift.o $(THRIFT_O)/TSocket.o $(THRIFT_O)/TBinaryProtocol.o
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/docs/types.html b/output/docs/types.html
index fe1a445..936d631 100644
--- a/output/docs/types.html
+++ b/output/docs/types.html
@@ -127,7 +127,7 @@ While defaults are provided, the type mappings are not explicitly fixed. Custom
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/download.html b/output/download.html
index f8c7fdc..d28464a 100644
--- a/output/download.html
+++ b/output/download.html
@@ -50,19 +50,19 @@
 
     <div class="container">
       <h2 id="release">Release</h2>
-<p>The latest stable release of Thrift is 0.15.0 (released on 2021-SEP-11).</p>
+<p>The latest stable release of Thrift is 0.16.0 (released on 2022-FEB-15).</p>
 
 <ul>
-  <li><a href="http://www.apache.org/dyn/closer.cgi?path=/thrift/0.15.0/thrift-0.15.0.tar.gz">thrift-0.15.0.tar.gz</a> [<a href="https://www.apache.org/dist/thrift/0.15.0/thrift-0.15.0.tar.gz.asc">PGP</a>]
-[<a href="https://www.apache.org/dist/thrift/0.15.0/thrift-0.15.0.tar.gz.md5">MD5</a>]</li>
-  <li><a href="http://www.apache.org/dyn/closer.cgi?path=/thrift/0.15.0/thrift-0.15.0.exe">Thrift compiler for Windows (thrift-0.15.0.exe)</a> [<a href="https://www.apache.org/dist/thrift/0.15.0/thrift-0.15.0.exe.asc">PGP</a>] [<a href="https://www.apache.org/dist/thrift/0.15.0/thrift-0.15.0.exe.md5">MD5</a>]</li>
+  <li><a href="http://www.apache.org/dyn/closer.cgi?path=/thrift/0.16.0/thrift-0.16.0.tar.gz">thrift-0.16.0.tar.gz</a> [<a href="https://www.apache.org/dist/thrift/0.16.0/thrift-0.16.0.tar.gz.asc">PGP</a>]
+[<a href="https://www.apache.org/dist/thrift/0.16.0/thrift-0.16.0.tar.gz.md5">MD5</a>]</li>
+  <li><a href="http://www.apache.org/dyn/closer.cgi?path=/thrift/0.16.0/thrift-0.16.0.exe">Thrift compiler for Windows (thrift-0.16.0.exe)</a> [<a href="https://www.apache.org/dist/thrift/0.16.0/thrift-0.16.0.exe.asc">PGP</a>] [<a href="https://www.apache.org/dist/thrift/0.16.0/thrift-0.16.0.exe.md5">MD5</a>]</li>
 </ul>
 
 <h2 id="maven-artifact">Maven artifact</h2>
 <pre><code>&lt;dependency&gt;
   &lt;groupId&gt;org.apache.thrift&lt;/groupId&gt;
   &lt;artifactId&gt;libthrift&lt;/artifactId&gt;
-  &lt;version&gt;0.15.0&lt;/version&gt;
+  &lt;version&gt;0.16.0&lt;/version&gt;
 &lt;/dependency&gt;
 </code></pre>
 
@@ -110,7 +110,7 @@ cd thrift
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/index.html b/output/index.html
index d9671f6..adb16c7 100644
--- a/output/index.html
+++ b/output/index.html
@@ -80,19 +80,19 @@
   </div>
   <div class="span3 well center pull-right">
     <h2>Download</h2>
-    <p>Apache Thrift v0.15.0</p>
+    <p>Apache Thrift v0.16.0</p>
     <p>
-      <a class="btn btn-large" href="http://www.apache.org/dyn/closer.cgi?path=/thrift/0.15.0/thrift-0.15.0.tar.gz">
-          Download <small>v0.15.0</small>
+      <a class="btn btn-large" href="http://www.apache.org/dyn/closer.cgi?path=/thrift/0.16.0/thrift-0.16.0.tar.gz">
+          Download <small>v0.16.0</small>
       </a>
     </p>
     <p>
       <small>
-       <a href="https://www.apache.org/dist/thrift/0.15.0/thrift-0.15.0.tar.gz.md5">MD5</a>
+       <a href="https://www.apache.org/dist/thrift/0.16.0/thrift-0.16.0.tar.gz.md5">MD5</a>
       </small>
       |
       <small>
-       <a href="https://www.apache.org/dist/thrift/0.15.0/thrift-0.15.0.tar.gz.asc">PGP</a>
+       <a href="https://www.apache.org/dist/thrift/0.16.0/thrift-0.16.0.tar.gz.asc">PGP</a>
       </small>
     </p>
     <p>
@@ -301,7 +301,7 @@ service Calculator extends shared.SharedService {
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/c_glib.html b/output/lib/c_glib.html
index ef1b096..0634e67 100644
--- a/output/lib/c_glib.html
+++ b/output/lib/c_glib.html
@@ -107,7 +107,7 @@ representation of the class&#8217; namespace, followed by</li>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/cl.html b/output/lib/cl.html
index 34474c1..3e7818e 100644
--- a/output/lib/cl.html
+++ b/output/lib/cl.html
@@ -306,7 +306,7 @@ service instance whch describes the operations.</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/cpp.html b/output/lib/cpp.html
index 61caac4..4068157 100644
--- a/output/lib/cpp.html
+++ b/output/lib/cpp.html
@@ -367,7 +367,7 @@ cleanup and leave it up to the consuming application, this requirement is not ne
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/csharp.html b/output/lib/csharp.html
index e8a43a1..0a414ec 100644
--- a/output/lib/csharp.html
+++ b/output/lib/csharp.html
@@ -77,7 +77,7 @@
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/d.html b/output/lib/d.html
index 69a10bb..6677b4d 100644
--- a/output/lib/d.html
+++ b/output/lib/d.html
@@ -106,7 +106,7 @@ risk.</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/delphi.html b/output/lib/delphi.html
index 86a3dc3..6f4ab6f 100644
--- a/output/lib/delphi.html
+++ b/output/lib/delphi.html
@@ -88,7 +88,7 @@ with earlier versions (such as Delphi 7) will <em>not</em> work.</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/erl.html b/output/lib/erl.html
index d182270..6d808e1 100644
--- a/output/lib/erl.html
+++ b/output/lib/erl.html
@@ -112,7 +112,7 @@ ok
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/go.html b/output/lib/go.html
index 45c25cd..dce2e60 100644
--- a/output/lib/go.html
+++ b/output/lib/go.html
@@ -194,7 +194,7 @@ excessive cpu overhead.</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/haxe.html b/output/lib/haxe.html
index 539db43..26d673d 100644
--- a/output/lib/haxe.html
+++ b/output/lib/haxe.html
@@ -219,7 +219,7 @@ server.runOnce = true;
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/hs.html b/output/lib/hs.html
deleted file mode 100644
index db667c5..0000000
--- a/output/lib/hs.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-    <meta content="en-us" http-equiv="Content-Language" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
-    <link href="/static/images/favicon.ico" rel="shortcut icon" />
-    <link href="/static/css/style.css" rel="stylesheet" type="text/css" />
-    <link href="/static/css/codehilite.css" rel="stylesheet" type="text/css" />
-    <link href="/static/css/bootstrap.css" media="screen, projection" rel="stylesheet" type="text/css" />
-    <link href="/static/css/thrift.css" media="screen, projection" rel="stylesheet" type="text/css" />
-
-    <script src="/static/js/jquery.min.js"></script>
-    <script src="/static/js/bootstrap-dropdown.js"></script>
-    <script src="/static/js/bootstrap-tab.js"></script>
-    <script src="/static/js/thrift.js"></script>
-
-    <title>Apache Thrift - Haskell library</title>
-  </head>
-  <body>
-    <div class="navbar">
-  <div class="navbar-inner">
-    <div class="container">
-      <a class="brand" href="/">Apache Thrift &trade;</a>
-      <div class="nav-collapse">
-        <ul class="nav pull-right">
-          <li><a href="/download">Download</a></li>
-          <li><a href="/docs">Documentation</a></li>
-          <li><a href="/developers">Developers</a></li>
-          <li><a href="/lib">Libraries</a></li>
-          <li><a href="/tutorial">Tutorial</a></li>
-          <li><a href="/test">Test Suite</a></li>
-          <li><a href="/about">About</a></li>
-          <li class="dropdown">
-            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache <b class="caret"></b></a>
-            <ul class="dropdown-menu">
-              <li><a href="http://www.apache.org/" target="_blank">Apache Home</a></li>
-              <li><a href="http://www.apache.org/licenses/" target="_blank">Apache License v2.0</a></li>
-              <li><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank">Donate</a></li>
-              <li><a href="http://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li>
-              <li><a href="http://www.apache.org/security/" target="_blank">Security</a></li>
-            </ul>
-          </li>
-        </ul>
-      </div>
-    </div>
-  </div>
-</div>
-
-    <div class="container">
-      
-<p><select name="st">
-<option selected="selected" value="commit">commit</option>
-<option value="grep">grep</option>
-<option value="author">author</option>
-<option value="committer">committer</option>
-<option value="pickaxe">pickaxe</option>
-</select> <a href="/repos/asf?p=thrift.git;a=search_help" title="search help">?</a> search:
-<input type="text" name="s" />
-<span title="Extended regular expression"><label><input type="checkbox" name="sr" value="1" />re</label></span>&lt;/div&gt;
-&lt;/form&gt;</p>
-<div class="page_body">
-<br /><br />
-404 - Cannot find file
-<br />
-</div>
-<div class="page_footer">
-<div class="page_footer_text">Apache Thrift</div>
-<a class="rss_logo" href="/repos/asf?p=thrift.git;a=rss;f=lib/hs/README.md" title="history of lib/hs/README.md RSS feed">RSS</a>
-<a class="rss_logo" href="/repos/asf?p=thrift.git;a=atom;f=lib/hs/README.md" title="history of lib/hs/README.md Atom feed">Atom</a>
-</div>
-<script type="text/javascript" src="/static/gitweb.js"></script>
-
-<script type="text/javascript">
-window.onload = function () {
-	var tz_cookie = { name: 'gitweb_tz', expires: 14, path: '/' };
-	onloadTZSetup('local', tz_cookie, 'datetime');
-};
-</script>
-
-<p>&lt;/body&gt;
-&lt;/html&gt;</p>
-
-<p class="snippet_footer">This page was generated by Apache Thrift's <strong>source tree docs</strong>:
-<a href="https://gitbox.apache.org/repos/asf?p=thrift.git;a=blob;hb=HEAD;f=lib/hs/README.md">lib/hs/README.md</a>
-</p>
-
-
-    </div>
-    <div class="container">
-  <hr>
-  <footer class="footer">
-    <div class="row">
-      <div class="span3">
-        <h3>Links</h3>
-        <ul class="unstyled">
-          <li><a href="/download">Download</a></li>
-          <li><a href="/developers">Developers</a></li>
-          <li><a href="/tutorial">Tutorials</a></li>
-        </ul>
-        <ul class="unstyled">
-          <li><a href="/sitemap">Sitemap</a></li>
-        </ul>
-      </div>
-      <div class="span3">
-        <h3>Get Involved</h3>
-        <ul class="unstyled">
-          <li><a href="/mailing">Mailing Lists</a></li>
-          <li><a href="http://issues.apache.org/jira/browse/THRIFT">Issue Tracking</a></li>
-          <li><a href="/docs/HowToContribute">How To Contribute</a></li>
-        </ul>
-      </div>
-      <div class="span6">
-        <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
-        Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
-        Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
-      </div>
-    </div>
-  </footer>
-</div>
-
-  </body>
-</html>
diff --git a/output/lib/index.html b/output/lib/index.html
index c728acf..26b1859 100644
--- a/output/lib/index.html
+++ b/output/lib/index.html
@@ -150,12 +150,6 @@
 
 
 
-  <li><a href="/lib/hs.html">Haskell library</a></li>
-
-
-
-
-
 
 
 
@@ -503,7 +497,7 @@
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/java.html b/output/lib/java.html
index 7119e31..6c13def 100644
--- a/output/lib/java.html
+++ b/output/lib/java.html
@@ -257,7 +257,7 @@ libraries.</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/js.html b/output/lib/js.html
index ffa0341..4e606ca 100644
--- a/output/lib/js.html
+++ b/output/lib/js.html
@@ -203,7 +203,7 @@ console.log("Http/Thrift Server running on port: " + port);
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/netstd.html b/output/lib/netstd.html
index 501a051..902dbf3 100644
--- a/output/lib/netstd.html
+++ b/output/lib/netstd.html
@@ -145,7 +145,7 @@ or</li>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/nodejs.html b/output/lib/nodejs.html
index 7af4e91..f242e5f 100644
--- a/output/lib/nodejs.html
+++ b/output/lib/nodejs.html
@@ -202,7 +202,7 @@ const thriftClient = thrift.createWSClient(MyServiceClient, connection);</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/ocaml.html b/output/lib/ocaml.html
index 2fe6a79..9679555 100644
--- a/output/lib/ocaml.html
+++ b/output/lib/ocaml.html
@@ -168,7 +168,7 @@ does not send all the arguments.</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/perl.html b/output/lib/perl.html
index f29a7da..4e6df64 100644
--- a/output/lib/perl.html
+++ b/output/lib/perl.html
@@ -191,7 +191,7 @@ Use setTimeout instead.</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/php.html b/output/lib/php.html
index 99871cd..f91be10 100644
--- a/output/lib/php.html
+++ b/output/lib/php.html
@@ -130,7 +130,7 @@ Thrift will fill in null stub function definitions.
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/py.html b/output/lib/py.html
index d980498..3bf8b30 100644
--- a/output/lib/py.html
+++ b/output/lib/py.html
@@ -94,7 +94,7 @@ To use the latter, become superuser and do make install.</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/rb.html b/output/lib/rb.html
index 6bc9edd..3cf1c9e 100644
--- a/output/lib/rb.html
+++ b/output/lib/rb.html
@@ -103,7 +103,7 @@ in the full thrift distribution.</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/lib/st.html b/output/lib/st.html
index 3466bfe..faa37bb 100644
--- a/output/lib/st.html
+++ b/output/lib/st.html
@@ -92,7 +92,7 @@ calc addNum1: 10 num2: 15</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/mailing.html b/output/mailing.html
index 7237876..60cd654 100644
--- a/output/mailing.html
+++ b/output/mailing.html
@@ -137,7 +137,7 @@
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/sitemap.html b/output/sitemap.html
index 9537fa0..6d07785 100644
--- a/output/sitemap.html
+++ b/output/sitemap.html
@@ -192,14 +192,6 @@
 
 
 
-  <li><a href="/tutorial/hs.html">Haskell</a></li>
-
-
-
-  <li><a href="/lib/hs.html">Haskell library</a></li>
-
-
-
   <li><a href="/docs/idl.html">Interface Description Language (IDL)</a></li>
 
 
@@ -358,7 +350,7 @@
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/test/ThriftTest.thrift b/output/test/ThriftTest.thrift
index 3b1507f..af15cac 100644
--- a/output/test/ThriftTest.thrift
+++ b/output/test/ThriftTest.thrift
@@ -500,7 +500,7 @@ struct OptionalBinary {
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/test/index.html b/output/test/index.html
index a3d8815..28b7217 100644
--- a/output/test/index.html
+++ b/output/test/index.html
@@ -284,7 +284,7 @@ directory <a href="keys">test/keys</a></p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/test/keys.html b/output/test/keys.html
index 3d95d21..ee5c5ec 100644
--- a/output/test/keys.html
+++ b/output/test/keys.html
@@ -198,7 +198,7 @@ openssl s_server -accept 9090 -www
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/c_glib.html b/output/tutorial/c_glib.html
index d3099a8..3178931 100644
--- a/output/tutorial/c_glib.html
+++ b/output/tutorial/c_glib.html
@@ -786,7 +786,7 @@ All Apache Thrift tutorials require that you have:
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/cpp.html b/output/tutorial/cpp.html
index adb4015..859e680 100644
--- a/output/tutorial/cpp.html
+++ b/output/tutorial/cpp.html
@@ -325,7 +325,7 @@ All Apache Thrift tutorials require that you have:
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/csharp.html b/output/tutorial/csharp.html
index bb893e3..c1e1c4a 100644
--- a/output/tutorial/csharp.html
+++ b/output/tutorial/csharp.html
@@ -101,7 +101,7 @@ All Apache Thrift tutorials require that you have:
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/d.html b/output/tutorial/d.html
index 45966a4..2757f0b 100644
--- a/output/tutorial/d.html
+++ b/output/tutorial/d.html
@@ -250,7 +250,7 @@ All Apache Thrift tutorials require that you have:
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/dart.html b/output/tutorial/dart.html
index f6921a2..3ef898e 100644
--- a/output/tutorial/dart.html
+++ b/output/tutorial/dart.html
@@ -545,7 +545,7 @@ All Apache Thrift tutorials require that you have:
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/delphi.html b/output/tutorial/delphi.html
index c1c4afd..561c182 100644
--- a/output/tutorial/delphi.html
+++ b/output/tutorial/delphi.html
@@ -365,7 +365,7 @@ All Apache Thrift tutorials require that you have:
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/go.html b/output/tutorial/go.html
index fe08093..18a0002 100644
--- a/output/tutorial/go.html
+++ b/output/tutorial/go.html
@@ -320,7 +320,7 @@ To use a specific version of the library, either clone the repository for that v
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/graphviz.html b/output/tutorial/graphviz.html
index 0f047d1..825a124 100644
--- a/output/tutorial/graphviz.html
+++ b/output/tutorial/graphviz.html
@@ -127,7 +127,7 @@ generator to render those exceptions arrows (i.e. function throws) by using the
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/haxe.html b/output/tutorial/haxe.html
index 6de1428..1b1eb12 100644
--- a/output/tutorial/haxe.html
+++ b/output/tutorial/haxe.html
@@ -519,7 +519,7 @@ there is currently no way to pass command line arguments to the program.</p>
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/hs.html b/output/tutorial/hs.html
deleted file mode 100644
index efb0718..0000000
--- a/output/tutorial/hs.html
+++ /dev/null
@@ -1,182 +0,0 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-    <meta content="en-us" http-equiv="Content-Language" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
-    <link href="/static/images/favicon.ico" rel="shortcut icon" />
-    <link href="/static/css/style.css" rel="stylesheet" type="text/css" />
-    <link href="/static/css/codehilite.css" rel="stylesheet" type="text/css" />
-    <link href="/static/css/bootstrap.css" media="screen, projection" rel="stylesheet" type="text/css" />
-    <link href="/static/css/thrift.css" media="screen, projection" rel="stylesheet" type="text/css" />
-
-    <script src="/static/js/jquery.min.js"></script>
-    <script src="/static/js/bootstrap-dropdown.js"></script>
-    <script src="/static/js/bootstrap-tab.js"></script>
-    <script src="/static/js/thrift.js"></script>
-
-    <title>Apache Thrift - Haskell</title>
-  </head>
-  <body>
-    <div class="navbar">
-  <div class="navbar-inner">
-    <div class="container">
-      <a class="brand" href="/">Apache Thrift &trade;</a>
-      <div class="nav-collapse">
-        <ul class="nav pull-right">
-          <li><a href="/download">Download</a></li>
-          <li><a href="/docs">Documentation</a></li>
-          <li><a href="/developers">Developers</a></li>
-          <li><a href="/lib">Libraries</a></li>
-          <li><a href="/tutorial">Tutorial</a></li>
-          <li><a href="/test">Test Suite</a></li>
-          <li><a href="/about">About</a></li>
-          <li class="dropdown">
-            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache <b class="caret"></b></a>
-            <ul class="dropdown-menu">
-              <li><a href="http://www.apache.org/" target="_blank">Apache Home</a></li>
-              <li><a href="http://www.apache.org/licenses/" target="_blank">Apache License v2.0</a></li>
-              <li><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank">Donate</a></li>
-              <li><a href="http://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li>
-              <li><a href="http://www.apache.org/security/" target="_blank">Security</a></li>
-            </ul>
-          </li>
-        </ul>
-      </div>
-    </div>
-  </div>
-</div>
-
-    <div class="container">
-      <h2>Haskell Tutorial</h2>
-
-<h3>Introduction</h3>
-
-<p>
-All Apache Thrift tutorials require that you have:
-
-<ol>
-  <li>The Apache Thrift Compiler and Libraries, see <a href="/download">Download</a> and <a href="/docs/BuildingFromSource">Building from Source</a> for more details.</li>
-  <li>Generated the <a href="https://github.com/apache/thrift/blob/master/tutorial/tutorial.thrift">tutorial.thrift</a> and <a href="https://github.com/apache/thrift/blob/master/tutorial/shared.thrift">shared.thrift</a> files:<br>
-    <pre><code>thrift -r --gen hs tutorial.thrift</code></pre>
-  </li>
-  <li>Followed all prerequisites listed below.</li>
-</ol>
-
-<h3 id="prerequisites">Prerequisites</h3>
-
-<h3 id="client">Client</h3>
-
-<div class="highlight"><pre class="codehilite"><code><span class="o">&lt;</span><span class="n">input</span> <span class="n">name</span><span class="o">=</span><span class="s">"a"</span> <span class="n">type</span><span class="o">=</span><span class="s">"hidden"</span> <span class="n">value</span><span class="o">=</span><span class="s">"search"</span> <span class="o">/&gt;</span>
-<span class="o">&lt;</span><span class="n">input</span> <span class="n">name</span><span class="o">=</span><span class="s">"h"</span> <span class="n">type</span><span class="o">=</span><span class="s">"hidden"</span> <span class="n">value</span><span class="o">=</span><span class="s">"HEAD"</span> <span class="o">/&gt;</span>
-<span class="o">&lt;</span><span class="n">select</span> <span class="n">name</span><span class="o">=</span><span class="s">"st"</span> <span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">option</span> <span class="n">selected</span><span class="o">=</span><span class="s">"selected"</span> <span class="n">value</span><span class="o">=</span><span class="s">"commit"</span><span class="o">&gt;</span><span class="n">commit</span><span class="o">&lt;/</span><span class="n">option</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">option</span> <span class="n">value</span><span class="o">=</span><span class="s">"grep"</span><span class="o">&gt;</span><span class="n">grep</span><span class="o">&lt;/</span><span class="n">option</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">option</span> <span class="n">value</span><span class="o">=</span><span class="s">"author"</span><span class="o">&gt;</span><span class="n">author</span><span class="o">&lt;/</span><span class="n">option</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">option</span> <span class="n">value</span><span class="o">=</span><span class="s">"committer"</span><span class="o">&gt;</span><span class="n">committer</span><span class="o">&lt;/</span><span class="n">option</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">option</span> <span class="n">value</span><span class="o">=</span><span class="s">"pickaxe"</span><span class="o">&gt;</span><span class="n">pickaxe</span><span class="o">&lt;/</span><span class="n">option</span><span class="o">&gt;</span>
-<span class="o">&lt;/</span><span class="n">select</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s">"/repos/asf?p=thrift.git;a=search_help"</span> <span class="n">title</span><span class="o">=</span><span class="s">"search help"</span><span class="o">&gt;?&lt;/</span><span class="n">a</span><span class="o">&gt;</span> <span class="n">search</span><span class="o">:</span>
-<span class="o">&lt;</span><span class="n">input</span> <span class="n">type</span><span class="o">=</span><span class="s">"text"</span> <span class="n">name</span><span class="o">=</span><span class="s">"s"</span>  <span class="o">/&gt;</span>
-<span class="o">&lt;</span><span class="n">span</span> <span class="n">title</span><span class="o">=</span><span class="s">"Extended regular expression"</span><span class="o">&gt;&lt;</span><span class="n">label</span><span class="o">&gt;&lt;</span><span class="n">input</span> <span class="n">type</span><span class="o">=</span><span class="s">"checkbox"</span> <span class="n">name</span><span class="o">=</span><span class="s">"sr"</span> <span class="n">value</span><span class="o">=</spa [...]
-<span class="o">&lt;/</span><span class="n">form</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">div</span> <span class="k">class</span><span class="o">=</span><span class="s">"page_body"</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">br</span> <span class="o">/&gt;&lt;</span><span class="n">br</span> <span class="o">/&gt;</span>
-<span class="mi">404</span> <span class="o">-</span> <span class="n">Cannot</span> <span class="n">find</span> <span class="n">file</span>
-<span class="o">&lt;</span><span class="n">br</span> <span class="o">/&gt;</span>
-<span class="o">&lt;/</span><span class="n">div</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">div</span> <span class="k">class</span><span class="o">=</span><span class="s">"page_footer"</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">div</span> <span class="k">class</span><span class="o">=</span><span class="s">"page_footer_text"</span><span class="o">&gt;</span><span class="n">Apache</span> <span class="n">Thrift</span><span class="o">&lt;/</span><span class="n">div</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">a</span> <span class="k">class</span><span class="o">=</span><span class="s">"rss_logo"</span> <span class="n">href</span><span class="o">=</span><span class="s">"/repos/asf?p=thrift.git;a=rss;f=tutorial/hs/HaskellClient.hs"</span> <span class="n">title</span><span class="o">=</span><span class="s">"history of tutorial/hs/HaskellClient.hs RSS feed"</span><span class="o">&gt;</span><span class="n">RSS</span><span class="o">&lt;/</span><span class [...]
-<span class="o">&lt;</span><span class="n">a</span> <span class="k">class</span><span class="o">=</span><span class="s">"rss_logo"</span> <span class="n">href</span><span class="o">=</span><span class="s">"/repos/asf?p=thrift.git;a=atom;f=tutorial/hs/HaskellClient.hs"</span> <span class="n">title</span><span class="o">=</span><span class="s">"history of tutorial/hs/HaskellClient.hs Atom feed"</span><span class="o">&gt;</span><span class="n">Atom</span><span class="o">&lt;/</span><span cl [...]
-<span class="o">&lt;/</span><span class="n">div</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">script</span> <span class="n">type</span><span class="o">=</span><span class="s">"text/javascript"</span> <span class="n">src</span><span class="o">=</span><span class="s">"/static/gitweb.js"</span><span class="o">&gt;&lt;/</span><span class="n">script</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">script</span> <span class="n">type</span><span class="o">=</span><span class="s">"text/javascript"</span><span class="o">&gt;</span>
-<span class="n">window</span><span class="p">.</span><span class="n">onload</span> <span class="o">=</span> <span class="n">function</span> <span class="p">()</span> <span class="p">{</span>
-	<span class="n">var</span> <span class="n">tz_cookie</span> <span class="o">=</span> <span class="p">{</span> <span class="n">name</span><span class="o">:</span> <span class="err">'</span><span class="n">gitweb_tz</span><span class="err">'</span><span class="p">,</span> <span class="n">expires</span><span class="o">:</span> <span class="mi">14</span><span class="p">,</span> <span class="n">path</span><span class="o">:</span> <span class="sc">'/'</span> <span class="p">};</span>
-	<span class="n">onloadTZSetup</span><span class="p">(</span><span class="err">'</span><span class="n">local</span><span class="err">'</span><span class="p">,</span> <span class="n">tz_cookie</span><span class="p">,</span> <span class="err">'</span><span class="n">datetime</span><span class="err">'</span><span class="p">);</span>
-<span class="p">};</span>
-<span class="o">&lt;/</span><span class="n">script</span><span class="o">&gt;</span>
-<span class="o">&lt;/</span><span class="n">body</span><span class="o">&gt;</span>
-<span class="o">&lt;/</span><span class="n">html</span><span class="o">&gt;</span></code></pre></div>
-<p class="snippet_footer">This snippet was generated by Apache Thrift's <strong>source tree docs</strong>:
-<a href="https://gitbox.apache.org/repos/asf?p=thrift.git;a=blob;hb=HEAD;f=tutorial/hs/HaskellClient.hs">tutorial/hs/HaskellClient.hs</a>
-</p>
-
-<h3 id="server">Server</h3>
-
-<div class="highlight"><pre class="codehilite"><code><span class="o">&lt;</span><span class="n">input</span> <span class="n">name</span><span class="o">=</span><span class="s">"a"</span> <span class="n">type</span><span class="o">=</span><span class="s">"hidden"</span> <span class="n">value</span><span class="o">=</span><span class="s">"search"</span> <span class="o">/&gt;</span>
-<span class="o">&lt;</span><span class="n">input</span> <span class="n">name</span><span class="o">=</span><span class="s">"h"</span> <span class="n">type</span><span class="o">=</span><span class="s">"hidden"</span> <span class="n">value</span><span class="o">=</span><span class="s">"HEAD"</span> <span class="o">/&gt;</span>
-<span class="o">&lt;</span><span class="n">select</span> <span class="n">name</span><span class="o">=</span><span class="s">"st"</span> <span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">option</span> <span class="n">selected</span><span class="o">=</span><span class="s">"selected"</span> <span class="n">value</span><span class="o">=</span><span class="s">"commit"</span><span class="o">&gt;</span><span class="n">commit</span><span class="o">&lt;/</span><span class="n">option</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">option</span> <span class="n">value</span><span class="o">=</span><span class="s">"grep"</span><span class="o">&gt;</span><span class="n">grep</span><span class="o">&lt;/</span><span class="n">option</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">option</span> <span class="n">value</span><span class="o">=</span><span class="s">"author"</span><span class="o">&gt;</span><span class="n">author</span><span class="o">&lt;/</span><span class="n">option</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">option</span> <span class="n">value</span><span class="o">=</span><span class="s">"committer"</span><span class="o">&gt;</span><span class="n">committer</span><span class="o">&lt;/</span><span class="n">option</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">option</span> <span class="n">value</span><span class="o">=</span><span class="s">"pickaxe"</span><span class="o">&gt;</span><span class="n">pickaxe</span><span class="o">&lt;/</span><span class="n">option</span><span class="o">&gt;</span>
-<span class="o">&lt;/</span><span class="n">select</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s">"/repos/asf?p=thrift.git;a=search_help"</span> <span class="n">title</span><span class="o">=</span><span class="s">"search help"</span><span class="o">&gt;?&lt;/</span><span class="n">a</span><span class="o">&gt;</span> <span class="n">search</span><span class="o">:</span>
-<span class="o">&lt;</span><span class="n">input</span> <span class="n">type</span><span class="o">=</span><span class="s">"text"</span> <span class="n">name</span><span class="o">=</span><span class="s">"s"</span>  <span class="o">/&gt;</span>
-<span class="o">&lt;</span><span class="n">span</span> <span class="n">title</span><span class="o">=</span><span class="s">"Extended regular expression"</span><span class="o">&gt;&lt;</span><span class="n">label</span><span class="o">&gt;&lt;</span><span class="n">input</span> <span class="n">type</span><span class="o">=</span><span class="s">"checkbox"</span> <span class="n">name</span><span class="o">=</span><span class="s">"sr"</span> <span class="n">value</span><span class="o">=</spa [...]
-<span class="o">&lt;/</span><span class="n">form</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">div</span> <span class="k">class</span><span class="o">=</span><span class="s">"page_body"</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">br</span> <span class="o">/&gt;&lt;</span><span class="n">br</span> <span class="o">/&gt;</span>
-<span class="mi">404</span> <span class="o">-</span> <span class="n">Cannot</span> <span class="n">find</span> <span class="n">file</span>
-<span class="o">&lt;</span><span class="n">br</span> <span class="o">/&gt;</span>
-<span class="o">&lt;/</span><span class="n">div</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">div</span> <span class="k">class</span><span class="o">=</span><span class="s">"page_footer"</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">div</span> <span class="k">class</span><span class="o">=</span><span class="s">"page_footer_text"</span><span class="o">&gt;</span><span class="n">Apache</span> <span class="n">Thrift</span><span class="o">&lt;/</span><span class="n">div</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">a</span> <span class="k">class</span><span class="o">=</span><span class="s">"rss_logo"</span> <span class="n">href</span><span class="o">=</span><span class="s">"/repos/asf?p=thrift.git;a=rss;f=tutorial/hs/HaskellServer.hs"</span> <span class="n">title</span><span class="o">=</span><span class="s">"history of tutorial/hs/HaskellServer.hs RSS feed"</span><span class="o">&gt;</span><span class="n">RSS</span><span class="o">&lt;/</span><span class [...]
-<span class="o">&lt;</span><span class="n">a</span> <span class="k">class</span><span class="o">=</span><span class="s">"rss_logo"</span> <span class="n">href</span><span class="o">=</span><span class="s">"/repos/asf?p=thrift.git;a=atom;f=tutorial/hs/HaskellServer.hs"</span> <span class="n">title</span><span class="o">=</span><span class="s">"history of tutorial/hs/HaskellServer.hs Atom feed"</span><span class="o">&gt;</span><span class="n">Atom</span><span class="o">&lt;/</span><span cl [...]
-<span class="o">&lt;/</span><span class="n">div</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">script</span> <span class="n">type</span><span class="o">=</span><span class="s">"text/javascript"</span> <span class="n">src</span><span class="o">=</span><span class="s">"/static/gitweb.js"</span><span class="o">&gt;&lt;/</span><span class="n">script</span><span class="o">&gt;</span>
-<span class="o">&lt;</span><span class="n">script</span> <span class="n">type</span><span class="o">=</span><span class="s">"text/javascript"</span><span class="o">&gt;</span>
-<span class="n">window</span><span class="p">.</span><span class="n">onload</span> <span class="o">=</span> <span class="n">function</span> <span class="p">()</span> <span class="p">{</span>
-	<span class="n">var</span> <span class="n">tz_cookie</span> <span class="o">=</span> <span class="p">{</span> <span class="n">name</span><span class="o">:</span> <span class="err">'</span><span class="n">gitweb_tz</span><span class="err">'</span><span class="p">,</span> <span class="n">expires</span><span class="o">:</span> <span class="mi">14</span><span class="p">,</span> <span class="n">path</span><span class="o">:</span> <span class="sc">'/'</span> <span class="p">};</span>
-	<span class="n">onloadTZSetup</span><span class="p">(</span><span class="err">'</span><span class="n">local</span><span class="err">'</span><span class="p">,</span> <span class="n">tz_cookie</span><span class="p">,</span> <span class="err">'</span><span class="n">datetime</span><span class="err">'</span><span class="p">);</span>
-<span class="p">};</span>
-<span class="o">&lt;/</span><span class="n">script</span><span class="o">&gt;</span>
-<span class="o">&lt;/</span><span class="n">body</span><span class="o">&gt;</span>
-<span class="o">&lt;/</span><span class="n">html</span><span class="o">&gt;</span></code></pre></div>
-<p class="snippet_footer">This snippet was generated by Apache Thrift's <strong>source tree docs</strong>:
-<a href="https://gitbox.apache.org/repos/asf?p=thrift.git;a=blob;hb=HEAD;f=tutorial/hs/HaskellServer.hs">tutorial/hs/HaskellServer.hs</a>
-</p>
-
-<h2 id="additional-information">Additional Information</h2>
-
-
-
-    </div>
-    <div class="container">
-  <hr>
-  <footer class="footer">
-    <div class="row">
-      <div class="span3">
-        <h3>Links</h3>
-        <ul class="unstyled">
-          <li><a href="/download">Download</a></li>
-          <li><a href="/developers">Developers</a></li>
-          <li><a href="/tutorial">Tutorials</a></li>
-        </ul>
-        <ul class="unstyled">
-          <li><a href="/sitemap">Sitemap</a></li>
-        </ul>
-      </div>
-      <div class="span3">
-        <h3>Get Involved</h3>
-        <ul class="unstyled">
-          <li><a href="/mailing">Mailing Lists</a></li>
-          <li><a href="http://issues.apache.org/jira/browse/THRIFT">Issue Tracking</a></li>
-          <li><a href="/docs/HowToContribute">How To Contribute</a></li>
-        </ul>
-      </div>
-      <div class="span6">
-        <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
-        Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
-        Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
-      </div>
-    </div>
-  </footer>
-</div>
-
-  </body>
-</html>
diff --git a/output/tutorial/index.html b/output/tutorial/index.html
index 3df77c9..9797c9c 100644
--- a/output/tutorial/index.html
+++ b/output/tutorial/index.html
@@ -183,12 +183,6 @@ Both files will be used to demonstrate how to build a Thrift client and server p
 
 
 
-  <li><a href="/tutorial/hs.html">Haskell</a></li>
-
-
-
-
-
 
 
 
@@ -301,7 +295,7 @@ Both files will be used to demonstrate how to build a Thrift client and server p
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/java.html b/output/tutorial/java.html
index b1ea541..1330d9c 100644
--- a/output/tutorial/java.html
+++ b/output/tutorial/java.html
@@ -425,7 +425,7 @@ All Apache Thrift tutorials require that you have:
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/js.html b/output/tutorial/js.html
index ddae605..ad9ce8e 100644
--- a/output/tutorial/js.html
+++ b/output/tutorial/js.html
@@ -234,7 +234,7 @@ i32 calculate(1:i32 logid, 2:Work w) throws (1:InvalidOperation ouch),
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/netstd.html b/output/tutorial/netstd.html
index 49ff67b..4e7e31a 100644
--- a/output/tutorial/netstd.html
+++ b/output/tutorial/netstd.html
@@ -92,10 +92,25 @@ All Apache Thrift tutorials require that you have:
 </span>
 <span class="k">namespace</span> <span class="n">Client</span>
 <span class="p">{</span>
+    <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">LoggingHelper</span>
+    <span class="p">{</span>
+        <span class="k">public</span> <span class="k">static</span> <span class="n">ILoggerFactory</span> <span class="n">LogFactory</span> <span class="p">{</span> <span class="n">get</span><span class="p">;</span> <span class="p">}</span> <span class="o">=</span> <span class="n">LoggerFactory</span><span class="p">.</span><span class="n">Create</span><span class="p">(</span><span class="n">builder</span> <span class="o">=&gt;</span> <span class="p">{</span>
+            <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">builder</span><span class="p">);</span>
+        <span class="p">});</span>
+
+        <span class="k">public</span> <span class="k">static</span> <span class="kt">void</span> <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">ILoggingBuilder</span> <span class="n">logging</span><span class="p">)</span>
+        <span class="p">{</span>
+            <span class="n">logging</span><span class="p">.</span><span class="n">SetMinimumLevel</span><span class="p">(</span><span class="n">LogLevel</span><span class="p">.</span><span class="n">Trace</span><span class="p">);</span>
+            <span class="n">logging</span><span class="p">.</span><span class="n">AddConsole</span><span class="p">();</span>
+            <span class="n">logging</span><span class="p">.</span><span class="n">AddDebug</span><span class="p">();</span>
+        <span class="p">}</span>
+
+        <span class="k">public</span> <span class="k">static</span> <span class="n">ILogger</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">CreateLogger</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="p">()</span> <span class="o">=&gt;</span> <span class="n">LogFactory</span><span class="p">.</span><span class="n">CreateLogger</span><span class="o">&lt;</span><span class="n">T</span><spa [...]
+    <span class="p">}</span>
+
     <span class="k">public</span> <span class="k">class</span> <span class="nc">Program</span>
     <span class="p">{</span>
-        <span class="k">private</span> <span class="k">static</span> <span class="n">readonly</span> <span class="n">ServiceCollection</span> <span class="n">ServiceCollection</span> <span class="o">=</span> <span class="k">new</span><span class="p">();</span>
-        <span class="k">private</span> <span class="k">static</span> <span class="n">ILogger</span> <span class="n">Logger</span><span class="p">;</span>
+        <span class="k">private</span> <span class="k">static</span> <span class="n">readonly</span> <span class="n">ILogger</span> <span class="n">Logger</span> <span class="o">=</span> <span class="n">LoggingHelper</span><span class="p">.</span><span class="n">CreateLogger</span><span class="o">&lt;</span><span class="n">Program</span><span class="o">&gt;</span><span class="p">();</span>
         <span class="k">private</span> <span class="k">static</span> <span class="n">readonly</span> <span class="n">TConfiguration</span> <span class="n">Configuration</span> <span class="o">=</span> <span class="n">null</span><span class="p">;</span>  <span class="c1">// new TConfiguration() if  needed</span>
 
         <span class="k">private</span> <span class="k">static</span> <span class="kt">void</span> <span class="n">DisplayHelp</span><span class="p">()</span>
@@ -139,47 +154,35 @@ All Apache Thrift tutorials require that you have:
         <span class="p">{</span>
             <span class="n">args</span> <span class="o">??=</span> <span class="n">Array</span><span class="p">.</span><span class="n">Empty</span><span class="o">&lt;</span><span class="n">string</span><span class="o">&gt;</span><span class="p">();</span>
 
-            <span class="n">ServiceCollection</span><span class="p">.</span><span class="n">AddLogging</span><span class="p">(</span><span class="n">logging</span> <span class="o">=&gt;</span> <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">logging</span><span class="p">));</span>
-            <span class="k">using</span> <span class="p">(</span><span class="n">var</span> <span class="n">serviceProvider</span> <span class="o">=</span> <span class="n">ServiceCollection</span><span class="p">.</span><span class="n">BuildServiceProvider</span><span class="p">())</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">Any</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-help"</span><span class="p">,</span> <span class="n">StringComparison</span><span class="p">.</span><span class="n">OrdinalIgnoreCase</span><span class= [...]
             <span class="p">{</span>
-                <span class="n">Logger</span> <span class="o">=</span> <span class="n">serviceProvider</span><span class="p">.</span><span class="n">GetService</span><span class="o">&lt;</span><span class="n">ILoggerFactory</span><span class="o">&gt;</span><span class="p">().</span><span class="n">CreateLogger</span><span class="p">(</span><span class="n">nameof</span><span class="p">(</span><span class="n">Client</span><span class="p">));</span>
-
-                <span class="k">if</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">Any</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-help"</span><span class="p">,</span> <span class="n">StringComparison</span><span class="p">.</span><span class="n">OrdinalIgnoreCase</span><span cl [...]
-                <span class="p">{</span>
-                    <span class="n">DisplayHelp</span><span class="p">();</span>
-                    <span class="k">return</span><span class="p">;</span>
-                <span class="p">}</span>
+                <span class="n">DisplayHelp</span><span class="p">();</span>
+                <span class="k">return</span><span class="p">;</span>
+            <span class="p">}</span>
 
-                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Starting client..."</span><span class="p">);</span>
+            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Starting client..."</span><span class="p">);</span>
 
-                <span class="k">using</span> <span class="p">(</span><span class="n">var</span> <span class="n">source</span> <span class="o">=</span> <span class="k">new</span> <span class="n">CancellationTokenSource</span><span class="p">())</span>
-                <span class="p">{</span>
-                    <span class="n">RunAsync</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">source</span><span class="p">.</span><span class="n">Token</span><span class="p">).</span><span class="n">GetAwaiter</span><span class="p">().</span><span class="n">GetResult</span><span class="p">();</span>
-                <span class="p">}</span>
+            <span class="k">using</span> <span class="p">(</span><span class="n">var</span> <span class="n">source</span> <span class="o">=</span> <span class="k">new</span> <span class="n">CancellationTokenSource</span><span class="p">())</span>
+            <span class="p">{</span>
+                <span class="n">RunAsync</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">source</span><span class="p">.</span><span class="n">Token</span><span class="p">).</span><span class="n">GetAwaiter</span><span class="p">().</span><span class="n">GetResult</span><span class="p">();</span>
             <span class="p">}</span>
         <span class="p">}</span>
 
-        <span class="k">private</span> <span class="k">static</span> <span class="kt">void</span> <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">ILoggingBuilder</span> <span class="n">logging</span><span class="p">)</span>
-        <span class="p">{</span>
-            <span class="n">logging</span><span class="p">.</span><span class="n">SetMinimumLevel</span><span class="p">(</span><span class="n">LogLevel</span><span class="p">.</span><span class="n">Trace</span><span class="p">);</span>
-            <span class="n">logging</span><span class="p">.</span><span class="n">AddConsole</span><span class="p">();</span>
-            <span class="n">logging</span><span class="p">.</span><span class="n">AddDebug</span><span class="p">();</span>
-        <span class="p">}</span>
-
+        
         <span class="k">private</span> <span class="k">static</span> <span class="n">async</span> <span class="n">Task</span> <span class="n">RunAsync</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">,</span> <span class="n">CancellationToken</span> <span class="n">cancellationToken</span><span class="p">)</span>
         <span class="p">{</span>
             <span class="n">var</span> <span class="n">numClients</span> <span class="o">=</span> <span class="n">GetNumberOfClients</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
 
-            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"Selected # of clients: {numClients}"</span><span class="p">);</span>
+            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Selected # of clients: {numClients}"</span><span class="p">,</span> <span class="n">numClients</span><span class="p">);</span>
 
             <span class="n">var</span> <span class="n">transport</span> <span class="o">=</span> <span class="n">GetTransport</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
-            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"Selected client transport: {transport}"</span><span class="p">);</span>
+            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Selected client transport: {transport}"</span><span class="p">,</span> <span class="n">transport</span><span class="p">);</span>
 
             <span class="n">var</span> <span class="n">protocol</span> <span class="o">=</span> <span class="n">MakeProtocol</span><span class="p">(</span> <span class="n">args</span><span class="p">,</span> <span class="n">MakeTransport</span><span class="p">(</span><span class="n">args</span><span class="p">));</span>
-            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"Selected client protocol: {GetProtocol(args)}"</span><span class="p">);</span>
+            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Selected client protocol: {GetProtocol(args)}"</span><span class="p">,</span> <span class="n">GetProtocol</span><span class="p">(</span><span class="n">args</span><span class="p">));</span>
 
             <span class="n">var</span> <span class="n">mplex</span> <span class="o">=</span> <span class="n">GetMultiplex</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
-            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Multiplex "</span> <span class="o">+</span> <span class="p">(</span><span class="n">mplex</span> <span class="o">?</span> <span class="s">"yes"</span> <span class="o">:</span> <span class="s">"no"</span><span class="p">));</span>
+            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Multiplex {mplex}"</span><span class="p">,</span> <span class="n">mplex</span><span class="p">);</span>
 
             <span class="n">var</span> <span class="n">tasks</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Task</span><span class="p">[</span><span class="n">numClients</span><span class="p">];</span>
             <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">numClients</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
@@ -293,7 +296,7 @@ All Apache Thrift tutorials require that you have:
         <span class="p">{</span>
             <span class="n">var</span> <span class="n">numClients</span> <span class="o">=</span> <span class="n">args</span><span class="p">.</span><span class="n">FirstOrDefault</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-mc"</span><span class="p">))</span><span class="o">?</span><span class="p">.</span><span class="n">Split< [...]
 
-            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"Selected # of clients: {numClients}"</span><span class="p">);</span>
+            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Selected # of clients: {numClients}"</span><span class="p">,</span> <span class="n">numClients</span><span class="p">);</span>
 
             <span class="k">if</span> <span class="p">(</span><span class="kt">int</span><span class="p">.</span><span class="n">TryParse</span><span class="p">(</span><span class="n">numClients</span><span class="p">,</span> <span class="n">out</span> <span class="kt">int</span> <span class="n">c</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="mi">0</span> <span class="o">&lt;</span> <span class="n">c</span><span class="p">)</span> < [...]
                 <span class="k">return</span> <span class="n">c</span><span class="p">;</span>
@@ -363,7 +366,7 @@ All Apache Thrift tutorials require that you have:
                 <span class="p">}</span>
                 <span class="k">catch</span> <span class="p">(</span><span class="n">Exception</span> <span class="n">ex</span><span class="p">)</span>
                 <span class="p">{</span>
-                    <span class="n">Logger</span><span class="p">.</span><span class="n">LogError</span><span class="p">(</span><span class="n">ex</span><span class="p">.</span><span class="n">ToString</span><span class="p">());</span>
+                    <span class="n">Logger</span><span class="p">.</span><span class="n">LogError</span><span class="p">(</span><span class="s">"{ex}"</span><span class="p">,</span><span class="n">ex</span><span class="p">);</span>
                 <span class="p">}</span>
                 <span class="n">finally</span>
                 <span class="p">{</span>
@@ -372,7 +375,7 @@ All Apache Thrift tutorials require that you have:
             <span class="p">}</span>
             <span class="k">catch</span> <span class="p">(</span><span class="n">TApplicationException</span> <span class="n">x</span><span class="p">)</span>
             <span class="p">{</span>
-                <span class="n">Logger</span><span class="p">.</span><span class="n">LogError</span><span class="p">(</span><span class="n">x</span><span class="p">.</span><span class="n">ToString</span><span class="p">());</span>
+                <span class="n">Logger</span><span class="p">.</span><span class="n">LogError</span><span class="p">(</span><span class="s">"{x}"</span><span class="p">,</span><span class="n">x</span><span class="p">);</span>
             <span class="p">}</span>
         <span class="p">}</span>
 
@@ -382,12 +385,12 @@ All Apache Thrift tutorials require that you have:
 
             <span class="c1">// Async version</span>
 
-            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"{client.ClientId} Ping()"</span><span class="p">);</span>
+            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"{client.ClientId} Ping()"</span><span class="p">,</span> <span class="n">client</span><span class="p">.</span><span class="n">ClientId</span><span class="p">);</span>
             <span class="n">await</span> <span class="n">client</span><span class="p">.</span><span class="n">ping</span><span class="p">(</span><span class="n">cancellationToken</span><span class="p">);</span>
 
-            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"{client.ClientId} Add(1,1)"</span><span class="p">);</span>
+            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"{client.ClientId} Add(1,1)"</span><span class="p">,</span> <span class="n">client</span><span class="p">.</span><span class="n">ClientId</span><span class="p">);</span>
             <span class="n">var</span> <span class="n">sum</span> <span class="o">=</span> <span class="n">await</span> <span class="n">client</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">cancellationToken</span><span class="p">);</span>
-            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"{client.ClientId} Add(1,1)={sum}"</span><span class="p">);</span>
+            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"{client.ClientId} Add(1,1)={sum}"</span><span class="p">,</span> <span class="n">client</span><span class="p">.</span><span class="n">ClientId</span><span class="p">,</span> <span class="n">sum</span><span class="p">);</span>
 
             <span class="n">var</span> <span class="n">work</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Work</span>
             <span class="p">{</span>
@@ -398,15 +401,12 @@ All Apache Thrift tutorials require that you have:
 
             <span class="k">try</span>
             <span class="p">{</span>
-                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"{client.ClientId} Calculate(1)"</span><span class="p">);</span>
+                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"{client.ClientId} Calculate(1)"</span><span class="p">,</span> <span class="n">client</span><span class="p">.</span><span class="n">ClientId</span><span class="p">);</span>
                 <span class="n">await</span> <span class="n">client</span><span class="p">.</span><span class="n">calculate</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">work</span><span class="p">,</span> <span class="n">cancellationToken</span><span class="p">);</span>
-                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"{client.ClientId} Whoa we can divide by 0"</span><span class="p">);</span>
+                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"{client.ClientId} Whoa we can divide by 0"</span><span class="p">,</span> <span class="n">client</span><span class="p">.</span><span class="n">ClientId</span><span class="p">);</span>
             <span class="p">}</span>
             <span class="k">catch</span> <span class="p">(</span><span class="n">InvalidOperation</span> <span class="n">io</span><span class="p">)</span>
             <span class="p">{</span>
-                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"{client.ClientId} Invalid operation: "</span> <span class="o">+</span> <span class="n">io</span><span class="p">);</span>
-            <span class="p">}</span>
-
 </code></pre></div>
 <p class="snippet_footer">This snippet was generated by Apache Thrift's <strong>source tree docs</strong>:
 <a href="https://gitbox.apache.org/repos/asf?p=thrift.git;a=blob;hb=HEAD;f=tutorial/netstd/Client/Program.cs">tutorial/netstd/Client/Program.cs</a>
@@ -437,53 +437,55 @@ All Apache Thrift tutorials require that you have:
 <span class="k">using</span> <span class="n">Thrift</span><span class="p">.</span><span class="n">Processor</span><span class="p">;</span>
 <span class="k">using</span> <span class="n">System</span><span class="p">.</span><span class="n">Diagnostics</span><span class="p">;</span>
 
-<span class="cp">#pragma warning disable IDE0063  // using
-#pragma warning disable IDE0057  // substr
+<span class="cp">#pragma warning disable IDE0057  // substr
 </span>
 <span class="k">namespace</span> <span class="n">Server</span>
 <span class="p">{</span>
+    <span class="k">public</span> <span class="k">static</span> <span class="k">class</span> <span class="nc">LoggingHelper</span>
+    <span class="p">{</span>
+        <span class="k">public</span> <span class="k">static</span> <span class="n">ILoggerFactory</span> <span class="n">LogFactory</span> <span class="p">{</span> <span class="n">get</span><span class="p">;</span> <span class="p">}</span> <span class="o">=</span> <span class="n">LoggerFactory</span><span class="p">.</span><span class="n">Create</span><span class="p">(</span><span class="n">builder</span> <span class="o">=&gt;</span> <span class="p">{</span>
+            <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">builder</span><span class="p">);</span>
+        <span class="p">});</span>
+
+        <span class="k">public</span> <span class="k">static</span> <span class="kt">void</span> <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">ILoggingBuilder</span> <span class="n">logging</span><span class="p">)</span>
+        <span class="p">{</span>
+            <span class="n">logging</span><span class="p">.</span><span class="n">SetMinimumLevel</span><span class="p">(</span><span class="n">LogLevel</span><span class="p">.</span><span class="n">Trace</span><span class="p">);</span>
+            <span class="n">logging</span><span class="p">.</span><span class="n">AddConsole</span><span class="p">();</span>
+            <span class="n">logging</span><span class="p">.</span><span class="n">AddDebug</span><span class="p">();</span>
+        <span class="p">}</span>
+
+        <span class="k">public</span> <span class="k">static</span> <span class="n">ILogger</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">CreateLogger</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="p">()</span> <span class="o">=&gt;</span> <span class="n">LogFactory</span><span class="p">.</span><span class="n">CreateLogger</span><span class="o">&lt;</span><span class="n">T</span><spa [...]
+    <span class="p">}</span>
+
     <span class="k">public</span> <span class="k">class</span> <span class="nc">Program</span>
     <span class="p">{</span>
-        <span class="k">private</span> <span class="k">static</span> <span class="n">readonly</span> <span class="n">ServiceCollection</span> <span class="n">ServiceCollection</span> <span class="o">=</span> <span class="k">new</span><span class="p">();</span>
-        <span class="k">private</span> <span class="k">static</span> <span class="n">ILogger</span> <span class="n">Logger</span><span class="p">;</span>
+        <span class="k">private</span> <span class="k">static</span> <span class="n">readonly</span> <span class="n">ILogger</span> <span class="n">Logger</span> <span class="o">=</span> <span class="n">LoggingHelper</span><span class="p">.</span><span class="n">CreateLogger</span><span class="o">&lt;</span><span class="n">Program</span><span class="o">&gt;</span><span class="p">();</span>
         <span class="k">private</span> <span class="k">static</span> <span class="n">readonly</span> <span class="n">TConfiguration</span> <span class="n">Configuration</span> <span class="o">=</span> <span class="n">null</span><span class="p">;</span>  <span class="c1">// new TConfiguration() if  needed</span>
 
         <span class="k">public</span> <span class="k">static</span> <span class="kt">void</span> <span class="n">Main</span><span class="p">(</span><span class="n">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
         <span class="p">{</span>
             <span class="n">args</span> <span class="o">??=</span> <span class="n">Array</span><span class="p">.</span><span class="n">Empty</span><span class="o">&lt;</span><span class="n">string</span><span class="o">&gt;</span><span class="p">();</span>
 
-            <span class="n">ServiceCollection</span><span class="p">.</span><span class="n">AddLogging</span><span class="p">(</span><span class="n">logging</span> <span class="o">=&gt;</span> <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">logging</span><span class="p">));</span>
-            <span class="k">using</span> <span class="p">(</span><span class="n">var</span> <span class="n">serviceProvider</span> <span class="o">=</span> <span class="n">ServiceCollection</span><span class="p">.</span><span class="n">BuildServiceProvider</span><span class="p">())</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">Any</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-help"</span><span class="p">,</span> <span class="n">StringComparison</span><span class="p">.</span><span class="n">OrdinalIgnoreCase</span><span class= [...]
             <span class="p">{</span>
-                <span class="n">Logger</span> <span class="o">=</span> <span class="n">serviceProvider</span><span class="p">.</span><span class="n">GetService</span><span class="o">&lt;</span><span class="n">ILoggerFactory</span><span class="o">&gt;</span><span class="p">().</span><span class="n">CreateLogger</span><span class="p">(</span><span class="n">nameof</span><span class="p">(</span><span class="n">Server</span><span class="p">));</span>
-
-                <span class="k">if</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">Any</span><span class="p">(</span><span class="n">x</span> <span class="o">=&gt;</span> <span class="n">x</span><span class="p">.</span><span class="n">StartsWith</span><span class="p">(</span><span class="s">"-help"</span><span class="p">,</span> <span class="n">StringComparison</span><span class="p">.</span><span class="n">OrdinalIgnoreCase</span><span cl [...]
-                <span class="p">{</span>
-                    <span class="n">DisplayHelp</span><span class="p">();</span>
-                    <span class="k">return</span><span class="p">;</span>
-                <span class="p">}</span>
-
-                <span class="k">using</span> <span class="p">(</span><span class="n">var</span> <span class="n">source</span> <span class="o">=</span> <span class="k">new</span> <span class="n">CancellationTokenSource</span><span class="p">())</span>
-                <span class="p">{</span>
-                    <span class="n">RunAsync</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">source</span><span class="p">.</span><span class="n">Token</span><span class="p">).</span><span class="n">GetAwaiter</span><span class="p">().</span><span class="n">GetResult</span><span class="p">();</span>
+                <span class="n">DisplayHelp</span><span class="p">();</span>
+                <span class="k">return</span><span class="p">;</span>
+            <span class="p">}</span>
 
-                    <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Press any key to stop..."</span><span class="p">);</span>
+            <span class="k">using</span> <span class="p">(</span><span class="n">var</span> <span class="n">source</span> <span class="o">=</span> <span class="k">new</span> <span class="n">CancellationTokenSource</span><span class="p">())</span>
+            <span class="p">{</span>
+                <span class="n">RunAsync</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">source</span><span class="p">.</span><span class="n">Token</span><span class="p">).</span><span class="n">GetAwaiter</span><span class="p">().</span><span class="n">GetResult</span><span class="p">();</span>
 
-                    <span class="n">Console</span><span class="p">.</span><span class="n">ReadLine</span><span class="p">();</span>
-                    <span class="n">source</span><span class="p">.</span><span class="n">Cancel</span><span class="p">();</span>
-                <span class="p">}</span>
+                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Press any key to stop..."</span><span class="p">);</span>
 
-                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Server stopped"</span><span class="p">);</span>
+                <span class="n">Console</span><span class="p">.</span><span class="n">ReadLine</span><span class="p">();</span>
+                <span class="n">source</span><span class="p">.</span><span class="n">Cancel</span><span class="p">();</span>
             <span class="p">}</span>
-        <span class="p">}</span>
 
-        <span class="k">private</span> <span class="k">static</span> <span class="kt">void</span> <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">ILoggingBuilder</span> <span class="n">logging</span><span class="p">)</span>
-        <span class="p">{</span>
-            <span class="n">logging</span><span class="p">.</span><span class="n">SetMinimumLevel</span><span class="p">(</span><span class="n">LogLevel</span><span class="p">.</span><span class="n">Trace</span><span class="p">);</span>
-            <span class="n">logging</span><span class="p">.</span><span class="n">AddConsole</span><span class="p">();</span>
-            <span class="n">logging</span><span class="p">.</span><span class="n">AddDebug</span><span class="p">();</span>
+            <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Server stopped"</span><span class="p">);</span>
         <span class="p">}</span>
 
+
         <span class="k">private</span> <span class="k">static</span> <span class="kt">void</span> <span class="n">DisplayHelp</span><span class="p">()</span>
         <span class="p">{</span>
             <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">@</span><span class="s">"</span><span class="err">
@@ -528,7 +530,7 @@ All Apache Thrift tutorials require that you have:
             <span class="k">if</span> <span class="p">(</span><span class="n">selectedTransport</span> <span class="o">==</span> <span class="n">Transport</span><span class="p">.</span><span class="n">Http</span><span class="p">)</span>
             <span class="p">{</span>
                 <span class="k">if</span> <span class="p">(</span><span class="n">multiplex</span><span class="p">)</span>
-                    <span class="k">throw</span> <span class="k">new</span> <span class="n">Exception</span><span class="p">(</span><span class="s">"This tutorial semple code does not yet allow multiplex over http (although Thrift itself of course does)"</span><span class="p">);</span>
+                    <span class="k">throw</span> <span class="k">new</span> <span class="n">Exception</span><span class="p">(</span><span class="s">"This tutorial sample code does not yet allow multiplex over http (although Thrift itself of course does)"</span><span class="p">);</span>
                 <span class="k">new</span> <span class="n">HttpServerSample</span><span class="p">().</span><span class="n">Run</span><span class="p">(</span><span class="n">cancellationToken</span><span class="p">);</span>
             <span class="p">}</span>
             <span class="k">else</span>
@@ -625,15 +627,12 @@ All Apache Thrift tutorials require that you have:
             <span class="k">try</span>
             <span class="p">{</span>
                 <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span>
-                    <span class="n">string</span><span class="p">.</span><span class="n">Format</span><span class="p">(</span>
-                        <span class="s">"TSimpleAsyncServer with </span><span class="se">\n</span><span class="s">{0} transport</span><span class="se">\n</span><span class="s">{1} buffering</span><span class="se">\n</span><span class="s">multiplex = {2}</span><span class="se">\n</span><span class="s">{3} protocol"</span><span class="p">,</span>
-                        <span class="n">transport</span><span class="p">,</span>
-                        <span class="n">buffering</span><span class="p">,</span>
-                        <span class="n">multiplex</span> <span class="o">?</span> <span class="s">"yes"</span> <span class="o">:</span> <span class="s">"no"</span><span class="p">,</span>
-                        <span class="n">protocol</span>
-                        <span class="p">));</span>
-
-                <span class="n">var</span> <span class="n">loggerFactory</span> <span class="o">=</span> <span class="n">ServiceCollection</span><span class="p">.</span><span class="n">BuildServiceProvider</span><span class="p">().</span><span class="n">GetService</span><span class="o">&lt;</span><span class="n">ILoggerFactory</span><span class="o">&gt;</span><span class="p">();</span>
+                    <span class="s">"TSimpleAsyncServer with </span><span class="se">\n</span><span class="s">{transport} transport</span><span class="se">\n</span><span class="s">{buffering} buffering</span><span class="se">\n</span><span class="s">multiplex = {multiplex}</span><span class="se">\n</span><span class="s">{protocol} protocol"</span><span class="p">,</span>
+                    <span class="n">transport</span><span class="p">,</span>
+                    <span class="n">buffering</span><span class="p">,</span>
+                    <span class="n">multiplex</span> <span class="o">?</span> <span class="s">"yes"</span> <span class="o">:</span> <span class="s">"no"</span><span class="p">,</span>
+                    <span class="n">protocol</span>
+                    <span class="p">);</span>
 
                 <span class="n">var</span> <span class="n">server</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TSimpleAsyncServer</span><span class="p">(</span>
                     <span class="nl">itProcessorFactory:</span> <span class="k">new</span> <span class="n">TSingletonProcessorFactory</span><span class="p">(</span><span class="n">processor</span><span class="p">),</span>
@@ -642,7 +641,7 @@ All Apache Thrift tutorials require that you have:
                     <span class="nl">outputTransportFactory:</span> <span class="n">transportFactory</span><span class="p">,</span>
                     <span class="nl">inputProtocolFactory:</span> <span class="n">protocolFactory</span><span class="p">,</span>
                     <span class="nl">outputProtocolFactory:</span> <span class="n">protocolFactory</span><span class="p">,</span>
-                    <span class="nl">logger:</span> <span class="n">loggerFactory</span><span class="p">.</span><span class="n">CreateLogger</span><span class="o">&lt;</span><span class="n">TSimpleAsyncServer</span><span class="o">&gt;</span><span class="p">());</span>
+                    <span class="nl">logger:</span> <span class="n">LoggingHelper</span><span class="p">.</span><span class="n">CreateLogger</span><span class="o">&lt;</span><span class="n">TSimpleAsyncServer</span> <span class="o">&gt;</span><span class="p">());</span>
 
                 <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Starting the server..."</span><span class="p">);</span>
 
@@ -650,7 +649,7 @@ All Apache Thrift tutorials require that you have:
             <span class="p">}</span>
             <span class="k">catch</span> <span class="p">(</span><span class="n">Exception</span> <span class="n">x</span><span class="p">)</span>
             <span class="p">{</span>
-                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="n">x</span><span class="p">.</span><span class="n">ToString</span><span class="p">());</span>
+                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"{x}"</span><span class="p">,</span><span class="n">x</span><span class="p">);</span>
             <span class="p">}</span>
         <span class="p">}</span>
 
@@ -726,7 +725,7 @@ All Apache Thrift tutorials require that you have:
                     <span class="p">.</span><span class="n">UseUrls</span><span class="p">(</span><span class="s">"http://localhost:9090"</span><span class="p">)</span>
                     <span class="p">.</span><span class="n">UseContentRoot</span><span class="p">(</span><span class="n">Directory</span><span class="p">.</span><span class="n">GetCurrentDirectory</span><span class="p">())</span>
                     <span class="p">.</span><span class="n">UseStartup</span><span class="o">&lt;</span><span class="n">Startup</span><span class="o">&gt;</span><span class="p">()</span>
-                    <span class="p">.</span><span class="n">ConfigureLogging</span><span class="p">((</span><span class="n">ctx</span><span class="p">,</span><span class="n">logging</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">logging</span><span class="p">))</span>
+                    <span class="p">.</span><span class="n">ConfigureLogging</span><span class="p">((</span><span class="n">ctx</span><span class="p">,</span><span class="n">logging</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="n">LoggingHelper</span><span class="p">.</span><span class="n">ConfigureLogging</span><span class="p">(</span><span class="n">logging</span><span class="p">))</span>
                     <span class="p">.</span><span class="n">Build</span><span class="p">();</span>
 
                 <span class="n">Logger</span><span class="p">.</span><span class="n">LogTrace</span><span class="p">(</span><span class="s">"test"</span><span class="p">);</span>
@@ -778,7 +777,7 @@ All Apache Thrift tutorials require that you have:
             <span class="k">public</span> <span class="n">async</span> <span class="n">Task</span><span class="o">&lt;</span><span class="n">SharedStruct</span><span class="o">&gt;</span> <span class="n">getStruct</span><span class="p">(</span><span class="kt">int</span> <span class="n">key</span><span class="p">,</span>
                 <span class="n">CancellationToken</span> <span class="n">cancellationToken</span><span class="p">)</span>
             <span class="p">{</span>
-                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"GetStruct({0})"</span><span class="p">,</span> <span class="n">key</span><span class="p">);</span>
+                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"GetStruct({key})"</span><span class="p">,</span> <span class="n">key</span><span class="p">);</span>
                 <span class="k">return</span> <span class="n">await</span> <span class="n">Task</span><span class="p">.</span><span class="n">FromResult</span><span class="p">(</span><span class="n">_log</span><span class="p">[</span><span class="n">key</span><span class="p">]);</span>
             <span class="p">}</span>
 
@@ -790,13 +789,13 @@ All Apache Thrift tutorials require that you have:
 
             <span class="k">public</span> <span class="n">async</span> <span class="n">Task</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">add</span><span class="p">(</span><span class="kt">int</span> <span class="n">num1</span><span class="p">,</span> <span class="kt">int</span> <span class="n">num2</span><span class="p">,</span> <span class="n">CancellationToken</span> <span class="n">cancellationToken</span><span class="p">)</span>
             <span class="p">{</span>
-                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"Add({num1},{num2})"</span><span class="p">);</span>
+                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Add({num1},{num2})"</span><span class="p">,</span> <span class="n">num1</span><span class="p">,</span> <span class="n">num2</span><span class="p">);</span>
                 <span class="k">return</span> <span class="n">await</span> <span class="n">Task</span><span class="p">.</span><span class="n">FromResult</span><span class="p">(</span><span class="n">num1</span> <span class="o">+</span> <span class="n">num2</span><span class="p">);</span>
             <span class="p">}</span>
 
             <span class="k">public</span> <span class="n">async</span> <span class="n">Task</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">calculate</span><span class="p">(</span><span class="kt">int</span> <span class="n">logid</span><span class="p">,</span> <span class="n">Work</span> <span class="n">w</span><span class="p">,</span> <span class="n">CancellationToken</span> <span class="n">cancellationToken</span><span class="p">)</span>
             <span class="p">{</span>
-                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="err">$</span><span class="s">"Calculate({logid}, [{w.Op},{w.Num1},{w.Num2}])"</span><span class="p">);</span>
+                <span class="n">Logger</span><span class="p">.</span><span class="n">LogInformation</span><span class="p">(</span><span class="s">"Calculate({logid}, [{w.Op},{w.Num1},{w.Num2}])"</span><span class="p">,</span> <span class="n">logid</span><span class="p">,</span> <span class="n">w</span><span class="p">.</span><span class="n">Op</span><span class="p">,</span> <span class="n">w</span><span class="p">.</span><span class="n">Num1</span><span class="p">,</span> <span class="n" [...]
 
                 <span class="kt">int</span> <span class="n">val</span><span class="p">;</span>
                 <span class="k">switch</span> <span class="p">(</span><span class="n">w</span><span class="p">.</span><span class="n">Op</span><span class="p">)</span>
@@ -827,6 +826,7 @@ All Apache Thrift tutorials require that you have:
                         <span class="n">val</span> <span class="o">=</span> <span class="n">w</span><span class="p">.</span><span class="n">Num1</span> <span class="o">/</span> <span class="n">w</span><span class="p">.</span><span class="n">Num2</span><span class="p">;</span>
                         <span class="k">break</span><span class="p">;</span>
 
+                    <span class="nl">default:</span>
 </code></pre></div>
 <p class="snippet_footer">This snippet was generated by Apache Thrift's <strong>source tree docs</strong>:
 <a href="https://gitbox.apache.org/repos/asf?p=thrift.git;a=blob;hb=HEAD;f=tutorial/netstd/Server/Program.cs">tutorial/netstd/Server/Program.cs</a>
@@ -863,7 +863,7 @@ All Apache Thrift tutorials require that you have:
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/nodejs.html b/output/tutorial/nodejs.html
index 9824d4e..851b35e 100644
--- a/output/tutorial/nodejs.html
+++ b/output/tutorial/nodejs.html
@@ -231,7 +231,7 @@ All Apache Thrift tutorials require that you have:
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/ocaml.html b/output/tutorial/ocaml.html
index c1923d0..bf2e695 100644
--- a/output/tutorial/ocaml.html
+++ b/output/tutorial/ocaml.html
@@ -235,7 +235,7 @@ All Apache Thrift tutorials require that you have:
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/perl.html b/output/tutorial/perl.html
index 1b4266f..1921ef7 100644
--- a/output/tutorial/perl.html
+++ b/output/tutorial/perl.html
@@ -236,7 +236,7 @@ All Apache Thrift tutorials require that you have:
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/php.html b/output/tutorial/php.html
index 2a353c6..ced9a03 100644
--- a/output/tutorial/php.html
+++ b/output/tutorial/php.html
@@ -329,7 +329,7 @@ All Apache Thrift tutorials require that you have:
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/py.html b/output/tutorial/py.html
index 54b5850..8a5c4eb 100644
--- a/output/tutorial/py.html
+++ b/output/tutorial/py.html
@@ -248,7 +248,7 @@ All Apache Thrift tutorials require that you have:
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>
diff --git a/output/tutorial/rb.html b/output/tutorial/rb.html
index 3db5239..ff5406a 100644
--- a/output/tutorial/rb.html
+++ b/output/tutorial/rb.html
@@ -238,7 +238,7 @@ All Apache Thrift tutorials require that you have:
       </div>
       <div class="span6">
         <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a>
-        Copyright &copy; 2021 <a href="http://www.apache.org/">Apache Software Foundation</a>.
+        Copyright &copy; 2022 <a href="http://www.apache.org/">Apache Software Foundation</a>.
         Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>.
         Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation.
       </div>