SCons / www / roadmap.html

<html>
<head>
<title>scons: Release Roadmap</title>
</head>
<body>

<div id="apphead">
<h1><small>Release Roadmap</small></h1>
</div>

<div class="h2 app" style="border-left: 0px" id="customcontent">

<h2>Current Releases</h2>

<p>
The current stable release is 0.96.1, released 23 August 2004.
</p>

<p>
The latest testing pre-release is 0.96.94, released 7 January 2007.
</p>

<p>
(Yes, the current "stable" release is a little long in the tooth.
In practice, most everyone uses the testing pre-releases,
because our testing methodology gives us a pretty good
track record of not breaking things from release to release.)
</p>

<h2>Upcoming Releases</h2>

Take these with a huge grain of salt,
this is very rough planning
and subject to change.

<table>
<tr>
<th>Release</th>
<th>Est. Date?</th>
<th>
Goals
</th>
</tr>
<tr>
<td>0.96.94</td>
<td>???</td>
<td>
The last (?) pre-release before the "Big Signature Refactoring"
changes internal data structures.
  <ul>
  <li>
  Fix for the one regression found so far in 0.96.92
  (printing an incorrect message when executing the InstallAs() function)
  </li>
  <li>
  Significant speed up of some specific configurations
  </li>
  <li>
  Integration of accumulated patches with bug fixes and new functionality
  </li>
  </ul>
</td>
</tr>
<tr>
<td>0.96.95</td>
<td>???</td>
<td>
Testing pre-release of the "Big Signature Refactoring,"
a significant re-design of internal data structures
to accomplish the following:
  <ul>
  <li>
  Interoperability between MD5 signatures and timestamps
  </li>
  <li>
  Ability to partition the dependency graph into separate <tt>SConstruct</tt>
  (not just <tt>SConscript</tt>) files.
  </li>
  <li>
  Hooks for supporting tool-generated dependency information
  (like <tt>gcc -M</tt>)
  </li>
  <li>
  Improved performance (we hope)
  </li>
  </ul>
</td>
</tr>
<tr>
<td>0.97</td>
<td>???</td>
<td>
Wider release and more extensive field testing before
declaring the "Big Signature Refactoring"
ready to be blessed as the official 1.0 release.
Additional features and bug fixes.
</td>
</tr>
<tr>
<td>1.0</td>
<td>???</td>
<td>
First official, stable release.
No 1.x release will (knowingly) break compatibility
or cause a rebuild on upgrade.
The following features have been suggested as prerequisites
for a fully-feature 1.0 release:
  <ul>
  <li>
  C/C++ dependency scanning that acts like a real C preprocessor
  (computed file names, <tt>#ifdef</tt> analysis, <tt>#include_next</tt> support)
  </li>
  </ul>
</td>
</tr>
<tr>
<td>2.0</td>
<td>???</td>
<td>
First release that will break backwards compatibility with Python 1.5.2.
</td>
</tr>
</table>

<!--

<h2>Upcoming Features</h2>

-->

<h2>Release Planning</h2>

<h3>Why has 1.0 still not been released?</h3>

<p>
As seems so common these days,
SCons has had an extremely lengthy "beta" period.
The primary goal has been to arrive at something by 1.0
that we feel is absolutely rock-solid-stable
and which people can download and use without fear of
broken builds or unnecessary rebuilds.
To get some idea of how we do this, see our
<a href="testing.html">testing philosophy</a> page.
</p>

<h3>Release numbering</h3>

<p>
Our release numbers are of the form <i>major</i>.<i>minor</i>.<i>revision</i>.
</p>

<ul>
<li>
<strong>Major release (1.0, 2.0, 3.0, etc.)</strong>
<p>
The major number increments when one of two things happens:
  <ul>
  <li>The release knowingly breaks backwards compatibility in some way.
  <li>The release knowingly causes a rebuild when you upgrade.
  </ul>
Our goal is that as a user of SCons,
you should always be able to upgrade to a later
revision of the same major number
with complete confidence that your build will not break.
</p>
</li>
<li>
<strong>Minor release (1.1, 1.2, 1.3, etc.)</strong>
<p>
Minor numbers increment for release that
adds new functionality and/or bug fixes
to an existing major release branch.
All new functionality will be added so as to never
knowingly break backwards compatibility with any
previous minor releases from the same branch.
We expect that our major release branches will be long-lived
platforms for delivering many minor releases to
add functionality and fix bugs.
</p>
</li>
<li>
<strong>Bug-fix revisions (1.1.1, 1.1.2, 1.1.3, etc.)</strong>
<p>
Revision numbers are appended and/or incremented
whenever a critical bug fix is necessary
for a major or minor release.
Bedause most new functionality and bug fixes
will be delivered in minor releases,
we expect that there will be few of these--at most
one per minor release.
</p>
</li>
<li>
<strong>Testing pre-release (1.1.90, 1.1.91, 1.1.92, etc.)</strong>
<p>
A revision number of 90 or greater
indicates the release is intended for
testing a set of new features intended for
wider distribution in the next major or minor release.
There may be many of these
leading up to a release
with a lot of significant internal changes
(<i>*cough*</i> 0.97 <i>*cough*</i>...).
</p>
</li>
</ul>

</div>

</body>
</html>
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.