
<p>Coming off of our latest release cycle, we think it is a good time to talk about our release policy more openly. In this post we are going to address our goals for the ArrayFire library's release cycle. The versioning scheme of the library will follow the <a href="https://apr.apache.org/versioning.html">Apache Portable Runtime</a> guidelines.</p>
<p>Each release version number will be of the following format <code>arrayfire-x.y.z</code>. The releases are going to be categorized broadly into the following categories based on the frequency and scope.</p>
<h4 id="bug-fix-releases">Bug fix releases</h4>
<p>A bugfix release will bump the 3rd digit of the release version. These releases will neither add new functions nor break API and ABI compatiblity from the previous Feature release.</p>
<p>Bug fix releases will be infrequent, but will likely happen on the first day of the business week.</p>
<p>For example, the next bugfix release is <a href="https://github.com/arrayfire/arrayfire/issues?utf8=%E2%9C%93&amp;q=milestone%3A3.0.2+">3.0.2</a>. It is scheduled for June 29th.</p>
<h4 id="feature-releases">Feature releases</h4>
<p>A feature release will bump the 2nd digit of the release number and reset the 3rd digit to 0.They will add new functionality to the library and try to improve performance across the board. These releases will be backwards compatible to the previous Major release. The new functions will come with header gaurds to enable users to target a particular (older) versions of the API.</p>
<p>These releases will be made on a quarterly basis.</p>
<p>For example, the next feature release is <a href="https://github.com/arrayfire/arrayfire/issues?utf8=%E2%9C%93&amp;q=milestone%3A3.1.0">3.1.0</a>. It is scheduled for an early August release.</p>
<h4 id="major-releases">Major releases</h4>
<p>A Major release will bump the 1st digit and reset 2nd and 3rd digits to 0. There is no fixed schedule for this. A major release will happen when a major feature is added to ArrayFire and / or there is a breaking change in our API. This will happen once every 15-24 months.</p>
<p>For example, the next major release is 4.0.0. It will possibly come out late 2016 or early 2017.</p>
<h4 id="tracking-our-progress">Tracking our progress</h4>
<p>You can track our progress by going to our <a href="https://github.com/arrayfire/arrayfire">github page</a>. The <code>hotfixes-x.y.z</code> branch will be used for the Bug fix releases. The <code>devel</code> branch will be used for making progress to the next feature release. The <code>master</code> branch will contain the latest stable release.</p>
<p>You can also look at <a href="https://github.com/arrayfire/arrayfire/milestones">our milestones</a> to get a look at what is coming in future versions of ArrayFire. If you have any questions or any specific requests that you would like to see in future versions of ArrayFire, contact us at <code>technical@arrayfire.com</code>.</p>
