summaryrefslogtreecommitdiffstats
path: root/www/roadmap.html
blob: f7d079971c9825c2c3843914fe27a3b951d7f2ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
<html>
<head>
</head>
<body>

<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 current testing pre-release is 0.96.92, released 10 April 2006.
</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.93</td>
<td>???</td>
<td>
Significant speed up of some specific configurations,
plus accumulated patches with bug fixes and new functionality.
Fix for the one regression found so far in 0.96.92
(printing an incorrect message when executing the InstallAs() function).
</td>
</tr>
<tr>
<td>0.96.94</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 SConstruct
  (not SConscript) 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, #ifdef analysis)
  </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>sub</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 releases will add new functionality 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.
</p>
</li>
<li>
<strong>Bug-fix release (1.1.1, 1.1.2, 1.1.3, etc.)</strong>
<p>
Sub-release numbers are used
whenever a critical bug fix is necessary
for a major or minor release.
</p>
</li>
<li>
<strong>Testing pre-release (1.1.90, 1.1.91, 1.1.92, etc.)</strong>
<p>
A sub-release 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>