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