<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title>Avatica Releases</title>
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <meta name="generator" content="Jekyll v3.7.3">
  <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic,900">
  <link rel="stylesheet" href="/avatica/css/screen.css">
  <link rel="icon" type="image/x-icon" href="/avatica/favicon.ico">
  <!--[if lt IE 9]>
  <script src="/js/html5shiv.min.js"></script>
  <script src="/js/respond.min.js"></script>
  <![endif]-->
</head>


<body class="wrap">
  <header role="banner">
  <nav class="mobile-nav show-on-mobiles">
    <ul>
  <li class="">
    <a href="/avatica/">Home</a>
  </li>
  <li class="">
    <a href="/avatica/downloads/">Download</a>
  </li>
  <li class="">
    <a href="/avatica/community/">Community</a>
  </li>
  <li class="">
    <a href="/avatica/develop/">Develop</a>
  </li>
  <li class="current">
    <a href="/avatica/news/">News</a>
  </li>
  <li class="">
    <a href="/avatica/docs/">Docs</a>
  </li>
</ul>

  </nav>
  <div class="grid">
    <div class="unit one-third center-on-mobiles">
      <h1>
        <a href="/avatica/">
          <span class="sr-only">Apache Calcite Avatica</span>
          <img src="/avatica/img/logo.png" width="226" height="140" alt="Calcite Logo">
        </a>
      </h1>
    </div>
    <nav class="main-nav unit two-thirds hide-on-mobiles">
      <ul>
  <li class="">
    <a href="/avatica/">Home</a>
  </li>
  <li class="">
    <a href="/avatica/downloads/">Download</a>
  </li>
  <li class="">
    <a href="/avatica/community/">Community</a>
  </li>
  <li class="">
    <a href="/avatica/develop/">Develop</a>
  </li>
  <li class="current">
    <a href="/avatica/news/">News</a>
  </li>
  <li class="">
    <a href="/avatica/docs/">Docs</a>
  </li>
</ul>

    </nav>
  </div>
</header>


    <section class="news">
    <div class="grid">

      <div class="docs-nav-mobile unit whole show-on-mobiles">
  <select onchange="if (this.value) window.location.href=this.value">
    <option value="">Navigate the blog…</option>
    <option value="/avatica/news/">Home</option>
    <optgroup label="v1.x">
      
      <option value="/news/2019/05/16/release-avatica-go-4.0.0/">Release Avatica Go 4.0.0</option>
      
      <option value="/news/2019/05/13/release-1.15.0/">Release 1.15.0</option>
      
      <option value="/news/2019/04/29/release-1.14.0/">Release 1.14.0</option>
      
      <option value="/news/2018/12/04/release-1.13.0/">Release 1.13.0</option>
      
      <option value="/news/2018/09/18/release-avatica-go-3.2.0/">Release Avatica Go 3.2.0</option>
      
      <option value="/news/2018/09/10/release-avatica-go-3.1.0/">Release Avatica Go 3.1.0</option>
      
      <option value="/news/2018/06/24/release-1.12.0/">Release 1.12.0</option>
      
      <option value="/news/2018/04/27/release-avatica-go-3.0.0/">Release Avatica Go 3.0.0</option>
      
      <option value="/news/2018/03/09/release-1.11.0/">Release 1.11.0</option>
      
      <option value="/news/2017/05/30/release-1.10.0/">Release 1.10.0</option>
      
      <option value="/news/2017/03/31/new-avatica-repository/">New Avatica Repository</option>
      
      <option value="/news/2016/11/01/release-1.9.0/">Release 1.9.0</option>
      
      <option value="/news/2016/06/04/release-1.8.0/">Release 1.8.0</option>
      
      <option value="/news/2016/03/18/release-1.7.1/">Release 1.7.1</option>
      
      <option value="/news/2016/03/03/separate-project/">Splitting Avatica from Calcite</option>
      
    </optgroup>
  </select>
</div>


      <div class="unit four-fifths">
        <!--

-->


  

  
    
