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