<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                      "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>How To Release LLVM To The Public</title>
  <link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<body>

<h1>How To Release LLVM To The Public</h1>
<ol>
  <li><a href="#introduction">Introduction</a></li>
  <li><a href="#criteria">Qualification Criteria</a></li>
  <li><a href="#introduction">Release Timeline</a></li>
  <li><a href="#process">Release Process</a></li>
</ol>
<div class="doc_author">
  <p>Written by <a href="mailto:tonic@nondot.org">Tanya Lattner</a>,
  <a href="mailto:rspencer@x10sys.com">Reid Spencer</a>,
  <a href="mailto:criswell@cs.uiuc.edu">John Criswell</a>, &amp;
  <a href="mailto:wendling@apple.com">Bill Wendling</a>
  </p>
</div>

<!-- *********************************************************************** -->
<h2><a name="introduction">Introduction</a></h2>
<!-- *********************************************************************** -->

<div>

<p>This document contains information about successfully releasing LLVM &mdash;
   including subprojects: e.g., <tt>clang</tt> and <tt>dragonegg</tt> &mdash; to
   the public. It is the Release Manager's responsibility to ensure that a high
   quality build of LLVM is released.</p>

</div>

<!-- *********************************************************************** -->
<h2><a name="process">Release Timeline</a></h2>
<!-- *********************************************************************** -->
<div>

<p>LLVM is released on a time based schedule &mdash; roughly every 6 months. We
   do not normally have dot releases because of the nature of LLVM's incremental
   development philosophy. That said, the only thing preventing dot releases for
   critical bug fixes from happening is a lack of resources &mdash; testers,
   machines, time, etc. And, because of the high quality we desire for LLVM
   releases, we cannot allow for a truncated form of release qualification.</p>

<p>The release process is roughly as follows:</p>

<ul>
  <li><p>Set code freeze and branch creation date for 6 months after last code
      freeze date. Announce release schedule to the LLVM community and update
      the website.</p></li>

  <li><p>Create release branch and begin release process.</p></li>

  <li><p>Send out release candidate sources for first round of testing. Testing
      lasts 7-10 days. During the first round of testing, any regressions found
      should be fixed. Patches are merged from mainline into the release
      branch. Also, all features need to be completed during this time. Any
      features not completed at the end of the first round of testing will be
      removed or disabled for the release.</p></li>

  <li><p>Generate and send out the second release candidate sources. Only
      <em>critial</em> bugs found during this testing phase will be fixed. Any
      bugs introduced by merged patches will be fixed. If so a third round of
      testing is needed.</p></li>

  <li><p>The release notes are updated.</p></li>

  <li><p>Finally, release!</p></li>
</ul>

</div>

<!-- *********************************************************************** -->
<h2><a name="process">Release Process</a></h2>
<!-- *********************************************************************** -->

<div>

<ol>
  <li><a href="#release-admin">Release Administrative Tasks</a>
  <ol>
    <li><a href="#branch">Create Release Branch</a></li>
    <li><a href="#verchanges">Update Version Numbers</a></li>
  </ol>
  </li>
  <li><a href="#release-build">Building the Release</a>
  <ol>
    <li><a href="#dist">Build the LLVM Source Distributions</a></li>
    <li><a href="#build">Build LLVM</a></li>
    <li><a href="#clangbin">Build the Clang Binary Distribution</a></li>
    <li><a href="#target-build">Target Specific Build Details</a></li>
  </ol>
  </li>
  <li><a href="#release-qualify">Release Qualification Criteria</a>
  <ol>
    <li><a href="#llvm-qualify">Qualify LLVM</a></li>
    <li><a href="#clang-qualify">Qualify Clang</a></li>
    <li><a href="#targets">Specific Target Qualification Details</a></li>
  </ol>
  </li>

  <li><a href="#commTest">Community Testing</a></li>    
  <li><a href="#release-patch">Release Patch Rules</a></li>
  <li><a href="#release-final">Release final tasks</a>
  <ol>
    <li><a href="#updocs">Update Documentation</a></li>
    <li><a href="#tag">Tag the LLVM Final Release</a></li>
    <li><a href="#updemo">Update the LLVM Demo Page</a></li>
    <li><a href="#webupdates">Update the LLVM Website</a></li>
    <li><a href="#announce">Announce the Release</a></li>
  </ol>
  </li>