<article>
  <h2>
    <a href="/avatica/news/2019/05/13/release-1.15.0/">
      Release 1.15.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      13 May 2019
    </span>
    
    
    
    <a href="http://github.com/F21" class="post-author">
      <img src="http://github.com/F21.png"
           class="avatar" alt="francischuang avatar"
           width="24" height="24">
      francischuang
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.15.0 is a small release that fixes a regression causing
error messages to not be propagated to clients. There is also a minor update to the
docker release script to automate the upload of release artifacts and build promotion.
See the list of <a href="/avatica/docs/history.html#v1-14-0">bug fixes and new features</a>
for more information.</p>

<p>Consumers of Avatica are encouraged to skip the 1.14.0 release and upgrade directly to
1.15.0 due to the aforementioned regression.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-15-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>

  

  
    
<article>
  <h2>
    <a href="/avatica/news/2019/04/29/release-1.14.0/">
      Release 1.14.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      29 Apr 2019
    </span>
    
    
    
    <a href="http://github.com/F21" class="post-author">
      <img src="http://github.com/F21.png"
           class="avatar" alt="francischuang avatar"
           width="24" height="24">
      francischuang
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.14.0 includes around 13
<a href="/avatica/docs/history.html#v1-14-0">bug fixes and new features</a>.</p>

<p>A number of dependencies were upgraded for this release, with Jetty being
a noteworthy upgrade due to the old version having a medium severity vulnerability.
Avatica users are encouraged to upgrade to 1.14.0 where practical.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-14-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>

  

  
    
<article>
  <h2>
    <a href="/avatica/news/2018/12/04/release-1.13.0/">
      Release 1.13.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      04 Dec 2018
    </span>
    
    
    
    <a href="http://github.com/F21" class="post-author">
      <img src="http://github.com/F21.png"
           class="avatar" alt="francischuang avatar"
           width="24" height="24">
      francischuang
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.13.0 includes more than 30
<a href="/avatica/docs/history.html#v1-13-0">bug fixes and new features</a>.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-13-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>

  

  

  

  
    
<article>
  <h2>
    <a href="/avatica/news/2018/06/24/release-1.12.0/">
      Release 1.12.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      24 Jun 2018
    </span>
    
    
    
    <a href="http://github.com/F21" class="post-author">
      <img src="http://github.com/F21.png"
           class="avatar" alt="francischuang avatar"
           width="24" height="24">
      francischuang
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.12.0 includes more than 20
<a href="/avatica/docs/history.html#v1-12-0">bug fixes and new features</a>.
ZIP archives will no longer be produced from this release onwards.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-12-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>

  

  

  
    
<article>
  <h2>
    <a href="/avatica/news/2018/03/09/release-1.11.0/">
      Release 1.11.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      09 Mar 2018
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.11.0 adds support for JDK 10 and drops
support for JDK 7. There are more than 20
<a href="/avatica/docs/history.html#v1-11-0">bug fixes and new features</a>.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-11-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>

  

  
    
<article>
  <h2>
    <a href="/avatica/news/2017/05/30/release-1.10.0/">
      Release 1.10.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      30 May 2017
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.10.0 adds support for JDBC Array data,
Docker, and JDK 9.</p>

<p>From this release onwards, Docker images for Avatica Server are
published to <a href="https://hub.docker.com/r/apache/calcite-avatica">Docker Hub</a>.  These
make Avatica <a href="/avatica/docs/docker">easier than ever to run</a>.</p>

<p>As the Calcite and Avatica projects become
<a href="/avatica/news/2016/03/03/separate-project">more separate</a>,
it is the first release since Avatica’s git repository
<a href="/avatica/news/2017/03/31/new-avatica-repository">separated from Calcite’s repository</a>.</p>

<p>Avatica now runs on JDK 9 (and continues to run on JDK 7 and 8).</p>

<p>Clients may now send and receive Array data via the JDBC API.
There are improvements to date/time support in
<a href="/avatica/apidocs/org/apache/calcite/avatica/util/DateTimeUtils.html">DateTimeUtils</a>,
and over 20 <a href="/avatica/docs/history.html#v1-10-0">other new features and bug fixes</a>.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-10-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>

  

  
    
<article>
  <h2>
    <a href="/avatica/news/2016/11/01/release-1.9.0/">
      Release 1.9.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      01 Nov 2016
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.9.0 includes various improvements to make it
more robust and secure, while maintaining API and protocol
compatibility with previous versions.</p>

