9b326d366cbb5d0042c95305c0127dc32826d6c1
[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.15 - XXX
12
13   From Chad Austin:
14
15   - Fix the _concat() documentation, and add a test for it.
16
17   - Portability fixes for non-GNU versions of lex and yacc.
18
19   From Matt Balvin:
20
21   - Fix handling of library prefixes when the subdirectory matches
22     the prefix.
23
24   From Timothee Bessett:
25
26   - Add an M4 Builder.
27
28   From Charles Crain:
29
30   - Use '.lnk' as the suffix on the temporary file for linking long
31     command lines (necessary for the Phar Lap linkloc linker).
32
33   From Steven Knight:
34
35   - SCons now enforces (with an error) that construction variables
36     must have the same form as valid Python identifiers.
37
38   - Fix man page bugs: remove duplicate AddPostAction() description;
39     document no_import_lib; mention that CPPFLAGS does not contain
40     $_CPPINCFLAGS; mention that F77FLAGS does not contain $_F77INCFLAGS;
41     mention that LINKFLAGS and SHLINKFLAGS contains neither $_LIBFLAGS
42     nor $_LIBDIRFLAGS.
43
44   - Eliminate a dependency on the distutils.fancy_getopt module by
45     copying and pasting its wrap_text() function directly.
46
47   - Make the Script.Options() subclass match the underlying base class
48     implementation.
49
50   From Steve Leblanc:
51
52   - Don't update the .sconsign files when run with -n.
53
54   From Anthony Roach
55
56   - Fix Import('*').
57
58   From David Snopek
59
60   - Fix use of SConf in paths with white space in them.
61
62   - Add CheckFunc and CheckType functionality to SConf.
63
64   - Fix use of SConf with Builders that return a list of nodes.
65
66   From David Snopek and Christoph Wiedemann
67
68   - Fix use of the SConf subsystem with SConscriptChdir().
69
70   From Greg Spencer
71
72   - Check for the existence of MS Visual Studio on disk before using it,
73     to avoid getting fooled by leftover junk in the registry.
74
75   - Add support for MSVC++ .NET.
76
77   - Add support for MS Visual Studio project files (DSP, DSW,
78     SLN and VCPROJ files).
79
80
81
82 RELEASE 0.14 - Wed, 21 May 2003 05:16:32 -0500
83
84   From Chad Austin:
85
86   - Use .dll (not .so) for shared libraries on Cygwin; use -fPIC
87     when compiling them.
88
89   - Use 'rm' to remove files under Cygwin.
90
91   - Add a PLATFORM variable to construction environments.
92
93   - Remove the "platform" argument from tool specifications.
94
95   - Propogate PYTHONPATH when running the regression tests so distutils
96     can be found in non-standard locations.
97
98   - Using MSVC long command-line linking when running Cygwin.
99
100   - Portability fixes for a lot of tests.
101
102   - Add a Value Node class for dependencies on in-core Python values.
103
104   From Allen Bierbaum:
105
106   - Pass an Environment to the Options validator method, and
107     add an Options.Save() method.
108
109   From Steve Christensen:
110
111   - Add an optional sort function argument to the GenerateHelpText()
112     Options function.
113
114   - Evaluate the "varlist" variables when computing the signature of a
115     function action.
116
117   From Charles Crain:
118
119   - Parse the source .java files for class names (including inner class
120     names) to figure out the target .class files that will be created.
121
122   - Make Java support work with Repositories and SConscriptChdir(0).
123
124   - Pass Nodes, not strings, to Builder emitter functions.
125
126   - Refactor command-line interpolation and signature calculation
127     so we can use real Node attributes.
128
129   From Steven Knight:
130
131   - Add Java support (javac, javah, jar and rmic).
132
133   - Propagate the external SYSTEMROOT environment variable into ENV on
134     Win32 systems, so external commands that use sockets will work.
135
136   - Add a .posix attribute to PathList expansions.
137
138   - Check out CVS source files using POSIX path names (forward slashes
139     as separators) even on Win32.
140
141   - Add Node.clear() and Node.FS.Entry.clear() methods to wipe out a
142     Node's state, allowing it to be re-evaluated by continuous
143     integration build interfaces.
144
145   - Change the name of the Set{Build,Content}SignatureType() functions
146     to {Target,Source}Signatures().  Deprecate the old names but support
147     them for backwards compatibility.
148
149   - Add internal SCons.Node.FS.{Dir,File}.Entry() methods.
150
151   - Interpolate the null string if an out-of-range subscript is used
152     for a construction variable.
153
154   - Fix the internal Link function so that it properly links or copies
155     files in subsidiary BuildDir directories.
156
157   - Refactor the internal representation of a single execution instance
158     of an action to eliminate redundant signature calculations.
159
160   - Eliminate redundant signature calculations for Nodes.
161
162   - Optimize out calling hasattr() before accessing attributes.
163
164   - Say "Cleaning targets" (not "Building...") when the -c option is
165     used.
166
167   From Damyan Pepper:
168
169   - Quote the "Entering directory" message like Make.
170
171   From Stefan Reichor:
172
173   - Add support for using Ghostscript to convert Postscript to PDF files.
174
175   From Anthony Roach:
176
177   - Add a standalone "Alias" function (separate from an Environment).
178
179   - Make Export() work for local variables.
180
181   - Support passing a dictionary to Export().
182
183   - Support Import('*') to import everything that's been Export()ed.
184
185   - Fix an undefined exitvalmap on Win32 systems.
186
187   - Support new SetOption() and GetOption() functions for setting
188     various command-line options from with an SConscript file.
189
190   - Deprecate the old SetJobs() and GetJobs() functions in favor of
191     using the new generic {Set,Get}Option() functions.
192
193   - Fix a number of tests that searched for a Fortran compiler using the
194     external PATH instead of what SCons would use.
195
196   - Fix the interaction of SideEffect() and BuildDir() so that (for
197     example) PDB files get put correctly in a BuildDir().
198
199   From David Snopek:
200
201   - Contribute the "Autoscons" code for Autoconf-like checking for
202     the existence of libraries, header files and the like.
203
204   - Have the Tool() function add the tool name to the $TOOLS
205     construction variable.
206
207   From Greg Spencer:
208
209   - Support the C preprocessor #import statement.
210
211   - Allow the SharedLibrary() Builder on Win32 systems to be able to
212     register a newly-built dll using regsvr32.
213
214   - Add a Builder for Windows type library (.tlb) files from IDL files.
215
216   - Add an IDL scanner.
217
218   - Refactor the Fortran, C and IDL scanners to share common logic.
219
220   - Add .srcpath and .srcdir attributes to $TARGET and $SOURCE.
221
222   From Christoph Wiedemann:
223
224   - Integrate David Snopek's "Autoscons" code as the new SConf
225     configuration subsystem, including caching of values between
226     runs (using normal SCons dependency mechanisms), tests, and
227     documentation.
228
229
230
231 RELEASE 0.13 - Mon, 31 Mar 2003 20:22:00 -0600
232
233   From Charles Crain:
234
235   - Fix a bug when BuildDir(duplicate=0) is used and SConscript
236     files are called from within other SConscript files.
237
238   - Support (older) versions of Perforce which don't set the Windows
239     registry.
240
241
242
243 RELEASE 0.12 - Thu, 27 Mar 2003 23:52:09 -0600
244
245   From Charles Crain:
246
247   - Added support for the Perforce source code management system.
248
249   - Fix str(Node.FS) so that it returns a path relative to the calling
250     SConscript file's directory, not the top-level directory.
251
252   - Added support for a separate src_dir argument to SConscript()
253     that allows explicit specification of where the source files
254     for an SConscript file can be found.
255
256   - Support more easily re-usable flavors of command generators by
257     calling callable variables when strings are expanded.
258
259   From Steven Knight:
260
261   - Added an INSTALL construction variable that can be set to a function
262     to control how the Install() and InstallAs() Builders install files.
263     The default INSTALL function now copies, not links, files.
264
265   - Remove deprecated features:  the "name" argument to Builder objects,
266     and the Environment.Update() method.
267
268   - Add an Environment.SourceCode() method to support fetching files
269     from source code systems.  Add factory methods that create Builders
270     to support BitKeeper, CVS, RCS, and SCCS.  Add support for fetching
271     files from RCS or SCCS transparently (like GNU Make).
272
273   - Make the internal to_String() function more efficient.
274
275   - Make the error message the same as other build errors when there's a
276     problem unlinking a target file in preparation for it being built.
277
278   - Make TARGET, TARGETS, SOURCE and SOURCES reserved variable names and
279     warn if the user tries to set them in a construction environment.
280
281   - Add support for Tar and Zip files.
282
283   - Better documentation of the different ways to export variables to a
284     subsidiary SConscript file.  Fix documentation bugs in a tools
285     example, places that still assumed SCons split strings on white
286     space, and typos.
287
288   - Support fetching arbitrary files from the TARGETS or SOURCES lists
289     (e.g. ${SOURCES[2]}) when calculating the build signature of a
290     command.
291
292   - Don't silently swallow exceptions thrown by Scanners (or other
293     exceptions while finding a node's dependent children).
294
295   - Push files to CacheDir() before calling the superclass built()
296     method (which may clear the build signature as part of clearing
297     cached implicit dependencies, if the file has a source scanner).
298     (Bug reported by Jeff Petkau.)
299
300   - Raise an internal error if we attempt to push a file to CacheDir()
301     with a build signature of None.
302
303   - Add an explicit Exit() function for terminating early.
304
305   - Change the documentation to correctly describe that the -f option
306     doesn't change to the directory in which the specified file lives.
307     
308   - Support changing directories locally with SConscript directory
309     path names relative to any SConstruct file specified with -f.
310     This allows you to build in another directory by simply changing
311     there and pointing at the SConstruct file in another directory.
312
313   - Change the default SConscriptChdir() behavior to change to the
314     SConscript directory while it's being read.
315
316   - Fix an exception thrown when the -U option was used with no
317     Default() target specified.
318
319   - Fix -u so that it builds things in corresponding build directories
320     when used in a source directory.
321
322   From Lachlan O'Dea:
323
324   - Add SharedObject() support to the masm tool.
325
326   - Fix WhereIs() to return normalized paths.
327
328   From Jeff Petkau:
329
330   - Don't copy a built file to a CacheDir() if it's already there.
331
332   - Avoid partial copies of built files in a CacheDir() by copying
333     to a temporary file and renaming.
334
335   From Anthony Roach:
336
337   - Fix incorrect dependency-cycle errors when an Aliased source doesn't
338     exist.
339
340
341
342 RELEASE 0.11 - Tue, 11 Feb 2003 05:24:33 -0600
343
344   From Chad Austin:
345
346   - Add support for IRIX and the SGI MIPSPro tool chain.
347
348   - Support using the MSVC tool chain when running Cygwin Python.
349
350   From Michael Cook:
351
352   - Avoid losing signal bits in the exit status from a command,
353     helping terminate builds on interrupt (CTRL+C).
354
355   From Charles Crain:
356
357   - Added new AddPreAction() and AddPostAction() functions that support
358     taking additional actions before or after building specific targets.
359
360   - Add support for the PharLap ETS tool chain.
361
362   From Steven Knight:
363
364   - Allow Python function Actions to specify a list of construction
365     variables that should be included in the Action's signature.
366
367   - Allow libraries in the LIBS variable to explicitly include the prefix
368     and suffix, even when using the GNU linker.
369     (Bug reported by Neal Becker.)
370
371   - Use DOS-standard CR-LF line endings in the scons.bat file.
372     (Bug reported by Gary Ruben.)
373
374   - Doc changes:  Eliminate description of deprecated "name" keyword
375     argument from Builder definition (reported by Gary Ruben).
376
377   - Support using env.Append() on BUILDERS (and other dictionaries).
378     (Bug reported by Bj=F6rn Bylander.)
379
380   - Setting the BUILDERS construction variable now properly clears
381     the previous Builder attributes from the construction Environment.
382     (Bug reported by Bj=F6rn Bylander.)
383
384   - Fix adding a prefix to a file when the target isn't specified.
385     (Bug reported by Esa Ilari Vuokko.)
386
387   - Clean up error messages from problems duplicating into read-only
388     BuildDir directories or into read-only files.
389
390   - Add a CommandAction.strfunction() method, and add an "env" argument
391     to the FunctionAction.strfunction() method, so that all Action
392     objects have strfunction() methods, and the functions for building
393     and returning a string both take the same arguments.
394
395   - Add support for new CacheDir() functionality to share derived files
396     between builds, with related options --cache-disable, --cache-force,
397     and --cache-show.
398
399   - Change the default behavior when no targets are specified to build
400     everything in the current directory and below (like Make).  This
401     can be disabled by specifying Default(None) in an SConscript.
402
403   - Revamp SCons installation to fix a case-sensitive installation
404     on Win32 systems, and to add SCons-specific --standard-lib,
405     --standalone-lib, and --version-lib options for easier user
406     control of where the libraries get installed.
407
408   - Fix the ability to directly import and use Platform and Tool modules
409     that have been implicitly imported into an Environment().
410
411   - Add support for allowing an embedding interface to annotate a node
412     when it's created.
413
414   - Extend the SConscript() function to accept build_dir and duplicate
415     keyword arguments that function like a BuildDir() call.
416
417   From Steve Leblanc:
418
419   - Fix the output of -c -n when directories are involved, so it
420     matches -c.
421
422   From Anthony Roach:
423
424   - Use a different shared object suffix (.os) when using gcc so shared
425     and static objects can exist side-by-side in the same directory.
426
427   - Allow the same object files on Win32 to be linked into either
428     shared or static libraries.
429
430   - Cache implicit cache values when using --implicit-cache.
431
432
433
434 RELEASE 0.10 - Thu, 16 Jan 2003 04:11:46 -0600
435
436   From Derrick 'dman' Hudson:
437
438   - Support Repositories on other file systems by symlinking or
439     copying files when hard linking won't work.
440
441   From Steven Knight:
442
443   - Remove Python bytecode (*.pyc) files from the scons-local packages.
444
445   - Have FunctionActions print a description of what they're doing
446     (a representation of the Python call).
447
448   - Fix the Install() method so that, like other actions, it prints
449     what would have happened when the -n option is used.
450
451   - Don't create duplicate source files in a BuildDir when the -n
452     option is used.
453
454   - Refactor the Scanner interface to eliminate unnecessary Scanner
455     calls and make it easier to write efficient scanners.
456
457   - Added a "recursive" flag to Scanner creation that specifies the
458     Scanner should be invoked recursively on dependency files returned
459     by the scanner.
460
461   - Significant performance improvement from using a more efficient
462     check, throughout the code, for whether a Node has a Builder.
463
464   - Fix specifying only the source file to MultiStepBuilders such as
465     the Program Builder.  (Bug reported by Dean Bair.)
466
467   - Fix an exception when building from a file with the same basename as
468     the subdirectory in which it lives.  (Bug reported by Gerard Patel.)
469
470   - Fix automatic deduction of a target file name when there are
471     multiple source files specified; the target is now deduced from just
472     the first source file in the list.
473
474   - Documentation fixes: better initial explanation of SConscript files;
475     fix a misformatted "table" in the StaticObject explanation.
476
477   From Steven Knight and Steve Leblanc:
478
479   - Fix the -c option so it will remove symlinks.
480
481   From Steve Leblanc:
482
483   - Add a Clean() method to support removing user-specified targets
484     when using the -c option.
485
486   - Add a development script for running SCons through PyChecker.
487
488   - Clean up things found by PyChecker (mostly unnecessary imports).
489
490   - Add a script to use HappyDoc to create HTML class documentation.
491
492   From Lachlan O'Dea:
493
494   - Make the Environment.get() method return None by default.
495
496   From Anthony Roach:
497
498   - Add SetJobs() and GetJobs() methods to allow configuration of the
499     number of default jobs (still overridden by -j).
500
501   - Convert the .sconsign file format from ASCII to a pickled Python
502     data structure.
503
504   - Error message cleanups:  Made consistent the format of error
505     messages (now all start with "scons: ***") and warning messages (now
506     all start with "scons: warning:").  Caught more cases with the "Do
507     not know how to build" error message.
508
509   - Added support for the MinGW tool chain.
510
511   - Added a --debug=includes option.
512
513
514
515 RELEASE 0.09 - Thu,  5 Dec 2002 04:48:25 -0600
516
517   From Chad Austin:
518
519   - Add a Prepend() method to Environments, to append values to
520     the beginning of construction variables.
521
522   From Matt Balvin:
523
524   - Add long command-line support to the "lib" Tool (Microsoft library
525     archiver), too.
526
527   From Charles Crain:
528
529   - Allow $$ in a string to be passed through as $.
530
531   - Support file names with odd characters in them.
532
533   - Add support for construction variable substition on scanner
534     directories (in CPPPATH, F77PATH, LIBPATH, etc.).
535
536   From Charles Crain and Steven Knight:
537
538   - Add Repository() functionality, including the -Y option.
539
540   From Steven Knight:
541
542   - Fix auto-deduction of target names so that deduced targets end
543     up in the same subdirectory as the source.
544
545   - Don't remove source files specified on the command line!
546
547   - Suport the Intel Fortran Compiler (ifl.exe).
548
549   - Supply an error message if there are no command-line or
550     Default() targets specified.
551
552   - Fix the ASPPCOM values for the GNU assembler.
553     (Bug reported by Brett Polivka.)
554
555   - Fix an exception thrown when a Default() directory was specified
556     when using the -U option.
557
558   - Issue a warning when -c can't remove a target.
559
560   - Eliminate unnecessary Scanner calls by checking for the
561     existence of a file before scanning it.  (This adds a generic
562     hook to check an arbitrary condition before scanning.)
563
564   - Add explicit messages to tell when we're "Reading SConscript files
565     ...," "done reading SConscript files," "Building targets," and
566     "done building targets."  Add a -Q option to supress these.
567
568   - Add separate $SHOBJPREFIX and $SHOBJSUFFIX construction variables
569     (by default, the same as $OBJPREFIX and $OBJSUFFIX).
570
571   - Add Make-like error messages when asked to build a source file,
572     and before trying to build a file that doesn't have all its source
573     files (including when an invalid drive letter is used on WIN32).
574
575   - Add an scons-local-{version} package (in both .tar.gz and .zip
576     flavors) to help people who want to ship SCons as a stand-alone
577     build tool in their software packages.
578
579   - Prevent SCons from unlinking files in certain situations when
580     the -n option is used.
581
582   - Change the name of Tool/lib.py to Tool/mslib.py.
583
584   From Steven Knight and Anthony Roach:
585
586   - Man page:  document the fact that Builder calls return Node objects.
587
588   From Steve LeBlanc:
589
590   - Refactor option processing to use our own version of Greg Ward's
591     Optik module, modified to run under Python 1.5.2.
592
593   - Add a ParseConfig() command to modify an environment based on
594     parsing output from a *-config command.
595
596   From Jeff Petkau:
597
598   - Fix interpretation of '#/../foo' on Win32 systems.
599
600   From Anthony Roach:
601
602   - Fixed use of command lines with spaces in their arguments,
603     and use of Nodes with spaces in their string representation.
604
605   - Make access and modification times of files in a BuildDir match
606     the source file, even when hard linking isn't available.
607
608   - Make -U be case insensitive on Win32 systems.
609
610   - Issue a warning and continue when finding a corrupt .sconsign file.
611
612   - Fix using an alias as a dependency of a target so that if one of the
613     alias' dependencies gets rebuilt, the resulting target will, too.
614
615   - Fix differently ordered targets causing unnecessary rebuilds
616     on case insensitive systems.
617
618   - Use os.system() to execute external commands whenever the "env"
619     utility is available, which is much faster than fork()/exec(),
620     and fixes the -j option on several platforms.
621
622   - Fix use of -j with multiple targets.
623
624   - Add an Options() object for friendlier accomodation of command-
625     line arguments.
626
627   - Add support for Microsoft VC++ precompiled header (.pch) files,
628     debugger (.pdb) files, and resource (.rc) files.
629
630   - Don't compute the $_CPPINCFLAGS, $_F77INCFLAGS, $_LIBFLAGS and
631     $_LIBDIRFLAGS variables each time a command is executed, define
632     them so they're computed only as needed.  Add a new _concat
633     function to the Environment that allows people to define their
634     own similar variables.
635
636   - Fix dependency scans when $LIBS is overridden.
637
638   - Add EnsurePythonVersion() and EnsureSConsVersion() functions.
639
640   - Fix the overly-verbose stack trace on ListBuilder build errors.
641
642   - Add a SetContentSignatureType() function, allowing use of file
643     timestamps instead of MD5 signatures.
644
645   - Make -U and Default('source') fail gracefully.
646
647   - Allow the File() and Dir() methods to take a path-name string as
648     the starting directory, in addition to a Dir object.
649
650   - Allow the command handler to be selected via the SPAWN, SHELL
651     and ESCAPE construction variables.
652
653   - Allow construction variables to be overridden when a Builder
654     is called.
655
656   From sam th:
657
658   - Dynamically check for the existence of utilities with which to
659     initialize Environments by default.
660
661
662
663 RELEASE 0.08 - Mon, 15 Jul 2002 12:08:51 -0500
664
665   From Charles Crain:
666
667   - Fixed a bug with relative CPPPATH dirs when using BuildDir().
668     (Bug reported by Bob Summerwill.)
669
670   - Added a warnings framework and a --warn option to enable or
671     disable warnings.
672
673   - Make the C scanner warn users if files referenced by #include
674     directives cannot be found and --warn=dependency is specified.
675
676   - The BUILDERS construction variable should now be a dictionary
677     that maps builder names to actions.  Existing uses of lists,
678     and the Builder name= keyword argument, generate warnings
679     about use of deprecated features.
680
681   - Removed the "shared" keyword argument from the Object and
682     Library builders.
683     
684   - Added separated StaticObject, SharedObject, StaticLibrary and
685     SharedLibrary builders.  Made Object and Library synonyms for
686     StaticObject and StaticLibrary, respectively.
687
688   - Add LIBS and LIBPATH dependencies for shared libraries.
689
690   - Removed support for the prefix, suffix and src_suffix arguments
691     to Builder() to be callable functions.
692
693   - Fix handling file names with multiple dots.
694
695   - Allow a build directory to be outside of the SConstruct tree.
696
697   - Add a FindFile() function that searches for a file node with a
698     specified name.
699
700   - Add $CPPFLAGS to the shared-object command lines for g++ and gcc.
701
702   From Charles Crain and Steven Knight:
703
704   - Add a "tools=" keyword argument to Environment instantiation,
705     and a separate Tools() method, for more flexible specification
706     of tool-specific environment changes.
707
708   From Steven Knight:
709
710   - Add a "platform=" keyword argument to Environment instantiation,
711     and a separate Platform() method, for more flexible specification
712     of platform-specific environment changes.
713
714   - Updated README instructions and setup.py code to catch an
715     installation failure from not having distutils installed.
716
717   - Add descriptions to the -H help text for -D, -u and -U so
718     people can tell them apart.
719
720   - Remove the old feature of automatically splitting strings
721     of file names on white space.
722
723   - Add a dependency Scanner for native Fortran "include" statements,
724     using a new "F77PATH" construction variable.
725
726   - Fix C #include scanning to detect file names with characters like
727     '-' in them.
728
729   - Add more specific version / build output to the -v option.
730
731   - Add support for the GNU as, Microsoft masm, and nasm assemblers.
732
733   - Allow the "target" argument to a Builder call to be omitted, in
734     which case the target(s) are deduced from the source file(s) and the
735     Builder's specified suffix.
736
737   - Add a tar archive builder.
738
739   - Add preliminary support for the OS/2 Platform, including the icc
740     and ilink Tools.
741
742   From Jeff Petkau:
743
744   - Fix --implicit-cache if the scanner returns an empty list.
745
746   From Anthony Roach:
747
748   - Add a "multi" keyword argument to Builder creation that specifies
749     it's okay to call the builder multiple times for a target.
750
751   - Set a "multi" on Aliases so multiple calls will append to an Alias.
752
753   - Fix emitter functions' use of path names when using BuildDir or
754     in subdirectories.
755
756   - Fix --implicit-cache causing redundant rebuilds when the header
757     file list changed.
758
759   - Fix --implicit-cache when a file has no implicit dependencies and
760     its source is generated.
761
762   - Make the drive letters on Windows always be the same case, so that
763     changes in the case of drive letters don't cause a rebuild.
764
765   - Fall back to importing the SCons.TimeStamp module if the SCons.MD5
766     module can't be imported.
767
768   - Fix interrupt handling to guarantee that a single interrupt will
769     halt SCons both when using -j and not.
770
771   - Fix .sconsign signature storage so that output files of one build
772     can be safely used as input files to another build.
773
774   - Added a --debug=time option to print SCons execution times.
775
776   - Print an error message if a file can't be unlinked before being
777     built, rather than just silently terminating the build.
778
779   - Add a SideEffect() method that can be used to tell the build
780     engine that a given file is created as a side effect of building
781     a target.  A file can be specified as a side effect of more than
782     one build comand, in which case the commands will not be executed
783     simultaneously.
784
785   - Significant performance gains from not using our own version of
786     the inefficient stock os.path.splitext() method, caching source
787     suffix computation, code cleanup in MultiStepBuilder.__call__(),
788     and replicating some logic in scons_subst().
789
790   - Add --implicit-deps-changed and --implicit-deps-unchanged options.
791
792   - Add a GetLaunchDir() function.
793
794   - Add a SetBuildSignatureType() function.
795
796   From Zed Shaw:
797
798   - Add an Append() method to Environments, to append values to
799     construction variables.
800
801   - Change the name of Update() to Replace().  Keep Update() as a
802     deprecated synonym, at least for now.
803
804   From Terrel Shumway:
805
806   - Use a $PYTHON construction variable, initialized to sys.executable,
807     when using Python to build parts of the SCons packages.
808
809   - Use sys.prefix, not sys.exec_prefix, to find pdb.py.
810
811
812
813 RELEASE 0.07 - Thu,  2 May 2002 13:37:16 -0500
814
815   From Chad Austin:
816
817   - Changes to build SCons packages on IRIX (and other *NIces).
818
819   - Don't create a directory Node when a file already exists there,
820     and vice versa.
821
822   - Add 'dirs' and 'names' keyword arguments to SConscript for
823     easier specification of subsidiary SConscript files.
824
825   From Charles Crain:
826
827   - Internal cleanup of environment passing to function Actions.
828
829   - Builders can now take arbitrary keyword arguments to create
830     attributes to be passed to: command generator functions,
831     FunctionAction functions, Builder emitter functions (below),
832     and prefix/suffix generator functions (below).
833
834   - Command generator functions can now return ANYTHING that can be
835     converted into an Action (a function, a string, a CommandGenerator
836     instance, even an ActionBase instance).
837
838   - Actions now call get_contents() with the actual target and source
839     nodes used for the build.
840
841   - A new DictCmdGenerator class replaces CompositeBuilder to support
842     more flexible Builder behavior internally.
843
844   - Builders can now take an emitter= keyword argument.  An emitter
845     is a function that takes target, source, and env argument, then
846     return a 2-tuple of (new sources, new targets).  The emitter is
847     called when the Builder is __call__'ed, allowing a user to modify
848     source and target lists.
849
850   - The prefix, suffix and src_suffix Builder arguments now take a
851     callable as well a string.  The callable is passed the Environment
852     and any extra Builder keyword arguments and is expected to return
853     the appropriate prefix or suffix.
854
855   - CommandActions can now be a string, a list of command + argument
856     strings, or a list of commands (strings or lists).
857
858   - Added shared library support.  The Object and Library Builders now
859     take a "shared=1" keyword argument to specify that a shared object
860     or shared library should be built.  It is an error to try to build
861     static objects into a shared library or vice versa.
862
863   - Win32 support for .def files has been added.  Added the Win32-specific
864     construction variables $WIN32DEFPREFIX, $WIN32DEFSUFFIX,
865     $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX.  When building a .dll,
866     the new construction variable $WIN32_INSERT_DEF, controls whether
867     the appropriately-named .def file is inserted into the target
868     list (if not already present).  A .lib file is always added to
869     a Library build if not present in the list of targets.
870
871   - ListBuilder now passes all targets to the action, not just the first.
872
873   - Fix so that -c now deletes generated yacc .h files.
874
875   - Builder actions and emitter functions can now be initialized, through
876     construction variables, to things other than strings.
877
878   - Make top-relative '#/dir' lookups work like '#dir'.
879
880   - Fix for relative CPPPATH directories in subsidiary SConscript files
881     (broken in 0.06).
882
883   - Add a for_signature argument to command generators, so that
884     generators that need to can return distinct values for the
885     command signature and for executing the command.
886
887   From Alex Jacques:
888
889   - Create a better scons.bat file from a py2bat.py script on the Python
890     mailing list two years ago (modeled after pl2bat.pl).
891
892   From Steven Knight:
893
894   - Fix so that -c -n does *not* remove the targets!
895
896   - Man page:  Add a hierarchical libraries + Program example.
897
898   - Support long MSVC linker command lines through a builder action
899     that writes to a temporary file and uses the magic MSVC "link @file"
900     argument syntax if the line is longer than 2K characters.
901
902   - Fix F77 command-line options on Win32 (use /Fo instead of -o).
903
904   - Use the same action to build from .c (lower case) and .C (upper
905     case) files on case-insensitive systems like Win32.
906
907   - Support building a PDF file directly from a TeX or LaTeX file
908     using pdftex or pdflatex.
909
910   - Add a -x option to runtest.py to specify the script being tested.
911     A -X option indicates it's an executable, not a script to feed
912     to the Python interpreter.
913
914   - Add a Split() function (identical to SCons.Util.argmunge()) for use
915     in the next release, when Builders will no longer automatically split
916     strings on white space.
917
918   From Steve Leblanc:
919
920   - Add the SConscriptChdir() method.
921
922   From Anthony Roach:
923
924   - Fix --debug=tree when used with directory targets.
925
926   - Significant internal restructuring of Scanners and Taskmaster.
927
928   - Added new --debug=dtree option.
929
930   - Fixes for --profile option.
931
932   - Performance improvement in construction variable substitution.
933
934   - Implemented caching of content signatures, plus added --max-drift
935     option to control caching.
936
937   - Implemented caching of dependency signatures, enabled by new
938     --implicit-cache option.
939
940   - Added abspath construction variable modifier.
941
942   - Added $SOURCE variable as a synonym for $SOURCES[0].
943
944   - Write out .sconsign files on error or interrupt so intermediate
945     build results are saved.
946
947   - Change the -U option to -D.  Make a new -U that builds just the
948     targets from the local SConscript file.
949
950   - Fixed use of sys.path so Python modules can be imported from
951     the SConscript directory.
952
953   - Fix for using Aliases with the -u, -U and -D options.
954
955   - Fix so that Nodes can be passed to SConscript files.
956
957   From Moshe Zadka:
958   
959   - Changes for official Debian packaging.
960
961
962
963 RELEASE 0.06 - Thu, 28 Mar 2002 01:24:29 -0600
964
965   From Charles Crain:
966
967   - Fix command generators to expand construction variables.
968
969   - Make FunctionAction arguments be Nodes, not strings.
970
971   From Stephen Kennedy:
972
973   - Performance:  Use a dictionary, not a list, for a Node's parents.
974
975   From Steven Knight:
976
977   - Add .zip files to the packages we build.
978
979   - Man page:  document LIBS, fix a typo, document ARGUMENTS.
980
981   - Added RANLIB and RANLIBFLAGS construction variables.  Only use them
982     in ARCOM if there's a "ranlib" program on the system.
983
984   - Add a configurable CFILESUFFIX for the Builder of .l and .y files
985     into C files.
986
987   - Add a CXXFile Builder that turns .ll and .yy files into .cc files
988     (configurable via a CXXFILESUFFIX construction variable).
989
990   - Use the POSIX-standard lex -t flag, not the GNU-specific -o flag.
991     (Bug reported by Russell Christensen.)
992
993   - Fixed an exception when CPPPATH or LIBPATH is a null string.
994     (Bug reported by Richard Kiss.)
995
996   - Add a --profile=FILE option to make profiling SCons easier.
997
998   - Modify the new DVI builder to create .dvi files from LaTeX (.ltx
999     and .latex) files.
1000
1001   - Add support for Aliases (phony targets).
1002
1003   - Add a WhereIs() method for searching for path names to executables.
1004
1005   - Add PDF and PostScript document builders.
1006
1007   - Add support for compiling Fortran programs from a variety of
1008     suffixes (a la GNU Make):  .f, .F, .for, .FOR, .fpp and .FPP
1009
1010   - Support a CPPFLAGS variable on all default commands that use the
1011     C preprocessor.
1012
1013   From Steve Leblanc:
1014
1015   - Add support for the -U option.
1016
1017   - Allow CPPPATH, LIBPATH and LIBS to be specified as white-space
1018     separated strings.
1019
1020   - Add a document builder to create .dvi files from TeX (.tex) files.
1021
1022   From Anthony Roach:
1023
1024   - Fix:  Construction variables with values of 0 were incorrectly
1025     interpolated as ''. 
1026
1027   - Support env['VAR'] to fetch construction variable values.
1028
1029   - Man page:  document Precious().
1030
1031
1032
1033 RELEASE 0.05 - Thu, 21 Feb 2002 16:50:03 -0600
1034
1035   From Chad Austin:
1036
1037   - Set PROGSUFFIX to .exe under Cygwin.
1038
1039   From Charles Crain:
1040
1041   - Allow a library to specified as a command-line source file, not just
1042     in the LIBS construction variable.
1043
1044   - Compensate for a bug in os.path.normpath() that returns '' for './'
1045     on WIN32.
1046
1047   - More performance optimizations:  cache #include lines from files,
1048     eliminate unnecessary calls.
1049
1050   - If a prefix or suffix contains white space, treat the resulting
1051     concatenation as separate arguments.
1052
1053   - Fix irregularities in the way we fetch DevStudio information from
1054     the Windows registry, and in our registry error handling.
1055
1056   From Steven Knight:
1057
1058   - Flush stdout after print so it intermixes correctly with stderr
1059     when redirected.
1060
1061   - Allow Scanners to return a list of strings, and document how to
1062     write your own Scanners.
1063
1064   - Look up implicit (scanned) dependencies relative to the directory
1065     of file being scanned.
1066
1067   - Make writing .sconsign files more robust by first trying to write
1068     to a temp file that gets renamed.
1069
1070   - Create all of the directories for a list of targets before trying
1071     to build any of the targets.
1072
1073   - WIN32 portability fixes in tests.
1074
1075   - Allow the list of variables exported to an SConscript file to be
1076     a UserList, too.
1077
1078   - Document the overlooked LIBPATH construction variable.
1079     (Bug reported by Eicke Godehardt.)
1080
1081   - Fix so that Ignore() ignores indirect, implicit dependencies
1082     (included files), not just direct dependencies.
1083
1084   - Put the man page in the Debian distribution.
1085
1086   - Run HTML docs through tidy to clean up the HTML (for Konqueror).
1087
1088   - Add preliminary support for Unicode strings.
1089
1090   - Efficiency:  don't scan dependencies more than once during the
1091     walk of a tree.
1092
1093   - Fix the -c option so it doesn't stop removing targets if one doesn't
1094     already exist.
1095     (Bug reported by Paul Connell.)
1096
1097   - Fix the --debug=pdb option when run on Windows NT.
1098     (Bug reported by Paul Connell.)
1099
1100   - Add support for the -q option.
1101
1102   From Steve Leblanc:
1103
1104   - Add support for the -u option.
1105
1106   - Add .cc and .hh file suffixes to the C Scanner.
1107
1108   From Anthony Roach:
1109
1110   - Make the scons script return an error code on failures.
1111
1112   - Add support for using code to generate a command to build a target.
1113
1114
1115
1116 RELEASE 0.04 - Wed, 30 Jan 2002 11:09:42 -0600
1117
1118   From Charles Crain:
1119
1120   - Significant performance improvements in the Node.FS and
1121     Scanner subsystems.
1122
1123   - Fix signatures of binary files on Win32 systems.
1124
1125   - Allow LIBS and LIBPATH to be strings, not just arrays.
1126
1127   - Print a traceback if a Python-function builder throws an exception.
1128
1129   From Steven Knight:
1130
1131   - Fix using a directory as a Default(), and allow Default() to
1132     support white space in file names for strings in arrays.
1133
1134   - Man page updates:  corrected some mistakes, documented various
1135     missing Environment methods, alphabetized the construction
1136     variables and other functions, defined begin and end macros for
1137     the example sections, regularized white space separation, fixed
1138     the use of Export() in the Multiple Variants example.
1139
1140   - Function action fixes:  None is now a successful return value.
1141     Exceptions are now reported.  Document function actions.
1142
1143   - Add 'Action' and 'Scanner' to the global keywords so SConscript
1144     files can use them too.
1145
1146   - Removed the Wrapper class between Nodes and Walkers.
1147
1148   - Add examples using Library, LIBS, and LIBPATH.
1149
1150   - The C Scanner now always returns a sorted list of dependencies
1151     so order changes don't cause unnecessary rebuilds.
1152
1153   - Strip $(-$) bracketed text from command lines.  Use this to
1154     surround $_INCDIRS and $_LIBDIRS so we don't rebuild in response
1155     to changes to -I or -L options.
1156
1157   - Add the Ignore() method to ignore dependencies.
1158
1159   - Provide an error message when a nonexistent target is specified
1160     on the command line.
1161
1162   - Remove targets before building them, and add an Environment
1163     Precious() method to override that.
1164
1165   - Eliminate redundant calls to the same builder when the target is a
1166     list of targets:  Add a ListBuilder class that wraps Builders to
1167     handle lists atomically.  Extend the Task class to support building
1168     and updating multiple targets in a single Task.  Simplify the
1169     interface between Task and Taskmaster.
1170
1171   - Add a --debug=pdb option to re-run SCons under the Python debugger.
1172
1173   - Only compute a build signature once for each node.
1174
1175   - Changes to our sys.path[] manipulation to support installation into
1176     an arbitrary --prefix value.
1177
1178   From Steve Leblanc:
1179
1180   - Add var=value command-line arguments.
1181
1182
1183
1184 RELEASE 0.03 - Fri, 11 Jan 2002 01:09:30 -0600
1185
1186   From Charles Crain:
1187
1188   - Performance improvements in the Node.FS and Sig.Calculator classes.
1189
1190   - Add the InstallAs() method.
1191
1192   - Execute commands through an external interpreter (sh, cmd.exe, or
1193     command.com) to handle redirection metacharacters.
1194
1195   - Allow the user to supply a command handler.
1196
1197   From Steven Knight:
1198
1199   - Search both /usr/lib and /usr/local/lib for scons directories by
1200     adding them both to sys.path, with whichever is in sys.prefix first.
1201
1202   - Fix interpreting strings of multiple white-space separated file names
1203     as separate file names, allowing prefixes and suffixes to be appended
1204     to each individually.
1205
1206   - Refactor to move CompositeBuilder initialization logic from the
1207     factory wrapper to the __init__() method, and allow a Builder to
1208     have both an action and a src_builder (or array of them).
1209
1210   - Refactor BuilderBase.__call__() to separate Node creation/lookup
1211     from initialization of the Node's builder information.
1212
1213   - Add a CFile Builder object that supports turning lex (.l) and
1214     yacc (.y) files into .c files.
1215
1216   - Document: variable interpretation attributes; how to propogate
1217     the user's environment variables to executed commands; how to
1218     build variants in multiple BuildDirs.
1219
1220   - Collect String, Dict, and List type-checking in common utility
1221     routines so we can accept User{String,Dict,List}s all over.
1222
1223   - Put the Action factory and classes into their own module.
1224
1225   - Use one CPlusPlusAction in the Object Builder's action dictionary,
1226     instead of letting it create multiple identical instances.
1227
1228   - Document the Install() and InstallAs() methods.
1229
1230   From Steve Leblanc:
1231
1232   - Require that a Builder be given a name argument, supplying a
1233     useful error message when it isn't.
1234
1235   From Anthony Roach:
1236
1237   - Add a "duplicate" keyword argument to BuildDir() that can be set
1238     to prevent linking/copying source files into build directories.
1239
1240   - Add a "--debug=tree" option to print an ASCII dependency tree.
1241
1242   - Fetch the location of the Microsoft Visual C++ compiler(s) from
1243     the Registry, instead of hard-coding the location.
1244     
1245   - Made Scanner objects take Nodes, not path names.
1246     
1247   - Have the C Scanner cache the #include file names instead of
1248     (re-)scanning the file each time it's called.
1249
1250   - Created a separate class for parent "nodes" of file system roots,
1251     eliminating the need for separate is-parent-null checks everywhere.
1252     
1253   - Removed defined __hash__() and __cmp() methods from FS.Entry, in
1254     favor of Python's more efficient built-in identity comparisons.
1255
1256
1257
1258 RELEASE 0.02 - Sun, 23 Dec 2001 19:05:09 -0600
1259
1260   From Charles Crain:
1261
1262   - Added the Install(), BuildDir(), and Export() methods.
1263
1264   - Fix the -C option by delaying setting the top of the FS tree.
1265
1266   - Avoid putting the directory path on the libraries in the LIBS
1267     construction variable.
1268
1269   - Added a GetBuildPath() method to return the full path to the
1270     Node for a specified string.
1271
1272   - Fixed variable substitution in CPPPATH and LIBPATH.
1273
1274   From Steven Knight:
1275
1276   - Fixed the version comment in the scons.bat (the UNIX geek used
1277     # instead of @rem).
1278
1279   - Fix to setup.py so it doesn't require a sys.argv[1] argument.
1280
1281   - Provide make-like warning message for "command not found" and
1282     similar errors.
1283
1284   - Added an EXAMPLES section to the man page.
1285
1286   - Make Default() targets properly relative to their SConscript
1287     file's subdirectory.
1288
1289   From Anthony Roach:
1290
1291   - Documented CXXFLAGS, CXXCOM, and CPPPATH.
1292
1293   - Fixed SCONS_LIB_DIR to work as documented.
1294
1295   - Made Default() accept Nodes as arguments.
1296
1297   - Changed Export() to make it easier to use.
1298   
1299   - Added the Import() and Return() methods.
1300
1301
1302
1303 RELEASE 0.01 - Thu Dec 13 19:25:23 CST 2001
1304
1305 A brief overview of important functionality available in release 0.01:
1306
1307   - C and C++ compilation on POSIX and Windows NT.
1308
1309   - Automatic scanning of C/C++ source files for #include dependencies.
1310
1311   - Support for building libraries; setting construction variables
1312     allows creation of shared libraries.
1313
1314   - Library and C preprocessor search paths.
1315
1316   - File changes detected using MD5 signatures.
1317
1318   - User-definable Builder objects for building files.
1319
1320   - User-definable Scanner objects for scanning for dependencies.
1321
1322   - Parallel build (-j) support.
1323
1324   - Dependency cycles detected.
1325
1326   - Linux packages available in RPM and Debian format.
1327
1328   - Windows installer available.