</ol>

<!-- ======================================================================= -->
<h3><a name="release-admin">Release Administrative Tasks</a></h3>

<div>

<p>This section describes a few administrative tasks that need to be done for
   the release process to begin. Specifically, it involves:</p>

<ul>
  <li>Creating the release branch,</li>
  <li>Setting version numbers, and</li>
  <li>Tagging release candidates for the release team to begin testing</li>
</ul>

<!-- ======================================================================= -->
<h4><a name="branch">Create Release Branch</a></h4>

<div>

<p>Branch the Subversion trunk using the following procedure:</p>

<ol>
  <li><p>Remind developers that the release branching is imminent and to refrain
      from committing patches that might break the build. E.g., new features,
      large patches for works in progress, an overhaul of the type system, an
      exciting new TableGen feature, etc.</p></li>

  <li><p>Verify that the current Subversion trunk is in decent shape by
      examining nightly tester and buildbot results.</p></li>

  <li><p>Create the release branch for <tt>llvm</tt>, <tt>clang</tt>,
      the <tt>test-suite</tt>, and <tt>dragonegg</tt> from the last known good
      revision. The branch's name is <tt>release_<i>XY</i></tt>,
      where <tt>X</tt> is the major and <tt>Y</tt> the minor release
      numbers. The branches should be created using the following commands:</p>
  
<div class="doc_code">
<pre>
$ svn copy https://llvm.org/svn/llvm-project/llvm/trunk \
           https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XY</i>

$ svn copy https://llvm.org/svn/llvm-project/cfe/trunk \
           https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XY</i>

$ svn copy https://llvm.org/svn/llvm-project/dragonegg/trunk \
           https://llvm.org/svn/llvm-project/dragonegg/branches/release_<i>XY</i>

$ svn copy https://llvm.org/svn/llvm-project/test-suite/trunk \
           https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XY</i>
</pre>
</div></li>

  <li><p>Advise developers that they may now check their patches into the
      Subversion tree again.</p></li>

  <li><p>The Release Manager should switch to the release branch, because all
      changes to the release will now be done in the branch. The easiest way to
      do this is to grab a working copy using the following commands:</p>

<div class="doc_code">
<pre>
$ svn co https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XY</i> llvm-<i>X.Y</i>

$ svn co https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XY</i> clang-<i>X.Y</i>

$ svn co https://llvm.org/svn/llvm-project/dragonegg/branches/release_<i>XY</i> dragonegg-<i>X.Y</i>

$ svn co https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XY</i> test-suite-<i>X.Y</i>
</pre>
</div></li>
</ol>

</div>

<!-- ======================================================================= -->
<h4><a name="verchanges">Update LLVM Version</a></h4>

<div>

<p>After creating the LLVM release branch, update the release branches'
   <tt>autoconf</tt> and <tt>configure.ac</tt> versions from '<tt>X.Ysvn</tt>'
   to '<tt>X.Y</tt>'. Update it on mainline as well to be the next version
   ('<tt>X.Y+1svn</tt>'). Regenerate the configure scripts for both
   <tt>llvm</tt> and the <tt>test-suite</tt>.</p>

<p>In addition, the version numbers of all the Bugzilla components must be
   updated for the next release.</p>

</div>

<!-- ======================================================================= -->
<h4><a name="dist">Build the LLVM Release Candidates</a></h4>

<div>

<p>Create release candidates for <tt>llvm</tt>, <tt>clang</tt>,
   <tt>dragonegg</tt>, and the LLVM <tt>test-suite</tt> by tagging the branch
   with the respective release candidate number. For instance, to
   create <b>Release Candidate 1</b> you would issue the following commands:</p>

<div class="doc_code">
<pre>
$ svn mkdir https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>
$ svn copy https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XY</i> \
           https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>/rc1

$ svn mkdir https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>
$ svn copy https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XY</i> \
           https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>/rc1

$ svn mkdir https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_<i>XY</i>
$ svn copy https://llvm.org/svn/llvm-project/dragonegg/branches/release_<i>XY</i> \
           https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_<i>XY</i>/rc1

$ svn mkdir https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>
$ svn copy https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XY</i> \
           https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>/rc1
</pre>
</div>