<p>We now <a href="https://issues.apache.org/jira/browse/CALCITE-1224">include non-shaded and shaded artifacts</a>,
to make it easier to embed Avatica in your application.</p>

<p>There are improvements to the JDBC API, adding support for
<a href="https://issues.apache.org/jira/browse/CALCITE-1301">canceling statements</a>,
and improving
<a href="https://issues.apache.org/jira/browse/CALCITE-1408">type conversions</a>
and
<a href="https://issues.apache.org/jira/browse/CALCITE-1410">metadata</a>.</p>

<p>The transport is upgraded to use
<a href="https://issues.apache.org/jira/browse/CALCITE-1355">protobuf-3.1.0</a>
(previously 3.0 beta); we have also
<a href="https://issues.apache.org/jira/browse/CALCITE-1464">upgraded Jetty</a>.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-9-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>

  

  
    
<article>
  <h2>
    <a href="/avatica/news/2016/06/04/release-1.8.0/">
      Release 1.8.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      04 Jun 2016
    </span>
    
    
    
    <a href="http://github.com/joshelser" class="post-author">
      <img src="http://github.com/joshelser.png"
           class="avatar" alt="elserj avatar"
           width="24" height="24">
      elserj
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.8.0 continues the focus on compatibility with previous
versions while also adding support for authentication between Avatica client and server.
Performance, notably on the write-path, is also major area of improvement
in this release, increasing as much as two to three times over previous versions
with the addition of new API support. The documentation for both users and developers
continues to receive improvements.</p>

<p>Authentication is a major theme of this release, providing multiple layers of
additional authentication mechanisms over previous versions. In these earlier
versions, the only authentication provided by Avatica was achieved via the JDBC URL’s
standard user and password options. These have always been passed directly into
the backend database’s authentication system, but not all databases provide username
and password based authentication systems. <a href="https://issues.apache.org/jira/browse/CALCITE-1173">CALCITE-1173</a>
adds Avatica-level authentication over <a href="https://en.wikipedia.org/wiki/Basic_access_authentication">HTTP Basic</a>
and <a href="https://en.wikipedia.org/wiki/Digest_access_authentication">HTTP Digest</a>
authentication mechanisms. These are provided specifically for the case when
Avatica is used with a database that <em>does not already</em> provide its own authentication
implementation.</p>

<p>Some systems rely on <a href="http://web.mit.edu/kerberos/">Kerberos</a> for strong, centrally-
managed authentication. <a href="https://issues.apache.org/jira/browse/CALCITE-1159">CALCITE-1159</a>
introduces Kerberos-based authentication for clients via <a href="https://en.wikipedia.org/wiki/SPNEGO">SPNEGO</a>.
The Avatica server can be configured to only allow clients with a valid Kerberos ticket,
optionally, also passing this information to the backend database to implement
basic “impersonation” (where the Avatica server issues requests on behalf of the end user).</p>

<p>Building on top of the work done in Avatica-1.7.0 in <a href="https://issues.apache.org/jira/browse/CALCITE-1091">CALCITE-1091</a>,
this release also contains <a href="https://issues.apache.org/jira/browse/CALCITE-1128">CALCITE-1128</a> which
implements the batch-oriented JDBC APIs on <code class="highlighter-rouge">Statement</code>. Through careful inspection, it
was observed that the overall performance of Avatica clients in 100% write workloads was
dominated by the cost of the HTTP calls. By leveraging the <code class="highlighter-rouge">Statement#addBatch()</code>
and <code class="highlighter-rouge">Statement#executeBatch()</code> API calls, clients can efficiently batch multiple updates
in a single HTTP call. In testing this over the previous single HTTP call per update with
<a href="https://phoenix.apache.org">Apache Phoenix</a>, it was observed that performance increased by
two to three times, bringing Avatica’s performance on par with the Phoenix “native” driver.</p>

<p>Returning back to compatibility, a new component appears in this release which is designed to
test versions of Avatica against each other. <a href="https://issues.apache.org/jira/browse/CALCITE-1190">CALCITE-1190</a>
introduces a “Technology Compatibility Kit” (TCK) which automates the testing of one version
of Avatica against other versions. To further ease this testing, a runnable JAR to launch
an HSQLDB instance and an Avatica server also makes it debut with these changes. This TCK
makes it much easier to run tests of newer clients against older servers and vice versa.
Validating the backwards compatibility that is being built is extremely important to be
confident in the guarantees being provided to users.</p>

