Add CacheDir support.
[scons.git] / src / CHANGES.txt
1 # __COPYRIGHT__
2 # __FILE__ __REVISION__ __DATE__ __DEVELOPER__
3
4
5                  SCons - a software construction tool
6
7                             Change Log
8
9
10
11 RELEASE 0.11 - XXX
12
13   From Chad Austin:
14
15   - Add support for IRIX and the SGI MIPSPro tool chain.
16
17   From Charles Crain:
18
19   - Added new AddPreAction() and AddPostAction() functions that support
20     taking additional actions before or after building specific targets.
21
22   - Add support for the PharLap ETS tool chain.
23
24   From Steven Knight:
25
26   - Allow Python function Actions to specify a list of construction
27     variables that should be included in the Action's signature.
28
29   - Allow libraries in the LIBS variable to explicitly include the prefix
30     and suffix, even when using the GNU linker.
31     (Bug reported by Neal Becker.)
32
33   - Use DOS-standard CR-LF line endings in the scons.bat file.
34     (Bug reported by Gary Ruben.)
35
36   - Doc changes:  Eliminate description of deprecated "name" keyword
37     argument from Builder definition (reported by Gary Ruben).
38
39   - Support using env.Append() on BUILDERS (and other dictionaries).
40     (Bug reported by Bj=F6rn Bylander.)
41
42   - Setting the BUILDERS construction variable now properly clears
43     the previous Builder attributes from the construction Environment.
44     (Bug reported by Bj=F6rn Bylander.)
45
46   - Fix adding a prefix to a file when the target isn't specified.
47     (Bug reported by Esa Ilari Vuokko.)
48
49   - Clean up error messages from problems duplicating into read-only
50     BuildDir directories or into read-only files.
51
52   - Add a CommandAction.strfunction() method, and add an "env" argument
53     to the FunctionAction.strfunction() method, so that all Action
54     objects have strfunction() methods, and the functions for building
55     and returning a string both take the same arguments.
56
57   - Add support for new CacheDir() functionality to share derived files
58     between builds, with related options --cache-disable, --cache-force,
59     and --cache-show.
60
61   From Steve Leblanc:
62
63   - Fix the output of -c -n when directories are involved, so it
64     matches -c.
65
66   From Anthony Roach:
67
68   - Use a different static object suffix (.os) when using gcc so shared
69     and static objects can exist side-by-side in the same directory.
70
71   - Allow the same object files on Win32 to be linked into either
72     shared or static libraries.
73
74
75
76 RELEASE 0.10 - Thu, 16 Jan 2003 04:11:46 -0600
77
78   From Derrick 'dman' Hudson:
79
80   - Support Repositories on other file systems by symlinking or
81     copying files when hard linking won't work.
82
83   From Steven Knight:
84
85   - Remove Python bytecode (*.pyc) files from the scons-local packages.
86
87   - Have FunctionActions print a description of what they're doing
88     (a representation of the Python call).
89
90   - Fix the Install() method so that, like other actions, it prints
91     what would have happened when the -n option is used.
92
93   - Don't create duplicate source files in a BuildDir when the -n
94     option is used.
95
96   - Refactor the Scanner interface to eliminate unnecessary Scanner
97     calls and make it easier to write efficient scanners.
98
99   - Added a "recursive" flag to Scanner creation that specifies the
100     Scanner should be invoked recursively on dependency files returned
101     by the scanner.
102
103   - Significant performance improvement from using a more efficient
104     check, throughout the code, for whether a Node has a Builder.
105
106   - Fix specifying only the source file to MultiStepBuilders such as
107     the Program Builder.  (Bug reported by Dean Bair.)
108
109   - Fix an exception when building from a file with the same basename as
110     the subdirectory in which it lives.  (Bug reported by Gerard Patel.)
111
112   - Fix automatic deduction of a target file name when there are
113     multiple source files specified; the target is now deduced from just
114     the first source file in the list.
115
116   - Documentation fixes: better initial explanation of SConscript files;
117     fix a misformatted "table" in the StaticObject explanation.
118
119   From Steven Knight and Steve Leblanc:
120
121   - Fix the -c option so it will remove symlinks.
122
123   From Steve Leblanc:
124
125   - Add a Clean() method to support removing user-specified targets
126     when using the -c option.
127
128   - Add a development script for running SCons through PyChecker.
129
130   - Clean up things found by PyChecker (mostly unnecessary imports).
131
132   - Add a script to use HappyDoc to create HTML class documentation.
133
134   From Lachlan O'Dea:
135
136   - Make the Environment.get() method return None by default.
137
138   From Anthony Roach:
139
140   - Add SetJobs() and GetJobs() methods to allow configuration of the
141     number of default jobs (still overridden by -j).
142
143   - Convert the .sconsign file format from ASCII to a pickled Python
144     data structure.
145
146   - Error message cleanups:  Made consistent the format of error
147     messages (now all start with "scons: ***") and warning messages (now
148     all start with "scons: warning:").  Caught more cases with the "Do
149     not know how to build" error message.
150
151   - Added support for the MinGW tool chain.
152
153   - Added a --debug=includes option.
154
155
156
157 RELEASE 0.09 - Thu,  5 Dec 2002 04:48:25 -0600
158
159   From Chad Austin:
160
161   - Add a Prepend() method to Environments, to append values to
162     the beginning of construction variables.
163
164   From Matt Balvin:
165
166   - Add long command-line support to the "lib" Tool (Microsoft library
167     archiver), too.
168
169   From Charles Crain:
170
171   - Allow $$ in a string to be passed through as $.
172
173   - Support file names with odd characters in them.
174
175   - Add support for construction variable substition on scanner
176     directories (in CPPPATH, F77PATH, LIBPATH, etc.).
177
178   From Charles Crain and Steven Knight:
179
180   - Add Repository() functionality, including the -Y option.
181
182   From Steven Knight:
183
184   - Fix auto-deduction of target names so that deduced targets end
185     up in the same subdirectory as the source.
186
187   - Don't remove source files specified on the command line!
188
189   - Suport the Intel Fortran Compiler (ifl.exe).
190
191   - Supply an error message if there are no command-line or
192     Default() targets specified.
193
194   - Fix the ASPPCOM values for the GNU assembler.
195     (Bug reported by Brett Polivka.)
196
197   - Fix an exception thrown when a Default() directory was specified
198     when using the -U option.
199
200   - Issue a warning when -c can't remove a target.
201
202   - Eliminate unnecessary Scanner calls by checking for the
203     existence of a file before scanning it.  (This adds a generic
204     hook to check an arbitrary condition before scanning.)
205
206   - Add explicit messages to tell when we're "Reading SConscript files
207     ...," "done reading SConscript files," "Building targets," and
208     "done building targets."  Add a -Q option to supress these.
209
210   - Add separate $SHOBJPREFIX and $SHOBJSUFFIX construction variables
211     (by default, the same as $OBJPREFIX and $OBJSUFFIX).
212
213   - Add Make-like error messages when asked to build a source file,
214     and before trying to build a file that doesn't have all its source
215     files (including when an invalid drive letter is used on WIN32).
216
217   - Add an scons-local-{version} package (in both .tar.gz and .zip
218     flavors) to help people who want to ship SCons as a stand-alone
219     build tool in their software packages.
220
221   - Prevent SCons from unlinking files in certain situations when
222     the -n option is used.
223
224   - Change the name of Tool/lib.py to Tool/mslib.py.
225
226   From Steven Knight and Anthony Roach:
227
228   - Man page:  document the fact that Builder calls return Node objects.
229
230   From Steve LeBlanc:
231
232   - Refactor option processing to use our own version of Greg Ward's
233     Optik module, modified to run under Python 1.5.2.
234
235   - Add a ParseConfig() command to modify an environment based on
236     parsing output from a *-config command.
237
238   From Jeff Petkau:
239
240   - Fix interpretation of '#/../foo' on Win32 systems.
241
242   From Anthony Roach:
243
244   - Fixed use of command lines with spaces in their arguments,
245     and use of Nodes with spaces in their string representation.
246
247   - Make access and modification times of files in a BuildDir match
248     the source file, even when hard linking isn't available.
249
250   - Make -U be case insensitive on Win32 systems.
251
252   - Issue a warning and continue when finding a corrupt .sconsign file.
253
254   - Fix using an alias as a dependency of a target so that if one of the
255     alias' dependencies gets rebuilt, the resulting target will, too.
256
257   - Fix differently ordered targets causing unnecessary rebuilds
258     on case insensitive systems.
259
260   - Use os.system() to execute external commands whenever the "env"
261     utility is available, which is much faster than fork()/exec(),
262     and fixes the -j option on several platforms.
263
264   - Fix use of -j with multiple targets.
265
266   - Add an Options() object for friendlier accomodation of command-
267     line arguments.
268
269   - Add support for Microsoft VC++ precompiled header (.pch) files,
270     debugger (.pdb) files, and resource (.rc) files.
271
272   - Don't compute the $_CPPINCFLAGS, $_F77INCFLAGS, $_LIBFLAGS and
273     $_LIBDIRFLAGS variables each time a command is executed, define
274     them so they're computed only as needed.  Add a new _concat
275     function to the Environment that allows people to define their
276     own similar variables.
277
278   - Fix dependency scans when $LIBS is overridden.
279
280   - Add EnsurePythonVersion() and EnsureSConsVersion() functions.
281
282   - Fix the overly-verbose stack trace on ListBuilder build errors.
283
284   - Add a SetContentSignatureType() function, allowing use of file
285     timestamps instead of MD5 signatures.
286
287   - Make -U and Default('source') fail gracefully.
288
289   - Allow the File() and Dir() methods to take a path-name string as
290     the starting directory, in addition to a Dir object.
291
292   - Allow the command handler to be selected via the SPAWN, SHELL
293     and ESCAPE construction variables.
294
295   - Allow construction variables to be overridden when a Builder
296     is called.
297
298   From sam th:
299
300   - Dynamically check for the existence of utilities with which to
301     initialize Environments by default.
302
303
304
305 RELEASE 0.08 - Mon, 15 Jul 2002 12:08:51 -0500
306
307   From Charles Crain:
308
309   - Fixed a bug with relative CPPPATH dirs when using BuildDir().
310     (Bug reported by Bob Summerwill.)
311
312   - Added a warnings framework and a --warn option to enable or
313     disable warnings.
314
315   - Make the C scanner warn users if files referenced by #include
316     directives cannot be found and --warn=dependency is specified.
317
318   - The BUILDERS construction variable should now be a dictionary
319     that maps builder names to actions.  Existing uses of lists,
320     and the Builder name= keyword argument, generate warnings
321     about use of deprecated features.
322
323   - Removed the "shared" keyword argument from the Object and
324     Library builders.
325     
326   - Added separated StaticObject, SharedObject, StaticLibrary and
327     SharedLibrary builders.  Made Object and Library synonyms for
328     StaticObject and StaticLibrary, respectively.
329
330   - Add LIBS and LIBPATH dependencies for shared libraries.
331
332   - Removed support for the prefix, suffix and src_suffix arguments
333     to Builder() to be callable functions.
334
335   - Fix handling file names with multiple dots.
336
337   - Allow a build directory to be outside of the SConstruct tree.
338
339   - Add a FindFile() function that searches for a file node with a
340     specified name.
341
342   - Add $CPPFLAGS to the shared-object command lines for g++ and gcc.
343
344   From Charles Crain and Steven Knight:
345
346   - Add a "tools=" keyword argument to Environment instantiation,
347     and a separate Tools() method, for more flexible specification
348     of tool-specific environment changes.
349
350   From Steven Knight:
351
352   - Add a "platform=" keyword argument to Environment instantiation,
353     and a separate Platform() method, for more flexible specification
354     of platform-specific environment changes.
355
356   - Updated README instructions and setup.py code to catch an
357     installation failure from not having distutils installed.
358
359   - Add descriptions to the -H help text for -D, -u and -U so
360     people can tell them apart.
361
362   - Remove the old feature of automatically splitting strings
363     of file names on white space.
364
365   - Add a dependency Scanner for native Fortran "include" statements,
366     using a new "F77PATH" construction variable.
367
368   - Fix C #include scanning to detect file names with characters like
369     '-' in them.
370
371   - Add more specific version / build output to the -v option.
372
373   - Add support for the GNU as, Microsoft masm, and nasm assemblers.
374
375   - Allow the "target" argument to a Builder call to be omitted, in
376     which case the target(s) are deduced from the source file(s) and the
377     Builder's specified suffix.
378
379   - Add a tar archive builder.
380
381   - Add preliminary support for the OS/2 Platform, including the icc
382     and ilink Tools.
383
384   From Jeff Petkau:
385
386   - Fix --implicit-cache if the scanner returns an empty list.
387
388   From Anthony Roach:
389
390   - Add a "multi" keyword argument to Builder creation that specifies
391     it's okay to call the builder multiple times for a target.
392
393   - Set a "multi" on Aliases so multiple calls will append to an Alias.
394
395   - Fix emitter functions' use of path names when using BuildDir or
396     in subdirectories.
397
398   - Fix --implicit-cache causing redundant rebuilds when the header
399     file list changed.
400
401   - Fix --implicit-cache when a file has no implicit dependencies and
402     its source is generated.
403
404   - Make the drive letters on Windows always be the same case, so that
405     changes in the case of drive letters don't cause a rebuild.
406
407   - Fall back to importing the SCons.TimeStamp module if the SCons.MD5
408     module can't be imported.
409
410   - Fix interrupt handling to guarantee that a single interrupt will
411     halt SCons both when using -j and not.
412
413   - Fix .sconsign signature storage so that output files of one build
414     can be safely used as input files to another build.
415
416   - Added a --debug=time option to print SCons execution times.
417
418   - Print an error message if a file can't be unlinked before being
419     built, rather than just silently terminating the build.
420
421   - Add a SideEffect() method that can be used to tell the build
422     engine that a given file is created as a side effect of building
423     a target.  A file can be specified as a side effect of more than
424     one build comand, in which case the commands will not be executed
425     simultaneously.
426
427   - Significant performance gains from not using our own version of
428     the inefficient stock os.path.splitext() method, caching source
429     suffix computation, code cleanup in MultiStepBuilder.__call__(),
430     and replicating some logic in scons_subst().
431
432   - Add --implicit-deps-changed and --implicit-deps-unchanged options.
433
434   - Add a GetLaunchDir() function.
435
436   - Add a SetBuildSignatureType() function.
437
438   From Zed Shaw:
439
440   - Add an Append() method to Environments, to append values to
441     construction variables.
442
443   - Change the name of Update() to Replace().  Keep Update() as a
444     deprecated synonym, at least for now.
445
446   From Terrel Shumway:
447
448   - Use a $PYTHON construction variable, initialized to sys.executable,
449     when using Python to build parts of the SCons packages.
450
451   - Use sys.prefix, not sys.exec_prefix, to find pdb.py.
452
453
454
455 RELEASE 0.07 - Thu,  2 May 2002 13:37:16 -0500
456
457   From Chad Austin:
458
459   - Changes to build SCons packages on IRIX (and other *NIces).
460
461   - Don't create a directory Node when a file already exists there,
462     and vice versa.
463
464   - Add 'dirs' and 'names' keyword arguments to SConscript for
465     easier specification of subsidiary SConscript files.
466
467   From Charles Crain:
468
469   - Internal cleanup of environment passing to function Actions.
470
471   - Builders can now take arbitrary keyword arguments to create
472     attributes to be passed to: command generator functions,
473     FunctionAction functions, Builder emitter functions (below),
474     and prefix/suffix generator functions (below).
475
476   - Command generator functions can now return ANYTHING that can be
477     converted into an Action (a function, a string, a CommandGenerator
478     instance, even an ActionBase instance).
479
480   - Actions now call get_contents() with the actual target and source
481     nodes used for the build.
482
483   - A new DictCmdGenerator class replaces CompositeBuilder to support
484     more flexible Builder behavior internally.
485
486   - Builders can now take an emitter= keyword argument.  An emitter
487     is a function that takes target, source, and env argument, then
488     return a 2-tuple of (new sources, new targets).  The emitter is
489     called when the Builder is __call__'ed, allowing a user to modify
490     source and target lists.
491
492   - The prefix, suffix and src_suffix Builder arguments now take a
493     callable as well a string.  The callable is passed the Environment
494     and any extra Builder keyword arguments and is expected to return
495     the appropriate prefix or suffix.
496
497   - CommandActions can now be a string, a list of command + argument
498     strings, or a list of commands (strings or lists).
499
500   - Added shared library support.  The Object and Library Builders now
501     take a "shared=1" keyword argument to specify that a shared object
502     or shared library should be built.  It is an error to try to build
503     static objects into a shared library or vice versa.
504
505   - Win32 support for .def files has been added.  Added the Win32-specific
506     construction variables $WIN32DEFPREFIX, $WIN32DEFSUFFIX,
507     $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX.  When building a .dll,
508     the new construction variable $WIN32_INSERT_DEF, controls whether
509     the appropriately-named .def file is inserted into the target
510     list (if not already present).  A .lib file is always added to
511     a Library build if not present in the list of targets.
512
513   - ListBuilder now passes all targets to the action, not just the first.
514
515   - Fix so that -c now deletes generated yacc .h files.
516
517   - Builder actions and emitter functions can now be initialized, through
518     construction variables, to things other than strings.
519
520   - Make top-relative '#/dir' lookups work like '#dir'.
521
522   - Fix for relative CPPPATH directories in subsidiary SConscript files
523     (broken in 0.06).
524
525   - Add a for_signature argument to command generators, so that
526     generators that need to can return distinct values for the
527     command signature and for executing the command.
528
529   From Alex Jacques:
530
531   - Create a better scons.bat file from a py2bat.py script on the Python
532     mailing list two years ago (modeled after pl2bat.pl).
533
534   From Steven Knight:
535
536   - Fix so that -c -n does *not* remove the targets!
537
538   - Man page:  Add a hierarchical libraries + Program example.
539
540   - Support long MSVC linker command lines through a builder action
541     that writes to a temporary file and uses the magic MSVC "link @file"
542     argument syntax if the line is longer than 2K characters.
543
544   - Fix F77 command-line options on Win32 (use /Fo instead of -o).
545
546   - Use the same action to build from .c (lower case) and .C (upper
547     case) files on case-insensitive systems like Win32.
548
549   - Support building a PDF file directly from a TeX or LaTeX file
550     using pdftex or pdflatex.
551
552   - Add a -x option to runtest.py to specify the script being tested.
553     A -X option indicates it's an executable, not a script to feed
554     to the Python interpreter.
555
556   - Add a Split() function (identical to SCons.Util.argmunge()) for use
557     in the next release, when Builders will no longer automatically split
558     strings on white space.
559
560   From Steve Leblanc:
561
562   - Add the SConscriptChdir() method.
563
564   From Anthony Roach:
565
566   - Fix --debug=tree when used with directory targets.
567
568   - Significant internal restructuring of Scanners and Taskmaster.
569
570   - Added new --debug=dtree option.
571
572   - Fixes for --profile option.
573
574   - Performance improvement in construction variable substitution.
575
576   - Implemented caching of content signatures, plus added --max-drift
577     option to control caching.
578
579   - Implemented caching of dependency signatures, enabled by new
580     --implicit-cache option.
581
582   - Added abspath construction variable modifier.
583
584   - Added $SOURCE variable as a synonym for $SOURCES[0].
585
586   - Write out .sconsign files on error or interrupt so intermediate
587     build results are saved.
588
589   - Change the -U option to -D.  Make a new -U that builds just the
590     targets from the local SConscript file.
591
592   - Fixed use of sys.path so Python modules can be imported from
593     the SConscript directory.
594
595   - Fix for using Aliases with the -u, -U and -D options.
596
597   - Fix so that Nodes can be passed to SConscript files.
598
599   From Moshe Zadka:
600   
601   - Changes for official Debian packaging.
602
603
604
605 RELEASE 0.06 - Thu, 28 Mar 2002 01:24:29 -0600
606
607   From Charles Crain:
608
609   - Fix command generators to expand construction variables.
610
611   - Make FunctionAction arguments be Nodes, not strings.
612
613   From Stephen Kennedy:
614
615   - Performance:  Use a dictionary, not a list, for a Node's parents.
616
617   From Steven Knight:
618
619   - Add .zip files to the packages we build.
620
621   - Man page:  document LIBS, fix a typo, document ARGUMENTS.
622
623   - Added RANLIB and RANLIBFLAGS construction variables.  Only use them
624     in ARCOM if there's a "ranlib" program on the system.
625
626   - Add a configurable CFILESUFFIX for the Builder of .l and .y files
627     into C files.
628
629   - Add a CXXFile Builder that turns .ll and .yy files into .cc files
630     (configurable via a CXXFILESUFFIX construction variable).
631
632   - Use the POSIX-standard lex -t flag, not the GNU-specific -o flag.
633     (Bug reported by Russell Christensen.)
634
635   - Fixed an exception when CPPPATH or LIBPATH is a null string.
636     (Bug reported by Richard Kiss.)
637
638   - Add a --profile=FILE option to make profiling SCons easier.
639
640   - Modify the new DVI builder to create .dvi files from LaTeX (.ltx
641     and .latex) files.
642
643   - Add support for Aliases (phony targets).
644
645   - Add a WhereIs() method for searching for path names to executables.
646
647   - Add PDF and PostScript document builders.
648
649   - Add support for compiling Fortran programs from a variety of
650     suffixes (a la GNU Make):  .f, .F, .for, .FOR, .fpp and .FPP
651
652   - Support a CPPFLAGS variable on all default commands that use the
653     C preprocessor.
654
655   From Steve Leblanc:
656
657   - Add support for the -U option.
658
659   - Allow CPPPATH, LIBPATH and LIBS to be specified as white-space
660     separated strings.
661
662   - Add a document builder to create .dvi files from TeX (.tex) files.
663
664   From Anthony Roach:
665
666   - Fix:  Construction variables with values of 0 were incorrectly
667     interpolated as ''. 
668
669   - Support env['VAR'] to fetch construction variable values.
670
671   - Man page:  document Precious().
672
673
674
675 RELEASE 0.05 - Thu, 21 Feb 2002 16:50:03 -0600
676
677   From Chad Austin:
678
679   - Set PROGSUFFIX to .exe under Cygwin.
680
681   From Charles Crain:
682
683   - Allow a library to specified as a command-line source file, not just
684     in the LIBS construction variable.
685
686   - Compensate for a bug in os.path.normpath() that returns '' for './'
687     on WIN32.
688
689   - More performance optimizations:  cache #include lines from files,
690     eliminate unnecessary calls.
691
692   - If a prefix or suffix contains white space, treat the resulting
693     concatenation as separate arguments.
694
695   - Fix irregularities in the way we fetch DevStudio information from
696     the Windows registry, and in our registry error handling.
697
698   From Steven Knight:
699
700   - Flush stdout after print so it intermixes correctly with stderr
701     when redirected.
702
703   - Allow Scanners to return a list of strings, and document how to
704     write your own Scanners.
705
706   - Look up implicit (scanned) dependencies relative to the directory
707     of file being scanned.
708
709   - Make writing .sconsign files more robust by first trying to write
710     to a temp file that gets renamed.
711
712   - Create all of the directories for a list of targets before trying
713     to build any of the targets.
714
715   - WIN32 portability fixes in tests.
716
717   - Allow the list of variables exported to an SConscript file to be
718     a UserList, too.
719
720   - Document the overlooked LIBPATH construction variable.
721     (Bug reported by Eicke Godehardt.)
722
723   - Fix so that Ignore() ignores indirect, implicit dependencies
724     (included files), not just direct dependencies.
725
726   - Put the man page in the Debian distribution.
727
728   - Run HTML docs through tidy to clean up the HTML (for Konqueror).
729
730   - Add preliminary support for Unicode strings.
731
732   - Efficiency:  don't scan dependencies more than once during the
733     walk of a tree.
734
735   - Fix the -c option so it doesn't stop removing targets if one doesn't
736     already exist.
737     (Bug reported by Paul Connell.)
738
739   - Fix the --debug=pdb option when run on Windows NT.
740     (Bug reported by Paul Connell.)
741
742   - Add support for the -q option.
743
744   From Steve Leblanc:
745
746   - Add support for the -u option.
747
748   - Add .cc and .hh file suffixes to the C Scanner.
749
750   From Anthony Roach:
751
752   - Make the scons script return an error code on failures.
753
754   - Add support for using code to generate a command to build a target.
755
756
757
758 RELEASE 0.04 - Wed, 30 Jan 2002 11:09:42 -0600
759
760   From Charles Crain:
761
762   - Significant performance improvements in the Node.FS and
763     Scanner subsystems.
764
765   - Fix signatures of binary files on Win32 systems.
766
767   - Allow LIBS and LIBPATH to be strings, not just arrays.
768
769   - Print a traceback if a Python-function builder throws an exception.
770
771   From Steven Knight:
772
773   - Fix using a directory as a Default(), and allow Default() to
774     support white space in file names for strings in arrays.
775
776   - Man page updates:  corrected some mistakes, documented various
777     missing Environment methods, alphabetized the construction
778     variables and other functions, defined begin and end macros for
779     the example sections, regularized white space separation, fixed
780     the use of Export() in the Multiple Variants example.
781
782   - Function action fixes:  None is now a successful return value.
783     Exceptions are now reported.  Document function actions.
784
785   - Add 'Action' and 'Scanner' to the global keywords so SConscript
786     files can use them too.
787
788   - Removed the Wrapper class between Nodes and Walkers.
789
790   - Add examples using Library, LIBS, and LIBPATH.
791
792   - The C Scanner now always returns a sorted list of dependencies
793     so order changes don't cause unnecessary rebuilds.
794
795   - Strip $(-$) bracketed text from command lines.  Use this to
796     surround $_INCDIRS and $_LIBDIRS so we don't rebuild in response
797     to changes to -I or -L options.
798
799   - Add the Ignore() method to ignore dependencies.
800
801   - Provide an error message when a nonexistent target is specified
802     on the command line.
803
804   - Remove targets before building them, and add an Environment
805     Precious() method to override that.
806
807   - Eliminate redundant calls to the same builder when the target is a
808     list of targets:  Add a ListBuilder class that wraps Builders to
809     handle lists atomically.  Extend the Task class to support building
810     and updating multiple targets in a single Task.  Simplify the
811     interface between Task and Taskmaster.
812
813   - Add a --debug=pdb option to re-run SCons under the Python debugger.
814
815   - Only compute a build signature once for each node.
816
817   - Changes to our sys.path[] manipulation to support installation into
818     an arbitrary --prefix value.
819
820   From Steve Leblanc:
821
822   - Add var=value command-line arguments.
823
824
825
826 RELEASE 0.03 - Fri, 11 Jan 2002 01:09:30 -0600
827
828   From Charles Crain:
829
830   - Performance improvements in the Node.FS and Sig.Calculator classes.
831
832   - Add the InstallAs() method.
833
834   - Execute commands through an external interpreter (sh, cmd.exe, or
835     command.com) to handle redirection metacharacters.
836
837   - Allow the user to supply a command handler.
838
839   From Steven Knight:
840
841   - Search both /usr/lib and /usr/local/lib for scons directories by
842     adding them both to sys.path, with whichever is in sys.prefix first.
843
844   - Fix interpreting strings of multiple white-space separated file names
845     as separate file names, allowing prefixes and suffixes to be appended
846     to each individually.
847
848   - Refactor to move CompositeBuilder initialization logic from the
849     factory wrapper to the __init__() method, and allow a Builder to
850     have both an action and a src_builder (or array of them).
851
852   - Refactor BuilderBase.__call__() to separate Node creation/lookup
853     from initialization of the Node's builder information.
854
855   - Add a CFile Builder object that supports turning lex (.l) and
856     yacc (.y) files into .c files.
857
858   - Document: variable interpretation attributes; how to propogate
859     the user's environment variables to executed commands; how to
860     build variants in multiple BuildDirs.
861
862   - Collect String, Dict, and List type-checking in common utility
863     routines so we can accept User{String,Dict,List}s all over.
864
865   - Put the Action factory and classes into their own module.
866
867   - Use one CPlusPlusAction in the Object Builder's action dictionary,
868     instead of letting it create multiple identical instances.
869
870   - Document the Install() and InstallAs() methods.
871
872   From Steve Leblanc:
873
874   - Require that a Builder be given a name argument, supplying a
875     useful error message when it isn't.
876
877   From Anthony Roach:
878
879   - Add a "duplicate" keyword argument to BuildDir() that can be set
880     to prevent linking/copying source files into build directories.
881
882   - Add a "--debug=tree" option to print an ASCII dependency tree.
883
884   - Fetch the location of the Microsoft Visual C++ compiler(s) from
885     the Registry, instead of hard-coding the location.
886     
887   - Made Scanner objects take Nodes, not path names.
888     
889   - Have the C Scanner cache the #include file names instead of
890     (re-)scanning the file each time it's called.
891
892   - Created a separate class for parent "nodes" of file system roots,
893     eliminating the need for separate is-parent-null checks everywhere.
894     
895   - Removed defined __hash__() and __cmp() methods from FS.Entry, in
896     favor of Python's more efficient built-in identity comparisons.
897
898
899
900 RELEASE 0.02 - Sun, 23 Dec 2001 19:05:09 -0600
901
902   From Charles Crain:
903
904   - Added the Install(), BuildDir(), and Export() methods.
905
906   - Fix the -C option by delaying setting the top of the FS tree.
907
908   - Avoid putting the directory path on the libraries in the LIBS
909     construction variable.
910
911   - Added a GetBuildPath() method to return the full path to the
912     Node for a specified string.
913
914   - Fixed variable substitution in CPPPATH and LIBPATH.
915
916   From Steven Knight:
917
918   - Fixed the version comment in the scons.bat (the UNIX geek used
919     # instead of @rem).
920
921   - Fix to setup.py so it doesn't require a sys.argv[1] argument.
922
923   - Provide make-like warning message for "command not found" and
924     similar errors.
925
926   - Added an EXAMPLES section to the man page.
927
928   - Make Default() targets properly relative to their SConscript
929     file's subdirectory.
930
931   From Anthony Roach:
932
933   - Documented CXXFLAGS, CXXCOM, and CPPPATH.
934
935   - Fixed SCONS_LIB_DIR to work as documented.
936
937   - Made Default() accept Nodes as arguments.
938
939   - Changed Export() to make it easier to use.
940   
941   - Added the Import() and Return() methods.
942
943
944
945 RELEASE 0.01 - Thu Dec 13 19:25:23 CST 2001
946
947 A brief overview of important functionality available in release 0.01:
948
949   - C and C++ compilation on POSIX and Windows NT.
950
951   - Automatic scanning of C/C++ source files for #include dependencies.
952
953   - Support for building libraries; setting construction variables
954     allows creation of shared libraries.
955
956   - Library and C preprocessor search paths.
957
958   - File changes detected using MD5 signatures.
959
960   - User-definable Builder objects for building files.
961
962   - User-definable Scanner objects for scanning for dependencies.
963
964   - Parallel build (-j) support.
965
966   - Dependency cycles detected.
967
968   - Linux packages available in RPM and Debian format.
969
970   - Windows installer available.