<p>Similarly, <b>Release Candidate 2</b> would be named <tt>RC2</tt> and so
   on. This keeps a permanent copy of the release candidate around for people to
   export and build as they wish. The final released sources will be tagged in
   the <tt>RELEASE_<i>XY</i></tt> directory as <tt>Final</tt>
   (c.f. <a href="#tag">Tag the LLVM Final Release</a>).</p>

<p>The Release Manager may supply pre-packaged source tarballs for users. This
   can be done with the following commands:</p>

<div class="doc_code">
<pre>
$ svn export https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>/rc1 llvm-<i>X.Y</i>rc1
$ svn export https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>/rc1 clang-<i>X.Y</i>rc1
$ svn export https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_<i>XY</i>/rc1 dragonegg-<i>X.Y</i>rc1
$ svn export https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>/rc1 llvm-test-<i>X.Y</i>rc1

$ tar -cvf - llvm-<i>X.Y</i>rc1        | gzip &gt; llvm-<i>X.Y</i>rc1.src.tar.gz
$ tar -cvf - clang-<i>X.Y</i>rc1       | gzip &gt; clang-<i>X.Y</i>rc1.src.tar.gz
$ tar -cvf - dragonegg-<i>X.Y</i>rc1   | gzip &gt; dragonegg-<i>X.Y</i>rc1.src.tar.gz
$ tar -cvf - llvm-test-<i>X.Y</i>rc1   | gzip &gt; llvm-test-<i>X.Y</i>rc1.src.tar.gz
</pre>
</div>

</div>

</div>

<!-- ======================================================================= -->
<h3><a name="release-build">Building the Release</a></h3>

<div>

<p>The builds of <tt>llvm</tt>, <tt>clang</tt>, and <tt>dragonegg</tt>
   <em>must</em> be free of errors and warnings in Debug, Release+Asserts, and
   Release builds. If all builds are clean, then the release passes Build
   Qualification.</p>

<p>The <tt>make</tt> options for building the different modes:</p>

<table>
  <tr><th>Mode</th><th>Options</th></tr>
  <tr align="left"><td>Debug</td><td><tt>ENABLE_OPTIMIZED=0</tt></td></tr>
  <tr align="left"><td>Release+Asserts</td><td><tt>ENABLE_OPTIMIZED=1</tt></td></tr>
  <tr align="left"><td>Release</td><td><tt>ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1</tt></td></tr>
</table>

<!-- ======================================================================= -->
<h4><a name="build">Build LLVM</a></h4>

<div>

<p>Build <tt>Debug</tt>, <tt>Release+Asserts</tt>, and <tt>Release</tt> versions
   of <tt>llvm</tt> on all supported platforms. Directions to build
   <tt>llvm</tt> are <a href="GettingStarted.html#quickstart">here</a>.</p>

</div>

<!-- ======================================================================= -->
<h4><a name="clangbin">Build Clang Binary Distribution</a></h4>

<div>

<p>Creating the <tt>clang</tt> binary distribution
   (Debug/Release+Asserts/Release) requires performing the following steps for
   each supported platform:</p>

<ol>
  <li>Build clang according to the directions
      <a href="http://clang.llvm.org/get_started.html">here</a>.</li>

  <li>Build both a Debug and Release version of clang. The binary will be the
      Release build.</lI>

  <li>Package <tt>clang</tt> (details to follow).</li>
</ol>

</div>

<!-- ======================================================================= -->
<h4><a name="target-build">Target Specific Build Details</a></h4>

<div>

<p>The table below specifies which compilers are used for each Arch/OS
   combination when qualifying the build of <tt>llvm</tt>, <tt>clang</tt>,
   and <tt>dragonegg</tt>.</p>

<table>
  <tr><th>Architecture</th> <th>OS</th>          <th>compiler</th></tr>
  <tr><td>x86-32</td>       <td>Mac OS 10.5</td> <td>gcc 4.0.1</td></tr>
  <tr><td>x86-32</td>       <td>Linux</td>       <td>gcc 4.2.X, gcc 4.3.X</td></tr>
  <tr><td>x86-32</td>       <td>FreeBSD</td>     <td>gcc 4.2.X</td></tr>
  <tr><td>x86-32</td>       <td>mingw</td>       <td>gcc 3.4.5</td></tr>
  <tr><td>x86-64</td>       <td>Mac OS 10.5</td> <td>gcc 4.0.1</td></tr>
  <tr><td>x86-64</td>       <td>Linux</td>       <td>gcc 4.2.X, gcc 4.3.X</td></tr>
  <tr><td>x86-64</td>       <td>FreeBSD</td>     <td>gcc 4.2.X</td></tr>