<p>Finally, a number of bugs are also fixed in the Protocol Buffer wire API. Some of these
include <a href="https://issues.apache.org/jira/browse/CALCITE-1113">CALCITE-1113</a> and
<a href="https://issues.apache.org/jira/browse/CALCITE-1103">CALCITE-1103</a> which fix how certain
numbers are serialized, <a href="https://issues.apache.org/jira/browse/CALCITE-1243">CALITE-1243</a>
which corrects some fields in Protocol Buffer messages which were incorrectly marked
as unsigned integers instead of signed integers, and <a href="https://issues.apache.org/jira/browse/CALCITE-1209">CALCITE-1209</a>
which removes incorrect parsing of binary fields as Base64-encoded strings. All of
these issues are fixed in a backwards-compatible manner and should have no additional negative
impact on older clients (older clients will not break, but they may continue to return
incorrect data for certain numbers).</p>

<p>For users of the Avatica driver, a new <a href="/avatica/docs/client_reference.html">client reference page</a>
is added which details the options that are available in the Avatica JDBC Driver’s URL.
The wire API documentation for Protocol Buffers continues to receive updates as the API continues to evolve.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-8-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>

  

  
    
<article>
  <h2>
    <a href="/avatica/news/2016/03/18/release-1.7.1/">
      Release 1.7.1
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      18 Mar 2016
    </span>
    
    
    
    <a href="http://github.com/joshelser" class="post-author">
      <img src="http://github.com/joshelser.png"
           class="avatar" alt="elserj avatar"
           width="24" height="24">
      elserj
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite’s PMC has just released Avatica 1.7.1, the first
release of <a href="http://calcite.apache.org/avatica/">Avatica</a> as an
independent project. We’re excited because it makes Avatica easier to
use, and allows us to be more agile in our release schedule.</p>

<p>(Avatica was previously released as part of Calcite. Avatica is still
governed by Apache Calcite’s PMC, and stored in the same git
repository as Calcite, but releases are no longer synchronized, and
Avatica does not depend on any Calcite modules.)</p>

<p>A significant portion of the work of this release was “Maven work” to
separate the build and release processes, but there were several
important bug fixes, including a security fix for Jetty (see below).</p>

<p>Performance, specifically on the write path, was a big focus in this
release.
[<a href="https://issues.apache.org/jira/browse/CALCITE-1091">CALCITE-1091</a>]
contained a number of important changes. Some of these changes (e.g.
[<a href="https://issues.apache.org/jira/browse/CALCITE-1092">CALCITE-1092</a>]
and
[<a href="https://issues.apache.org/jira/browse/CALCITE-1093">CALCITE-1093</a>])
were related to heap usage in the Avatica server, while
[<a href="https://issues.apache.org/jira/browse/CALCITE-1094">CALCITE-1094</a>]
and
[<a href="https://issues.apache.org/jira/browse/CALCITE-1117">CALCITE-1117</a>]
were strictly performance-related.</p>

<p>The latter improved performance the most. Switching to the
<a href="http://hc.apache.org/">Apache Commons HttpComponents Client</a>
library instead of using the Java platform’s built-in
<a href="https://docs.oracle.com/javase/7/docs/api/java/net/HttpURLConnection.html">HttpURLConnection</a>,
we noticed a 15% improvement in pure write workloads.</p>

<p>Three dependent library upgrades:</p>

<ul>
  <li>We completely removed
<a href="https://commons.apache.org/proper/commons-logging/">Commons Logging</a>
in favor of <a href="http://slf4j.org/">SLF4J</a> in
[<a href="https://issues.apache.org/jira/browse/CALCITE-669">CALCITE-669</a>].
This logging framework update will allow downstream integrators to
use the logging implementation of their choice instead of being
forced to inherit Commons Logging.</li>
  <li>We upgraded Jackson from 2.1.1 to 2.6.3 in
[<a href="https://issues.apache.org/jira/browse/CALCITE-1021">CALCITE-1021</a>].</li>
  <li>We upgraded Jetty from 9.2.7.v20150116 to 9.2.15.v20160210 in
