c7b46fdd86c2bd57a5277adc623a9259bda2156a
[scons.git] / src / RELEASE.txt
1 # __COPYRIGHT__
2 # __FILE__ __REVISION__ __DATE__ __DEVELOPER__
3
4
5                  SCons - a software construction tool
6
7                             Release Notes
8
9
10 This is a beta release of SCons, a tool for building software (and other
11 files).  SCons is implemented in Python, and its "configuration files"
12 are actually Python scripts, allowing you to use the full power of a
13 real scripting language to solve build problems.  You do not, however,
14 need to know Python to use SCons effectively.
15
16 So that everyone using SCons can help each other learn how to use it
17 more effectively, please sign up for the scons-users mailing list at:
18
19     http://lists.sourceforge.net/lists/listinfo/scons-users
20
21
22
23 RELEASE 0.96 - XXX
24
25   This is the seventh beta release of SCons.  Please consult the
26   CHANGES.txt file for a list of specific changes since last release.
27
28   Please note the following important changes since release 0.95:
29
30     - The SConsignFile() function now uses an internally-supplied
31       SCons.dblite module as the default DB scheme for the .sconsign file.
32       If you are using the SConsignFile() function without an explicitly
33       specified dbm_module argument, this will cause all of your targets
34       to be recompiled the first time you use SCons 0.96.  To preserve the
35       previous behavior, specify the "anydbm" module explicitly:
36
37           import anydbm
38           SConsignFile('.sconsign_file_name', anydbm)
39
40     - The internal Scanner.add_skey() method longer works for the default
41       scanners, which now use construction variables to hold their lists
42       of suffixes.  If you had a custom Tool specification that was
43       reaching into the internals in this way to add a suffix to one of
44       the following scanner, you must now add the suffix to a construction
45       environment through which you plan to call the scanner, as follows:
46
47
48           CScan.add_skey('.x')       => env.Append(CPPSUFFIXES = ['.x'])
49           DScan.add_skey('.x')       => env.Append(DSUFFIXES = ['.x'])
50           FortranScan.add_skey('.x') => env.Append(FORTRANSUFFIXES = ['.x'])
51
52     - The behavior of the env.Append() and env.Prepend() methods has
53       changed when appending a string value to a UserList, or vice versa.
54       They now behave like normal Python addition of a string to
55       a UserList.  Given an initialization and an env.Append() call like:
56
57           env = Environment(VAR1=UserList(['foo']), VAR2='foo')
58           env.Append(VAR1='bar', VAR2=UserList(['bar'])
59
60       The resulting values of $VAR1 and $VAR2 will now be ['foo', 'b',
61       'a', 'r'] and ['f', 'o', 'o', 'bar'], respectively.  This is because
62       Python UserList objects treat strings as sequences of letters when
63       adding them to the value of the UserList.
64
65       The old behavior of yielding $VAR1 and $VAR2 values of ['foo',
66       'bar'] when either variable is a UserList object now requires that
67       the string variables be enclosed in a list:
68
69           env = Environment(VAR1=UserList(['foo']), VAR2=['foo'])
70           env.Append(VAR1='bar', VAR2=UserList(['bar']))
71
72       Note that the SCons behavior when appending to normal lists has
73       *not* changed, and the behavior of all of the default values that
74       SCons uses to initialize all construction variables has *not*
75       changed.  This change *only* affects any cases where you explicitly
76       use UserList objects to initialize or append to a variable.
77
78   Please note the following important changes since release 0.94:
79
80     - The internal Python function used by the Zip Builder in Python
81       releases 1.6 or later now compresses the resulting .zip file
82       by default.  The old behavior of creating an uncompressed file
83       may be preserved by setting the new ZIPCOMPRESSION construction
84       variable to 0 (or zipfile.ZIP_STORED, if you import the
85       underlying zipfile module).
86
87     - The "overrides" keyword argument to calls to the Builder() function
88       used to create new Builder objects has been deprecated and will
89       be removed in a future release.  The items in an "overrides"
90       dictionary should now be specified as keyword arguments:
91
92           # Old way, "overrides" is a dictionary:
93           Builder(action = 'cp $TDIR/$TARGET $SDIR/$SOURCE',
94                   overrides = {'TDIR' : dir1, 'SDIR' : dir2})
95
96           # New way, items are specified as keyword arguments:
97           Builder(action = 'cp $TDIR/$TARGET $SDIR/$SOURCE',
98                   TDIR = dir1, SDIR = dir2)
99
100     - The meaning of some of the values of the "mode" argument to
101       the SCons.Util.scons_subst() and SCons.Util.scons_subst_list()
102       functions have been swapped.  The wrapper Environment.subst() and
103       Environment.subst_list() methods remain completely unchanged, so
104       this should have no external effect.  (We've listed the change here
105       because it might cause a problem if you're reaching into the SCons
106       internals and calling either of these SCons.Util functions directly.)
107
108   Please note the following FUTURE changes that you may wish to prepare
109   for:
110
111     - When compiling with Microsoft Visual Studio, SCons currently adds
112       the ATL and MFC directories to the INCLUDE and LIB environment
113       variables by default.  This default behavior will be changed in
114       a future release; the current plan is to change it for the 0.97
115       release (next release).
116
117       Whether or not the ATL and MFC directories are added to these
118       environment variables is now controlled by a new MSVS_USE_MFC_DIRS
119       *construction* variable.  Setting this variable to a non-zero
120       value when you initialize an Environment will ensure that these
121       directories will be included in your external path(s) even when
122       the default behavior changes:
123
124           env = Environment(MSVS_USE_MFC_DIRS = 1)
125
126       The MSVS_USE_MFC_DIRS variable may, of course, be set to 0 (or
127       None) to prevent SCons from adding the ATL and MFC directories to
128       the INCLUDE and LIB environment variables.
129
130   SCons is developed with an extensive regression test suite, and a
131   rigorous development methodology for continually improving that suite.
132   Because of this, SCons is of sufficient quality that you can use it
133   for real work.  The "beta" status of the release reflects that we
134   still may change interfaces in future releases, which may require
135   modifications to your SConscript files.  We strive to hold these
136   changes to a minimum.
137
138   Nevertheless, please heed the following disclaimers:
139
140     - Please report any bugs or other problems that you find to our bug
141       tracker at our SourceForge project page:
142
143       http://sourceforge.net/tracker/?func=add&group_id=30337&atid=398971
144
145       We have a reliable bug-fixing methodology already in place and
146       strive to respond to problems relatively quickly.
147
148     - Documentation is spottier than we'd like.  You may need to dive
149       into the source code to figure out how to do something.  Asking
150       questions on the scons-users mailing list is also welcome.  We
151       will be addressing the documentation in upcoming releases, but
152       would be more than glad to have your assistance in correcting this
153       problem... :-)
154
155       In particular, the "SCons Design" documentation on the SCons web
156       site is currently out of date, as we made significant changes to
157       portions of the interface as we figured out what worked and what
158       didn't during implementation.
159
160     - There may be performance issues.  Improving SCons performance
161       is an ongoing priority.  If you still find the performance
162       unacceptable, we would very much like to hear from you and learn
163       more about your configuration so we can optimize the right things.
164
165     - Error messages don't always exist where they'd be helpful.
166       Please let us know about any errors you ran into that would
167       have benefitted from a (more) descriptive message.
168
169   KNOWN PROBLEMS IN THIS RELEASE:
170
171     For a complete list of known problems, consult the SCons bug tracker
172     page at SourceForge:
173
174         http://sourceforge.net/tracker/?atid=398971&group_id=30337&func=browse
175
176     - Support for parallel builds (-j) does not work on WIN32 systems
177       prior to *official* Python release 2.2 (not 2.2 pre-releases).
178
179       Prior to Python 2.2, there is a bug in Python's Win32
180       implementation such that when a thread spawns an external command,
181       it blocks all threads from running.  This breaks the SCons
182       multithreading architecture used to support -j builds.
183
184       We have included a patch file, os_spawnv_fix.diff, that you can
185       use if you you want to fix your version of Python to support
186       parallel builds in SCons.
187
188     - Again, the "SCons Design" documentation on the SCons web
189       site is currently out of date.  Take what you read there with a
190       grain of salt.
191
192     - If a file is specified to be built in multiple ways, the last
193       processed builder specification overwrites all other builders,
194       without any warning.
195
196     - On Win32 systems, you must put a space between the redirection
197       characters < and >, and the specified files (or construction
198       variable expansions):
199
200         command < $SOURCE > $TARGET
201
202       If you don't supply a space (for example, "<$SOURCE"), SCons will
203       not recognize the redirection.
204
205     - People have reported problems with SCons not stopping a build when
206       an interrupt (CTRL+C) is received.  A fix was checked in to 0.11
207       that should fix this behavior on many systems, but there are
208       issues with the underlying Python os.system() call that suggest
209       this fix does not work on all systems or in all circumstances.
210       We're working to try to find a universal solution.
211
212     - Modifying a construction environment in a subsidiary SConscript
213       file modifies the global environment.
214
215     - MSVC .res files are not rebuilt when icons change.
216
217     - The -c option does not clean up .sconsign files or directories
218       created as part of the build, and also does not clean up
219       SideEffect files (for example, Visual Studio .pdb files).
220
221     - Switching content signatures from "MD5" to "timestamp" and back
222       again can cause unusual errors.  These errors can be cleared up by
223       removing all .sconsign files.
224
225     - When using multiple Repositories, changing the name of an include
226       file can cause an old version of the file to be used.
227
228     - There is currently no way to force use of a relative path (../*)
229       for directories outside the top-level SConstruct file.
230
231     - The Jar() Builder will, on its second or subsequent invocation,
232       package up the .sconsign files that SCons uses to track signatures.
233       You can work around this by using the SConsignFile() function
234       to collect all of the .sconsign information into a single file
235       outside of the directory being packaged by Jar().
236
237     - SCons does not currently have a way to detect that an intermediate
238       file has been corrupted from outside and should be rebuilt.
239
240     - Unicode characters in path names do not work in all circumstances.
241
242     - A stray source file in a BuildDir can prevent targets from being
243       (re)built when they should.
244
245     - SCons does not automatically rebuild LaTeX files when the file
246       has an undefined reference on the first build.
247
248     - SideEffect() files are not retrieved properly from a CacheDir(),
249       and can lead to a stack trace.
250
251     - Use of --implicit-cache with TargetSignatures('content') can,
252       for some changes, not rebuild a file when necessary.
253
254     - SCons does not currently automatically check out SConstruct or
255       SConscript files from SCCS, RCS or BitKeeper.
256
257     - The Command() global function (specified without a construction
258       environment) is broken.
259
260     - No support yet for the following planned command-line options:
261
262          -d -e -l --list-actions --list-derived --list-where
263          -o --override -p -r -R -w --write-filenames
264          -W --warn-undefined-variables
265
266
267
268 Thank you for your interest, and please let us know how we can help
269 improve SCons for your needs.
270
271 Steven Knight
272 knight at baldmt dot com
273 http://www.baldmt.com/~knight/
274
275 With plenty of help from the SCons Development team:
276         Chad Austin
277         Charles Crain
278         Steve Leblanc
279         Gary Oberbrunner
280         Anthony Roach
281         Greg Spencer
282         Christoph Wiedemann
283