</table> 

</div>

</div>

<!-- ======================================================================= -->
<h3><a name="release-qualify">Building the Release</a></h3>

<div>

<p>A release is qualified when it has no regressions from the previous release
   (or baseline). Regressions are related to correctness first and performance
   second. (We may tolerate some minor performance regressions if they are
   deemed necessary for the general quality of the compiler.)</p>

<p><b>Regressions are new failures in the set of tests that are used to qualify
   each product and only include things on the list. Every release will have
   some bugs in it. It is the reality of developing a complex piece of
   software. We need a very concrete and definitive release criteria that
   ensures we have monotonically improving quality on some metric. The metric we
   use is described below. This doesn't mean that we don't care about other
   criteria, but these are the criteria which we found to be most important and
   which must be satisfied before a release can go out</b></p>

<!-- ======================================================================= -->
<h4><a name="llvm-qualify">Qualify LLVM</a></h4>

<div>

<p>LLVM is qualified when it has a clean test run without a front-end. And it
   has no regressions when using either <tt>clang</tt> or <tt>dragonegg</tt>
   with the <tt>test-suite</tt> from the previous release.</p>

</div>

<!-- ======================================================================= -->
<h4><a name="clang-qualify">Qualify Clang</a></h4>

<div>

<p><tt>Clang</tt> is qualified when front-end specific tests in the 
   <tt>llvm</tt> dejagnu test suite all pass, clang's own test suite passes
   cleanly, and there are no regressions in the <tt>test-suite</tt>.</p>

</div>

<!-- ======================================================================= -->
<h4><a name="targets">Specific Target Qualification Details</a></h4>

<div>

<table>
  <tr><th>Architecture</th> <th>OS</th>          <th>clang baseline</th> <th>tests</th></tr>
  <tr><td>x86-32</td>       <td>Linux</td>       <td>last release</td>   <td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
  <tr><td>x86-32</td>       <td>FreeBSD</td>     <td>last release</td>   <td>llvm dejagnu, clang tests, test-suite</td></tr>
  <tr><td>x86-32</td>       <td>mingw</td>       <td>none</td>           <td>QT</td></tr>
  <tr><td>x86-64</td>       <td>Mac OS 10.X</td> <td>last release</td>   <td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
  <tr><td>x86-64</td>       <td>Linux</td>       <td>last release</td>   <td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
  <tr><td>x86-64</td>       <td>FreeBSD</td>     <td>last release</td>   <td>llvm dejagnu, clang tests, test-suite</td></tr>
</table>

</div>

</div>

<!-- ======================================================================= -->
<h3><a name="commTest">Community Testing</a></h3>
<div>

<p>Once all testing has been completed and appropriate bugs filed, the release
   candidate tarballs are put on the website and the LLVM community is
   notified. Ask that all LLVM developers test the release in 2 ways:</p>

<ol>
  <li>Download <tt>llvm-<i>X.Y</i></tt>, <tt>llvm-test-<i>X.Y</i></tt>, and the
      appropriate <tt>clang</tt> binary. Build LLVM. Run <tt>make check</tt> and
      the full LLVM test suite (<tt>make TEST=nightly report</tt>).</li>

  <li>Download <tt>llvm-<i>X.Y</i></tt>, <tt>llvm-test-<i>X.Y</i></tt>, and the
      <tt>clang</tt> sources. Compile everything. Run <tt>make check</tt> and
      the full LLVM test suite (<tt>make TEST=nightly report</tt>).</li>
</ol>

<p>Ask LLVM developers to submit the test suite report and <tt>make check</tt>
   results to the list. Verify that there are no regressions from the previous
   release. The results are not used to qualify a release, but to spot other
   potential problems. For unsupported targets, verify that <tt>make check</tt>
   is at least clean.</p>
  
<p>During the first round of testing, all regressions must be fixed before the
   second release candidate is tagged.</p>
  
<p>If this is the second round of testing, the testing is only to ensure that
   bug fixes previously merged in have not created new major problems. <i>This
   is not the time to solve additional and unrelated bugs!</i> If no patches are
   merged in, the release is determined to be ready and the release manager may
   move onto the next stage.</p>