[<a href="https://issues.apache.org/jira/browse/CALCITE-1156">CALCITE-1156</a>]
to fix a
<a href="https://blog.gdssecurity.com/labs/2015/2/25/jetleak-vulnerability-remote-leakage-of-shared-buffers-in-je.html">security issue</a>.</li>
</ul>

<p>Note that Avatica’s Maven coordinates have changed. The <code class="highlighter-rouge">groupId</code> is
now “org.apache.calcite.avatica” (previously “org.apache.calcite”),
and <code class="highlighter-rouge">artifactId</code>s are
“avatica”,
“avatica-metrics”,
“avatica-metrics-dropwizardmetrics3”,
“avatica-noop-driver”,
“avatica-server”
(previously “calcite-avatica”, etc.). Make sure to update these when
upgrading to this version.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-7-1">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>

  


      </div>

      <div class="unit one-fifth hide-on-mobiles">
  <aside>
    <ul>
      <li class="">
        <a href="/avatica/news/">All News</a>
      </li>
      <li class="current">
        <a href="/avatica/news/avatica-releases/">Avatica Releases</a>
      </li>
      <li class="">
          <a href="/avatica/news/avatica-go-releases/">Avatica Go Releases</a>
      </li>
    </ul>
    <h4>Recent Releases</h4>
    <ul>
      
      <li class="">
        <a href="/avatica/news/2019/05/16/release-avatica-go-4.0.0/">avatica-go 4.0.0</a>
      </li>
      
      <li class="">
        <a href="/avatica/news/2019/05/13/release-1.15.0/">avatica 1.15.0</a>
      </li>
      
      <li class="">
        <a href="/avatica/news/2019/04/29/release-1.14.0/">avatica 1.14.0</a>
      </li>
      
      <li class="">
        <a href="/avatica/news/2018/12/04/release-1.13.0/">avatica 1.13.0</a>
      </li>
      
      <li class="">
        <a href="/avatica/news/2018/09/18/release-avatica-go-3.2.0/">avatica-go 3.2.0</a>
      </li>
      
    </ul>
    <h4>Other News</h4>
    <ul>
        
        <li class="">
          <a href="/avatica/news/2017/03/31/new-avatica-repository/">New Avatica Repository</a>
        </li>
          
        <li class="">
          <a href="/avatica/news/2016/03/03/separate-project/">Splitting Avatica from Calcite</a>
        </li>
          
    </ul>
  </aside>
</div>


      <div class="clear"></div>

    </div>
  </section>


  <footer role="contentinfo">
  <div id="poweredby">
    <a href="http://www.apache.org/">
      <span class="sr-only">Apache</span>
      <img src="/avatica/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
  </div>
  <div id="copyright">
  <p>The contents of this website are &copy;&nbsp;2019
     <a href="https://www.apache.org/">Apache Software Foundation</a>
     under the terms of
     the <a href="https://www.apache.org/licenses/LICENSE-2.0.html">
     Apache&nbsp;License&nbsp;v2</a>. Apache Calcite and its logo are
     trademarks of the Apache Software Foundation.</p>
  </div>
</footer>

  <script>
  var anchorForId = function (id) {
    var anchor = document.createElement("a");
    anchor.className = "header-link";
    anchor.href      = "#" + id;
    anchor.innerHTML = "<span class=\"sr-only\">Permalink</span><i class=\"fa fa-link\"></i>";
    anchor.title = "Permalink";
    return anchor;
  };

  var linkifyAnchors = function (level, containingElement) {
    var headers = containingElement.getElementsByTagName("h" + level);
    for (var h = 0; h < headers.length; h++) {
      var header = headers[h];

      if (typeof header.id !== "undefined" && header.id !== "") {
        header.appendChild(anchorForId(header.id));
      }
    }
  };

  document.onreadystatechange = function () {
    if (this.readyState === "complete") {
      var contentBlock = document.getElementsByClassName("docs")[0] || document.getElementsByClassName("news")[0];
      if (!contentBlock) {
        return;
      }
      for (var level = 1; level <= 6; level++) {
        linkifyAnchors(level, contentBlock);
      }
    }
  };
</script>


</body>
</html>