</div>

<!-- ======================================================================= -->
<h3><a name="release-patch">Release Patch Rules</a></h3>

<div>

<p>Below are the rules regarding patching the release branch:</p>

<ol>
  <li><p>Patches applied to the release branch may only be applied by the
      release manager.</p></li>

  <li><p>During the first round of testing, patches that fix regressions or that
      are small and relatively risk free (verified by the appropriate code
      owner) are applied to the branch. Code owners are asked to be very
      conservative in approving patches for the branch. We reserve the right to
      reject any patch that does not fix a regression as previously
      defined.</p></li>

  <li><p>During the remaining rounds of testing, only patches that fix critical
      regressions may be applied.</p></li>
</ol>

</div>

<!-- ======================================================================= -->
<h3><a name="release-final">Release Final Tasks</a></h3>

<div>

<p>The final stages of the release process involves tagging the "final" release
   branch, updating documentation that refers to the release, and updating the
   demo page.</p>

<!-- ======================================================================= -->
<h4><a name="updocs">Update Documentation</a></h4>

<div>

<p>Review the documentation and ensure that it is up to date. The "Release
   Notes" must be updated to reflect new features, bug fixes, new known issues,
   and changes in the list of supported platforms. The "Getting Started Guide"
   should be updated to reflect the new release version number tag avaiable from
   Subversion and changes in basic system requirements. Merge both changes from
   mainline into the release branch.</p>

</div>

<!-- ======================================================================= -->
<h4><a name="tag">Tag the LLVM Final Release</a></h4>

<div>

<p>Tag the final release sources using the following procedure:</p>

<div class="doc_code">
<pre>
$ svn copy https://llvm.org/svn/llvm-project/llvm/branches/release_XY \
           https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>/Final

$ svn copy https://llvm.org/svn/llvm-project/cfe/branches/release_XY \
           https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>/Final

$ svn copy https://llvm.org/svn/llvm-project/dragonegg/branches/release_XY \
           https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_<i>XY</i>/Final

$ svn copy https://llvm.org/svn/llvm-project/test-suite/branches/release_XY \
           https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>/Final
</pre>
</div>

</div>

</div>

<!-- ======================================================================= -->
<h3><a name="updemo">Update the LLVM Demo Page</a></h3>

<div>

<p>The LLVM demo page must be updated to use the new release. This consists of
   using the new <tt>clang</tt> binary and building LLVM.</p>

<!-- ======================================================================= -->
<h4><a name="webupdates">Update the LLVM Website</a></h4>

<div>

<p>The website must be updated before the release announcement is sent out. Here
   is what to do:</p>

<ol>
  <li>Check out the <tt>www</tt> module from Subversion.</li>

  <li>Create a new subdirectory <tt>X.Y</tt> in the releases directory.</li>

  <li>Commit the <tt>llvm</tt>, <tt>test-suite</tt>, <tt>clang</tt> source,
      <tt>clang binaries</tt>, <tt>dragonegg</tt> source, and <tt>dragonegg</tt>
      binaries in this new directory.</li>

  <li>Copy and commit the <tt>llvm/docs</tt> and <tt>LICENSE.txt</tt> files
      into this new directory. The docs should be built with
      <tt>BUILD_FOR_WEBSITE=1</tt>.</li>

  <li>Commit the <tt>index.html</tt> to the <tt>release/X.Y</tt> directory to
      redirect (use from previous release.</li>

  <li>Update the <tt>releases/download.html</tt> file with the new release.</li>

  <li>Update the <tt>releases/index.html</tt> with the new release and link to
      release documentation.</li>

  <li>Finally, update the main page (<tt>index.html</tt> and sidebar) to point
      to the new release and release announcement. Make sure this all gets
      committed back into Subversion.</li>
</ol>

</div>

<!-- ======================================================================= -->
<h4><a name="announce">Announce the Release</a></h4>

<div>

<p>Have Chris send out the release announcement when everything is finished.</p>

</div>

</div>

</div>

<!-- *********************************************************************** -->
<hr>
<address>
  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
  <a href="http://validator.w3.org/check/referer"><img
  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a>
  <br>
  Last modified: $Date$
</address>
</body>
</html>
